欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【SSM - SpringMVC篇】02 - SpringMVC执行流程详解,SpringMVC三大核心组件和使用,SpringMVC头文件模板

程序员文章站 2022-05-20 14:05:20
...

1. SpringMVC执行流

1.1 SpringMVC三大核心组件

  1. HandlerMapping处理器映射器:建立地址与方法的映射。

HandlerMapping负责根据用户请求url找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

  1. HandlerAdapter处理器适配器:根据地址调用方法。

Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。

  1. ViewResolver 视图解析器:处理ModelAndView数据和视图。

ViewResolver通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

1.2 SpringMVC执行流程图

【SSM - SpringMVC篇】02 - SpringMVC执行流程详解,SpringMVC三大核心组件和使用,SpringMVC头文件模板

1.3 Spring执行流程具体步骤(参考图)

  1. 用户发送请求至前端控制器DispatcherServlet。
  2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。
  3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
  4. DispatcherServlet通过HandlerAdapter处理器适配器调用处理器。
  5. 执行处理器(Controller层,也叫后端控制器)。
  6. Controller执行完成返回数据和视图(ModelAndView)。
  7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
  8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
  9. ViewReslover解析后返回具体的View视图(JSP / HTML)。
  10. DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
  11. DispatcherServlet响应用户,用户看到界面和数据。

2. 创建SpringMVC的三大组件

  SpringMVC中默认提供的三大组件有可能过时,我们可以手动设置这三大组件,一般只需要设置ViewResolver 视图解析器,设置它的前缀prefix和后缀suffix

2.1 手动一个个的设置处理器映射器(不推荐)

<!--方式1:手动一个个设置 -->
  <!-- 处理器映射器 -->
  <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

  <!--处理器适配器-->
  <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

2.2 模型驱动配置处理器映射器和处理器适配器,配置视图解析器【***】

<!--方式2:配置处理器映射器和处理器适配器 -->
  <!-- 在选择mvc标签时,一定要选择最后的路径是/mvc的选项 -->
  <!-- 这行配置可以替换掉上边的两行配置(一步步设置) -->
  <mvc:annotation-driven/>

  <!-- 配置视图解析器 -->
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<!-- 前缀和后缀 相当于 //WEB-INF/jsp/Xxx.jsp--><!--定义页面路径的前缀--><property name="prefix" value="/WEB-INF/jsp/"/><!--定义页面路径的后缀--><property name="suffix" value=".jsp"/>
  </bean>

2.3【注意】如果mvc标签无效,头文件模板。

<mvc:annotation-driven/>无效,可能是头文件不对,下面是一个参考。

<?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"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    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 
​    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">