zoukankan      html  css  js  c++  java
  • springMVC总结

    MVC 全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写, 是一种用于设计创建 Web 应用程序表现层的模式。使用MVC优点:耦合性低,重用性高,更易维护。缺点:增加结构的复杂性。

    1. springMVC是基于MVC模式的web框架,主要职责就是处理前端用户请求。

    2. SpringMVC处理请求流程:

    1. 用户发送请求至前端控制器DispatcherServlet
    2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。
    3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
    4. DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
    5. HandlerAdapter执行处理器(handler,也叫后端控制器)。
    6. Controller执行完成返回ModelAndView
    7. HandlerAdapter将handler执行结果ModelAndView返回给DispatcherServlet
    8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器
    9. ViewReslover解析后返回具体View对象
    10. DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
    11. DispatcherServlet响应用户

    3. 注解映射器和适配器

    1、注解方式的映射器和适配器在3.1版本前后是不一样的,主讲3.1之后。

    2、注解方式的处理器映射器和处理器适配器必须配对使用。

     

    RequestMappingHandlerMapping:注解式处理器映射器,对类中标记@ResquestMapping的方法进行映射,根据ResquestMapping定义的url匹配ResquestMapping标记的方法,匹配成功返回HandlerMethod对象给前端控制器,HandlerMethod对象中封装url对应的方法Method。 

     RequestMappingHandlerAdapter:注解式处理器适配器,对标记@ResquestMapping的方法进行适配。

    springmvc.xml配置文件中使用<mvc:annotation-driven/>标签替代bean标签配置的注解处理器和适配器

     4. 参数绑定

    客户端通过http请求发送的参数,默认是key/value格式(http://XXXXX?id=1&type=301)的字符串

    springmvc的参数绑定组件,就是将请求参数串中的value值进行类型转换,然后将转换后的值赋值给controller类中方法的形参,这个过程就是参数绑定

     默认支持的参数类型:controller方法形参中可以随时添加如下类型的参数,处理适配器会自动识别并进行赋值

    1. HttpServletRequest

    通过request对象获取请求信息

    1. HttpServletResponse

    通过response处理响应信息

    1. HttpSession

    通过session对象得到session中存放的对象

    1. Model/ModelMap

    ModelMap是Model接口的实现类,通过Model或ModelMap向页面传递数据,相当于Request的作用

    在springmvc中,对于java简单类型的参数,推荐的参数绑定方式有两种:

    1. 直接绑定 : 

      如果http请求的key的名称和controller方法的形参名称一致,就能直接绑定成功。

    2. 注解绑定

    如果http请求参数的key和controller方法的形参名称不一致,则需要使用@RequestParam注解才能将请求参数绑定成功。

    @RequestParam(value = "itemid", required = true, defaultValue = "2")

    绑定POJO类型

    如果提交的参数很多,或者提交的表单中的内容很多的时候可以使用pojo接收数据。要求pojo对象中的属性名和表单中input的name属性一致

     

  • 相关阅读:
    【C++】资源管理
    【Shell脚本】逐行处理文本文件
    【算法题】rand5()产生rand7()
    【Shell脚本】字符串处理
    Apple iOS产品硬件参数. 不及格的程序员
    与iPhone的差距! 不及格的程序员
    iPhone游戏 Mr.Karoshi"过劳死"通关. 不及格的程序员
    XCode V4 发布了, 苹果的却是个变态. 不及格的程序员
    何时readonly 字段不是 readonly 的?结果出呼你想象!!! 不及格的程序员
    object file format unrecognized, invalid, or unsuitable Command 不及格的程序员
  • 原文地址:https://www.cnblogs.com/yintingting/p/8910927.html
Copyright © 2011-2022 走看看