spring mvc 是基于 spring 的一个框架,实际上就是 spring 的一个模块,是专门用来做 web 开发的,使用springmvc会让开发更加简单,可是有些开发人员不太清楚springmvc怎么使用?下面来我们就来给大家讲解一下。
先在 idea 中通过 maven 创建一个 web 项目,创建完成后我们可以手动添加 src/main/java 和 src/main/resource 目录:
然后引入依赖,依赖配置文件 pom.xml 类似下面:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>maven_ee_test01</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.5.RELEASE</version> </dependency> </dependencies> </project>
在 maven 的 web 项目的 web.xml 配置文件中配置中央调度器。默认生成的 web.xml 配置文件跟下面不太一样,可以直接照着下面进行修改:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- SpringMVC的前端控制器 --> <servlet> <servlet-name>springmvcTest</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 可以自定义springmvc读取的配置文件的位置 --> <!-- <init-param>--> <!-- <param-name>contextConfigLocation</param-name>--> <!-- <param-value>/WEB-INF/xxx.xml</param-value> <!–指定配置文件的位置–>--> <!-- </init-param>--> <!-- 指定该servlet对象在tomcat启动时即创建。 load-on-startup:指定tomcat启动后创建对象的顺序,tomcat会根据各个servlet的该属性值按照顺序来创建各个servlet对象。它的值是大于等于0的整数,值越小创建时间越早。--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvcTest</servlet-name> <!-- 使用框架时,url-pattern一般来说有两种写法: 1)使用自定义扩展名:*.do、*.action、*.mvc等等,如<url-pattern>*.do</url-pattern> 2)直接使用斜杆:<url-pattern>/</url-pattern>,表示拦截所有请求 --> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
DispatcherServlet实际上就是个Servlet(它继承自HttpServlet基类),在被创建时,会执行该 servlet 的 init() 方法。在 DispatcherServlet 的初始化过程中,该框架会尝试拿到项目中的 WebContent/WEB-INF 目录文件下的名为 [servlet-name]-servlet.xml 的配置文件,并创建其中所定义的bean。(比如是上面的配置,则该配置文件将会是 webcontent/WEB-INF/springmvcTest-servlet.xml,springmvc 会从该配置文件中加载应用程序上下文)。当然,我们也可以通过 init-param 标签自定义配置文件的位置及名称,不使用默认的。
中央调度器 DispatcherServlet 负责创建 springmvc 容器 对象,读取 spring 的 xml 配置文件,创建文件中的 Controller 对象。并且负责接收用户的请求,分派给各个 Controller 对象。
然后我们需要在 webcontent(webapp)/WEB-INF 目录下创建一个 spring 配置文件,并在该文件中开启组件扫描。比如下面的 springmvcTest-servlet.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <!--开启组件扫描。base-package写包名,若要扫描多个包,可以用逗号隔开,或者直接写多个包共用的上级目录--> <context:component-scan base-package="controllerPackage"></context:component-scan> </beans>
然后需要创建控制器,通过控制器来处理请求。比如下面我们创建了一个控制器类,通过注解 @RequestMapping 来将URL映射到处理方法中,即 /test.do 请求将会由 doTest() 方法来处理:
package controllerPackage; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class ControllerTest01 { /** *创建方法来处理请求,在springmvc中是通过方法来处理请求的。方法是自定义的,有多种返回值,多种参数 * @RequestMapping:请求映射,作用是把请求地址和方法绑定在一起。属性的value可以是一个string,也可以是一个数组,不同方法间的值不能重复。 * @RequestMapping 可以放在方法上,也可以直接放在类上 */ @RequestMapping(value = "/test.do") public ModelAndView doTest() { //Spring MVC 通过 ModelAndView 对象把模型和视图结合在一起 ModelAndView modelView = new ModelAndView(); //添加数据,框架最后会把数据放到request的作用域当中,类似于 request.setAttribute() modelView.addObject("name", "张三"); modelView.addObject("age", "22"); //指定视图,指定视图的完整路径。框架会对视图执行forward操作,类似于request.getRequestDispatcher("/show.jsp").forward(); modelView.setViewName("/show.jsp"); return modelView; } }
在项目 src/main/webapp 目录下创建 show.jsp,用来接收上面处理 /test.do 过后添加的数据:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1>这里是show.jsp页面</h1> <h2>hello:${name} ---- ${age}</h2> </body> </html>
然后我们就可以通过访问 test.do 来进行测试了。启动 tomcat,添加项目,访问 test.do 请求。比如项目名为 springmvcProject,则访问路径为:http://localhost:8080/springmvcProject/test.do。最后可以看到结果如下:
这就是 springmvc的简单使用, springmvc容易理解,使用起来简单,能够让开发者减轻处理复杂问题的负担,促进项目完美开发!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。
推荐阅读: