Spring MVC 工作流程详解

1.首先先来一张图

开始流程----------------》

1.用户发送请求到前端控制器,前端控制器会过滤用户的请求,例如我们在web.xml里面配置的内容;

<!-- 配置SpringMVC核心控制器 -->
  <servlet>
    <servlet-name>springMVC</servlet-name>

    //前端控制器是一个Servlet 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:config/spring-mvc.xml</param-value>
    </init-param>
    <!-- 启动加载一次 -->
    <load-on-startup>1</load-on-startup>
  </servlet>

<servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <!-- 此处可以可以配置成*.do -->
        <url-pattern>/</url-pattern>
</servlet-mapping>

这里表示过滤以/开始的所有请求

2-3.前端控制器会找到处理器映射器(HandlerMapping),简单来说就是它会去找你配置好@Controller ,然后把请求的url 与处理器绑定在一起

@Controller
public class UserCon {

@Autowired
private UserService userService;

@ResponseBody
@RequestMapping(method = RequestMethod.POST, value = "/login")
  public String login(HttpServletRequest request) {

  String phone = request.getParameter("phone");
  String password = request.getParameter("password");
  boolean b = userService.login(phone, password);
  if (b) {
    return "true";
  }
    return "false";

}

这里绑定url就是/login 这里吧login和login()方法绑定在一起,并且返回这个绑定后的Map集合

4-5 HandlerAdapter 会将Map集合中的Login()拿出来交给Handler处理器

5-6 Handler处理器处理代码最终会处理器会返回一个ModelAndView对象给HandlerAdapter(这里不返回视图,直接返回String)

7-8 通过HandlerAdapter将ModelAndView对象返回给前端控制器(DispatcherServlet)

9-10 前端控制器请求视图解析器(ViewResolver)去进行视图解析,根据逻辑视图名解析成真正的视图(jsp);

最终返回给用户,呈现在浏览器上

原文地址:https://www.cnblogs.com/ChromeT/p/9959644.html