SpringMVC的执行过程
-
1.用户浏览器发送请求到前端控制器DispatcherServlet.
-
2.DusoatcgerServlet收到请求调用HandlerMapping处理器。
-
3.处理器映射找到具体的处理器(可以根据xml配置,注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)并一路返回DispatcherServlet.
-
4.Dis[atcherServlet调用HandlerAdapter处理器适配器。
-
5.HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
-
6.Controller执行完成返回ModelAndView.
-
7.HandlerAdapter将controller执行结果ModelAndView返回给DispatcherSerlve.
-
8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
-
9.ViewReslover解析后返回具体View.
-
10.DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。DispatcherServlet响应用户。
使用@RequestMapping
-
作用:用于请求URL和请求处理 请求方法之间的对应关系
-
位置:
- 类上,请求URL的第一级访问目录。此处不写的还,就相当于应用的根目录
- 方法上,请求URL的第二级访问目录,与类上的使用@ReqquestMapping标注的以及目录一起组成访问虚拟路径
使用步骤分为五步
- (1)导入 SpringMVC相关坐标
- (2)配置SpringMVC核心控制器DispathcerServlet
- (3)创建java类和视图页面
- (4)使用注解配置java类中业务方法的映射地址
- (5)配置SpringMVC核心文件Spring-MVC.xml
1.导入SpringMVC相关坐标
在项目pom.xml文件下导入spring-webmvc包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
在复制上面导入jar包代码后,如果报红了
就在项目最左侧点开Maven,选择你的当前项目,点击左上角的重新加载项目。就会重新加载依赖项,并且下载补充依赖
2.配置SpringMVC核心控制器DispathcerServlet
SpringMVC的核心就是DispatcherServlet,DispatcherServlet实质也是一个HttpServlet。DispatcherSevlet负责将请求分发,所有的请求都有经过它来统一分发。
前端控制器DispatcherServlet写在web.xml文件中
<!--配置SpringMVC的前端控制器-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
3.创建Controller类和视图页面
1.创建视图在web下新建一个jsp视图右键web—>新建—>jsp/jspx,我新建了success.jsp
里面写一些显示在网页上的东西就行
2.创建Controller并第四步使用注解配置UserController类中业务方法的映射地址
这里我在com.controller下创建了一个UserController的java类
使用@RequestMapping映射一个虚拟地址"/quick"
//请求映射
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class UserController {
@RequestMapping("/quick")
public String save(){
//验证是否执行到这控制器(执行到会打印一句话到控制台)
System.out.println("Controller save running....");
return "success.jsp";
}
5.配置SpringMVC核心文件Spring-MVC.xml
首先在text下资源测试文件夹resources中创建Spring-MVC.xml文件,新建右键资源文件resources—>新建—>XML配置文件—>Spring配置
然后配置组件扫描器
在配置组件扫描器时需要使用context:component-scan标签,而这个标签在context命名空间下,所以需要导入一下在xmlns:xsi下面添加一个xmls:context,再到xsi:schenLocation中添加context的地址(下面代码直接复制)
<?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 http://www.springframework.org/schema/context/spring-context.xsd">
<!--Controller的组件扫描-->
<!--这里base-package中将地址改成你的UserController地址-->
<context:component-scan base-package="com.controller">
<!--扫描controller包下的Controller注解-->
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
</beans>
最后回到web.xml,前端控制器中将请求分发给spring-mvc.xml
在标签下面添加以下代码,将请求给到spring-mvc.xml去执行
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
运行
在网页地址中输入quick映射地址,跳转到success.jsp
@RequestMapping的一些常用参数
@Controller
public class UserController {
//请求映射
//以下method指定GET提交请求(如果不是GET提交汇报405错误)
//以下parame表示访问地址必须携带参数"username"(否则报400错误)
@RequestMapping(value = "/quick",method = RequestMethod.GET,params = {"username"})
public String save(){
System.out.println("Controller save running....");
//前面加一个/,表示在wab目录下去找success.jsp
//加上redirect表示重定向url地址的前缀,forward转发地址前缀
return"redirect:/success.jsp";
}
}