• SpringMVC_配置和注解--跟海涛学SpringMVC(和自己在项目中的实际使用的对比)


    Spring2.5 之前,我们都是通过实现Controller 接口或其实现来定义我们的处理器类,就像前面介绍的

    这里介绍的是Spring3.1的新特性,虽然现在我用的是spring4.2.6,不过基本的用法差距不大,也可以参考一下

     

    @Controller:用于标识是处理器类;

    @RequestMapping:请求到处理器功能方法的映射规则;

    @RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定;

    @ModelAttribute:请求参数到命令对象的绑定;

    @SessionAttributes:用于声明session 级别存储的属性,放置在处理器类上,通常列出模型属性(如

    @ModelAttribute)对应的名称,则这些属性会透明的保存到session 中;

    @InitBinder:自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类

     

    @CookieValue:cookie 数据到处理器功能处理方法的方法参数上的绑定;

    @RequestHeader:请求头(header)数据到处理器功能处理方法的方法参数上的绑定;

    @RequestBody:请求的body体的绑定(通过HttpMessageConverter 进行类型转换);

    @ResponseBody:处理器功能处理方法的返回值作为响应体(通过HttpMessageConverter进行类型转换);

    @ResponseStatus:定义处理器功能处理方法/异常处理器返回的状态码和原因;

    @ExceptionHandler:注解式声明异常处理器;

    @PathVariable:请求URI 中的模板变量部分到处理器功能处理方法的方法参数上的绑定,从而支持RESTful 架构风

    格的URI;

     

    <mvc:annotation-driven>:

    自动注册基于注解风格的处理器需要的DefaultAnnotationHandlerMapping、AnnotationMethodHandlerAdapter

    支持 Spring3的ConversionService 自动注册

    支持 JSR-303验证框架的自动探测并注册(只需把JSR-303实现放置到classpath)

    自动注册相应的HttpMessageConverter(用于支持@RequestBody 和 @ResponseBody)(如XML输入输出转换器

    (只需将JAXP实现放置到classpath)、JSON 输入输出转换器(只需将Jackson 实现放置到classpath))等。

    <mvc:interceptors>:注册自定义的处理器拦截器;

    <mvc:view-controller>:和ParameterizableViewController 类似,收到相应请求后直接选择相应的视图;

    <mvc:resources>:逻辑静态资源路径到物理静态资源路径的支持;

    <mvc:default-servlet-handler>当在web.xml 中DispatcherServlet使用<url-pattern>/</url-pattern> 映射时,能映射静

    态资源(当Spring Web MVC框架没有处理请求对应的控制器时(如一些静态资源),转交给默认的Servlet来响应静态

    文件,否则报404 找不到资源错误,)。

     

    Flash 属性和 RedirectAttribute:通过FlashMap 存储一个请求的输出,当进入另一个请求时作为该请求的输入,

    典型场景如重定向(POST-REDIRECT-GET 模式,1、POST 时将下一次需要的数据放在FlashMap;2、重定向;3、通过

    GET 访问重定向的地址,此时FlashMap 会把1 放到FlashMap 的数据取出放到请求中,并从FlashMap 中删除;从而支

    持在两次请求之间保存数据并防止了重复表单提交)。

    Spring Web MVC 提供FlashMapManager 用于管理FlashMap,默认使用SessionFlashMapManager,即数据默认存储

    在session

     

    @Validated:JSR-303 的javax.validation.Valid 一种变体(非JSR-303 规范定义的,而是Spring 自定义的),用于

    提供对Spring 的验证器(org.springframework.validation.Validator)支持,需要Hibernate Validator 4.2及更

    高版本支持;

    @RequestPart : 提供对“ multipart/form-data ” 请求的全面支持, 支持Servlet 3.0 文件上传

    (javax.servlet.http.Part)、支持内容的HttpMessageConverter(即根据请求头的Content-Type,来判断内容区数

    据是什么类型,如JSON、XML,能自动转换为命令对象),比@RequestParam 更强大(只能对请求参数数据绑定,key-alue

    格式),而@RequestPart 支持如JSON、XML 内容区数据的绑定;详见本章的第°¡°¡°¡节

  • 相关阅读:
    laravel 单元测试 phpunit 运行报错 RuntimeException: No application encryption key has been specified 解决
    pace.js 自动加载进度条插件的简单使用教程
    git push 报错 ERROR: Permission to xxx.git denied to someuser
    Laravel 框架对于分表进行统计合并查询的思路
    解决tail命令提示“tail: inotify 资源耗尽,无法使用 inotify 机制,回归为 polling 机制”
    phpredis 报错 “Function Redis::setTimeout() is deprecated” 解决方法
    laravel 5.5.39 升级到 5.5.45 出现 cookie 序列化异常问题的解决
    vue.js 实战 todo list
    BootstrapVue 安装指南
    05js语法检查、js兼容性处理
  • 原文地址:https://www.cnblogs.com/lakeslove/p/SpringMVC.html
Copyright © 2020-2023  润新知