Spring MVC 笔记之:工作流程

遇到过的问题

  • mysql无法修改密码
  • sql文件执行里面的`被我写成了'()
  • 启动tomcat500
  • 其他照着教程做却无法运行起来的问题(试过了2次)
    • Java springmvc web项目,基于maven的hello world入门级项目使用IntelliJ IDEA 2017版本)
    • 开源中国的系列教程

总结知识点

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


Spring MVC概貌:
Spring MVC 笔记之:工作流程_第1张图片
Sping MVC概览

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


HTTP Request
  • 浏览器发起请求:http://localhost:8080/HelloWeb/hello.jsp
  • 根据web.xml配置,通过*.jsp找到HelloWeb这个servlet-mapping
 
      HelloWeb
      *.jsp
 
  • 然后请求被转发到DispatcherServlet:

      HelloWeb
      
         org.springframework.web.servlet.DispatcherServlet
      
      1


DispatcherServlet

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


1、HandlerMapping

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

  • servlet-mapping映射到的HelloWeb确定,下一步将要去同级目录下的HelloWeb-servlet.xml文件中去找更多的配置
  • DispatcherServlet查找到HelloWeb-servlet.xml中的,将开始从这个包下面去寻找加了Spring注解@Controller的类来处理这个请求
  • 找到了一个这样的类:
@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请求都在这里处理

  • 其中方法printHello()返回了字符串"hello",参数中的ModelMap是Spring框架传递过来给你加处理,以后是要被传递到view中用来渲染的。
  • Spring框架定位到HelloWeb-servlet.xml中的找到配置的ViewResolver

      
      


3、ViewResolver

下面ViewResolver开始工作

  • Controller中的处理结果中,方法返回了一个字符串"hello",根据规则,在"hello"上加前缀(prefix)"/WEB-INF/jsp/"和后缀(suffix)".jsp",拼成"/WEB-INF/jsp/hello.jsp"
  • 根据此路径,找到对应的jsp文件:

   
   Hello Spring MVC
   
   
   

${message}


4、View

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


HTTP Response

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


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


Reference:
Spring - MVC Framework Overview

你可能感兴趣的:(Spring MVC 笔记之:工作流程)