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 );

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值