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 内容区数据的绑定;详见本章的第°¡°¡°¡节

SpringMVC_配置和注解--跟海涛学SpringMVC(和自己在项目中的实际使用的对比)的更多相关文章

  1. SpringMVC_基本配置 --跟海涛学SpringMVC(和自己在项目中的实际使用的对比)

    ☆依赖jar包: 1.Spring框架jar 包: 为了简单,将spring-framework-3.1.1.RELEASE-with-docs.zip/dist/下的所有jar包拷贝到项目的WEB- ...

  2. SpringMVC_中文乱码的配置 --跟海涛学SpringMVC(和自己在项目中的实际使用的对比)

    spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码 <filte ...

  3. Maven 配置tomcat和findbug插件(在eclipse建立的项目中)

    tomcat插件 a)        tomcat的maven插件可以在tomcat的官网上寻找,这就是tomcat插件的plugin b)        将tomcat的plugin配置到项目的po ...

  4. SpringMVC_架构 --跟海涛学SpringMVC(学习笔记)

    重点: 1.工作流程及实现原理 2.配置及使用方法 3.共同函数 前言 1.2.模型: 1.2.1.此处模型使用JavaBean,可能造成JavaBean组件类很庞大,一般现在项目都是采用三层架构,而 ...

  5. 【转】跟着开涛学SpringMVC

    跟着开涛学SpringMVC 第一章源代码下载 博客分类: 跟开涛学SpringMVC 跟开涛学SpringMVC  源代码请到附件中下载. 其他下载: 跟着开涛学SpringMVC 第一章源代码下载 ...

  6. SpringMVC基础配置(通过注解配置,非xml配置)

    SpringMVC是什么,有多火,我这里就不再啰嗦了,SpringMVC比Struts2好用太多,我在学校的时候私下里两种都接触过,对比之后果断选择了SpringMVC,后来在做Android应用开发 ...

  7. 一起学SpringMVC之注解

    概述 SpringMVC不仅提供了Xml的配置方式,还提供了注解的方式来声明一个Controller,本文属于SpringMVC的入门级内容,仅供学习分享使用,如有不足之处,还请指正. SpringM ...

  8. 跟我学SpringMVC目录汇总贴、PDF下载、源码下载

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  9. 学SpringMVC收藏

     一个较完整的SpringMVC工程的配置 2014-01-22 17:17:25 标签:java spring springMVC 配置 springSecurity web.xml 原创作品,允许 ...

随机推荐

  1. js 异步编程方案

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise http://www. ...

  2. js实现复制粘贴功能

    在项目中使用到复制粘贴功能,虽然网上有很多大牛封装了很多的插件,但是还是想不去使用插件,就像自己来实现这个功能. 另一篇是禁止复制粘贴 前端er怎样操作剪切复制以及禁止复制+破解等 初步想法: 1. ...

  3. PHP 配置文件php.ini文件优化

    PHP 5.3.3 safe_mode = On #控制php中的函数执行比如system() 这个函数可以调用系统目录 比如 rm ,打开这个配置之后,同时把很多文件操作的函数进行了权限控制 saf ...

  4. (十六)python 3 全局变量局部变量

    全局变量和局部变量 全局变量与局部变量两者的本质区别就是在于作用域. 用通俗的话来理解的话,全局变量是在整个py文件中声明,全局范围内都可以访问.局部变量是在某个函数中声明的,只能在该函数中调用它,如 ...

  5. 小白菜OJ 1122 公牛母牛配(最大二分图匹配模板)

    题意: n只公牛和m只母牛,某些公牛和某些母牛互相喜欢.但最后一只公牛只能和一只母牛建立一对一匹配.要使得最后牛群匹配对数最大. 链接: http://caioj.cn/problem.php?id= ...

  6. 2018 GDCPC 省赛总结

    第二次参加省赛了,对比上年连STL都不会的acm入门者来说, 今年是接触acm的第二年. 首先要说的是今年的省赛比上年人数多了很多, 闭幕式200多支队伍坐满了整个礼堂还要站着不少人,所以今年的竞争其 ...

  7. 类函数调用与this指针

    1.定义多个对象是,C++编译器只分配一段空间存放公共的函数代码段,调用各个对象的函数时,都调用这个公共的代码片段. 每个对象的存储空间只是包含该对象数据成员所占的空间,函数代码存储在对象空间之外. ...

  8. linux 在当前目录下查找一个,或者多个文件

    1.find ./ -name "y*" 查找以y开头的文件. find ./ -name "*sql*" 查找包含 sql 的文件名 2.查找redis su ...

  9. Oracle中有关字符串操作的语法

    Oracle中有关字符串操作的语法 Oracle提供了丰富的字符串函数 lpad()函数 lpad()函数用于左补全字符串.在某些情况下,预期的字符串为固定长度,而且格式统一,此时可以考虑使用lpad ...

  10. javascript、jquery 、C#、sqlserveer、mysql、oracle中字符串截取的区别和用法

    下标从0开始 ,并且包括起始位 javascript 中字符串截取 : substring(Number start,Number end) var substr = "liuguangfa ...