Spring MVC 笔记之:工作流程

2017-09-03  本文已影响86人  LeonXtp

遇到过的问题

总结知识点

我个人了解一样东西习惯先从大概上搞清楚它是怎么回事,它的体系结构是怎样的,它的运作流程是怎样的入手。不弄清楚这些总感觉前后左右无法产生联系,知识点总是孤立的,总有一种此路不通的感觉,强迫症了。Orz...
因此先将Spring MVC的工作流程梳理了一下,以下仅是一个刚学习者的的个人的初步理解,部分内容可能存在出于理清、归类的需要而产生的个人猜测,待我理解更深入了再来更新此文章,希望在此之前没人看到,没人看到,哈哈。。
如有错误欢迎指出,非常感谢。


Spring MVC概貌:
Sping MVC概览

其中1 、2、3、4按照次序执行。下面将依据这张图,举例梳理一次最简单的请求的大概流程


HTTP Request
 <servlet-mapping>
      <servlet-name>HelloWeb</servlet-name>
      <url-pattern>*.jsp</url-pattern>
 </servlet-mapping>
<servlet>
      <servlet-name>HelloWeb</servlet-name>
      <servlet-class>
         org.springframework.web.servlet.DispatcherServlet
      </servlet-class>
      <load-on-startup>1</load-on-startup>
</servlet>

DispatcherServlet

下面的四个工作流程都归DispatcherServlet来调度


1、HandlerMapping

HandlerMapping开始工作:根据映射配置找到dispatcher

@Controller
@RequestMapping("/hello")
public class HelloController{
 
   @RequestMapping(method = RequestMethod.GET)
   public String printHello(ModelMap model) {
      model.addAttribute("message", "Hello Spring MVC Framework!");
      return "hello";
   }

}

2、Controller

到这一步,Controller开始工作了,可以看到类名上加了 @Controller注解,以及一个@RequestMapping注解,这个注解表明,所有的/hello请求都在这里处理

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/WEB-INF/jsp/" />
      <property name="suffix" value=".jsp" />
</bean>

3、ViewResolver

下面ViewResolver开始工作

<html>
   <head>
   <title>Hello Spring MVC</title>
   </head>
   <body>
   <h2>${message}</h2>
   </body>
</html>

4、View

View开始工作了:创建JSP页面,并将之前Spring在Controller中传递给hello()方法的参数message取出来,传递到页面的${message}中。


HTTP Response

DispatcherServlet将渲染好的View返回给浏览器


至此,一次请求-响应完成。


Reference:
Spring - MVC Framework Overview

上一篇 下一篇

猜你喜欢

热点阅读