SpringMVC_[1]执行流程和常用注解

Posted 奔跑的路奇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC_[1]执行流程和常用注解相关的知识,希望对你有一定的参考价值。

SpringMVC_[1]执行流程和常用注解

执行流程

工作流程分析

springMvc的执行流程图如下:
在这里插入图片描述
SpringMVC请求执行过程概述:

  1. 客户端请求提交到DispatcherServlet
  2. 前端控制器直接将请求转给处理器映射器HandleMapping
  3. 处理器映射器HandleMapping会根据请求,找到负责处理该请求的处理器,并将其封装为处理器执行链HandlerExecutionChina后返回给前端控制器DispatcherServlet
  4. 前端控制器DispatcherServlet根据处理器执行链中的处理器,找到能够执行该处理器的处理器适配器HandlerAdaptor。
  5. 处理器适配器HandlerAdaptor调用执行处理器Controller。
  6. 处理器Controller将处理结果及要跳转的视图封装到一个对象 ModelAndView 中,并将其返回给处理器适配器HandlerAdaptor。
  7. 处理器适配器直接将结果返回给前端控制器DispatcherServlet。
  8. 前端控制器调用视图解析器,将 ModelAndView 中的视图名称封装为视图对象。
  9. 视图解析器ViewResolver将封装了的视图View对象返回给前端控制器DispatcherServlet
  10. 前端控制器DispatcherServlet调用视图对象,让其自己进行渲染,即进行数据填充,形成响应对象。
  11. 前端控制器响应浏览器。

组件说明

<!--    SpringMVC核心控制器-->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>                    
    </servlet>

  • DispatcherServle:t前端控制器,也称为中央控制器或者核心控制器。用户请求的入口控制器,DispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。SpringMVC框架提供的该核心控制器需要我们在web.xml文件中配置。
  • HandlerMapping:处理器映射器 ,HandlerMapping负责根据用户请求找到 Handler 即处理器Controller。
  • Handler:处理器,Handler 是继 DispatcherServlet 前端控制器的后端控制器,在DispatcherServlet 的控制下 Handler 对具体的用户请求进行处理。
  • HandlAdapter:处理器适配器,通过扩展处理器适配器,支持更多类型的处理器。
  • ViewResolver:视图解析器,ViewResolver 负责将处理结果生成 View 视图

常用注解

  • @RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。
	/**
	 * @RequestMapping:
	 *      value : 表示所有请求的公共部分
	 *      位置:放在类的上面
	 */

    /**
     *@RequestMapping : 请求映射
     *          属性:method,表示请求的方式。它的值是RequestMethod类枚举值
     *              例如表示 get请求方式,RequestMethod.GET
     *                      post请求方式,RequestMethod.POST
     */
    //指定some.do 使用get请求方式
    @RequestMapping(value = "/some.do",method = RequestMethod.GET)
    

常用的提交方式:
在这里插入图片描述

  • @RequestBody:注解实现接收http请求的json数据,将json转换为java对象。
  • @ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。
  • @RequestParam:解决请求中参数名和形参名不一样的问题
    /**
     * (2)请求中参数名和处理器方法的形参名不一样
     * @RequestParam: 解决请求中参数名和形参名不一样的问题
     *        属性:value 请求中的参数名
     *             required 是一个boolean,默认是true
     *                true表示请求中必须包含此参数,没有会报错
     * 				  false表示请求中可以不存在该参数
     *       位置:在处理器方法的形参定义的前面
     */
    @RequestMapping(value = "/receiveParam.do")
    public ModelAndView receiveParam(@RequestParam(value = "name",required = false) String name,
                                     @RequestParam(value = "age",required = false) Integer age){
        System.out.println("doSome(),name="+name+" age="+age );

最后,如果有问题,希望指正,一起进步。

以上是关于SpringMVC_[1]执行流程和常用注解的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC常用注解

SpringMVC -- 组件解析(SpringMVC执行流程(图示文字描述)注解解析(@RequestMapping组件扫描的2种方式))

史上最全Spring面试题,(2020.5月整理___下篇)

springmvc:常用注解

springmvc 没有produces注释

SpringMVC的组件解析执行流程以及XML配置解析和