Spring MVC核心类和注解
Spring MVC的工作流程(灵活性强,易于与其他框架整合)
- 用户通过浏览器向服务器发送请求,请求被Spring MVC的前端控制器DispatcherServlet所拦截
- DispatcherServlet拦截到请求后,会调用HanderMapping处理器映射器
- 处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet
- DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理器适配器)
- HandlerAdapter会调用并执行Handler(处理器),这里的处理器指的就是程序中编写的Controller类,也被称之为后端控制器
- Controller执行完成后,会返回一个ModelAndView对象,该对象中会包含视图名或包含模型和视图名
- HandlerAdapter将ModelAndView对象返回给DispatcherServlet
- DispatcherServlet会根据ModelAndView对象选择一个合适的ViewReslover(试图解析器)
- ViewReslover解析后,会向DispatcherServlet中返回具体的View(视图)
- DispatcherServlet对View进行渲染(即将模型数据填充至视图中)
- 视图渲染结果返回给客户端浏览器显示
DIspatcherServlet介绍
在程序中充当着前端控制器的角色
配置在项目的web.xml文件中
<servlet>
<servlet-name>ps-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-*.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ps-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
@Controller
加上该注解,不需要再实现Controller接口
@RequestMapping(所有属性均是可选的)
用来映射一个请求或方法
常用属性:
- name: 为映射地址指定别名
- value: 用于映射一个请求和一个方法
- method: 指定该方法用于处理哪种请求.(支持多个请求,写成{}的形式)
- params: 用于指定Request中必须包含某些参数的值.
- headers: 用于指定Request中必须包含某些header的值
- consumes: 用于指定处理请求的提交内容类型(Content-type)
- produces: 用于指定返回的内容类型
组合注解
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
ViewResolver(视图解析器)
- 为跳转路径添加前缀和后缀
- 视图解析器的作用是只对Controller类中每个函数返回值那里的String类型前后加路径,而不对@RequestMapping处加路径,对@RequestMapping处无影响
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="前缀"/>
<property name="suffix" value="后缀"/>
</bean>