HandlerMapping: 处理器映射器 HandlerAdapter: 处理器适配器 ViewResolver: 视图解析器 DispatcherServlet: 前端控制器 Handler: 处理器 View: 视图

 

SpringMVC的执行流程

1、用户发送请求至前端控制器DispatcherServlet

2、DispatchServlet收到请求调用HandlerMapping处理器映射器

3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet

4、DispatcherServlet调用HandlerAdapter处理器适配器

5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)

6、Controller执行完成返回ModelAndView

7、HandelerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet

8、DispatcherServ将ModelAndView传给ViewResolver视图解析器

9、ViewResolver解析后返回具体View

10、DispatcherServl根据View进行渲染视图(即将模型数据填充至视图中)。DispatcherServlet响应用户

 

 

SpringMVC的注解

 

@Controller: 是把当前类放到Spring容器中

 

@RequestMapping: 用于地址映射,将我们请求的地址,映射到具体的方法上。用于建立请求URL和处理请求方法之间的对应关系 使用的位置: (1)类上,请求URL的第一级访问目录。此处不写的话,就相当于应用的根目录 (2)方法上,请求URL的第二级访问目录,与类上的使用@ReqquestMapping标注的一级目录一起组成访问路径

 

@RequestMapping: 用于地址映射,参数如下

  1. value: 用于指定请求的URL。它和path属性的作用是一样的
  2. method: 用于指定请求的方式
  3. params: 用于指定限制请求参数的条件。它支持简单的表达式。要求请求参数的key和value必须和配置的一模一样 (1)例如: params = {"accountName"},表示请求参数必须要有accountName词才能访问 (2)例如: params = {"moeny!100"},表示请求参数的money不能是100

 

SpringMVC组件扫描

 

1、mvc命名空间的引入

 

2、组件扫描 SpringMVC基于Spring容器,所以在进行SpringMVC操作时,需要将Controller存储到Spring容器中,如果使用@Controller注解标注的话, 就需要使用<context:component-scan base-package="com.huanf.controller"/>进行组件扫描

 

 

SpringMVC的XML配置解析 -- 资源解析器

 

视图解析器 SpringMVC有默认组件配置,默认组件都是DispatcherServlet.properties配置文件中配置的,该配置文件的地址 是org.springframework.web.servlet.viewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver, 该文件中配置了默认的视图解析器。如果我们要修改视图解析器的话,在spring-mvc中写入如下:

 

此时,UserController类只需要写如下: