原创文章,转载请注明出处
本文地址:http://www.yshjava.cn/post/430.html
Spring MVC3的注解灵活强大,支持完全注解驱动,当放弃配置文件而完全采用注解配置时,你会被代码的简洁性深深吸引,这也是作者独立出一个篇幅来介绍其在Spring MVC3中的使用方法的根本原因。本文基于《Spring3_MVC注解教程》学习、总结而来,将从HTTP请求地址映射和通过注解绑定请求数据两个方面来介绍如何使用注解配置MVC,在此感谢作者的无私奉献,同时欢迎各位指点不妥之处。
HTTP请求地址映射
HTTP请求映射原理
Spring MVC进行映射的依据
请求路径映射表达式
@RequestMapping注解用于声明请求映射路径,除了标准的URL,还支持Ant风格(即?、*和**的字符)的和带{xxx}占位符的URL。如下所示
/user/*/createUser
*号代表一层任意内容的目录,匹配/user/aaa/createUser、/user/bbb/createUser等URL
/user/**/createUser
**代表0到多层任意内容的目录,匹配/user/createUser、/user/aaa/bbb/createUser等URL
/user/createUser??
??代表两个任意字符(特殊字符需要转码,转码后作为一个字符,如空格,转码为%20仍认为是一个字符,?的数量即为字符的数量),匹配/user/createUseraa、/user/createUserbb等URL
/user/{userId}
{userId}代表一个字符串或数字的变量,匹配user/123、user/abc等URL
/user/**/{userId}
匹配user/aaa/bbb/123、user/aaa/456等URL
company/{companyId}/user/{userId}/detail
匹配company/123/user/456/detail等的URL
@RequestMapping的用法比较灵活,有如下几种仅供参考:
- @RequestMapping(value="/delete")映射一个路径,且不限制HTTP请求方式
- @RequestMapping(value="/delete", method = RequestMethod.GET)映射一个路径,且只允许通过Get方式请求
- @RequestMapping(value={"/delete", "/del"}, method = {RequestMethod.GET, RequestMethod.POST})映射多个路径,且只允许通过Get方式请求
- @RequestMapping("/delete")映射一个路径,且不限制HTTP请求方式
- @RequestMapping({"/delete", "/del"})映射多个路径,且不限制HTTP请求方式
- @RequestMapping(value="/delete", method = {RequestMethod.GET, RequestMethod.POST})映射多个路径,且只允许通过Get或POST方式请求
对于@RequestMapping来说,除了上述通过value限定HTTP请求路径、通过method限定HTTP请求方式外,还可以:
通过params注解限定请求参数
@RequestMapping(value="/delete", params="userId") public String delete(@RequestParam("userId") String userId){ //删除用户 }
通过headers注解限定请求标头(报文头)参数
@RequestMapping(value="/show",headers="content-type=text/*") public String show(@RequestParam("userId") String userId){ //显示用户详情 }
在上述两个例子中,params和headers分别对请求参数及报文头属性进行限定,它们支持简单的表达式,下面以params表达式为例说明,headers可以参照params进行理解之:
- "userId"表示请求必须包含名为userId的请求参数
- "!userId":表示请求不能包含名为userId的请求参数
- "userId!=value1":表示请求包含名为userId的请求参数,但其值不能为value1
- {"userId=value1","userName"}:请求必须包含名为userId和userName的两个请求参数,且param1参数的值必须为value1
通过注解绑定请求数据
绑定请求参数:
@RequestMapping(value="/rename") public String rename(@RequestParam("userName") String userName, @RequestParam("password") String password, @RequestParam("rename") String rename){ //具体处理代码 }
绑定Cookies参数
@RequestMapping(value="/cookies") public String cookies(@CookieValue("JSESSIONID") String sessionId){ //具体处理代码 }
绑定请求标头(报文头)参数
@RequestMapping(value="/index") public String index(@RequestHeader("Accept-Language") String accpetLanguage){ //具体处理代码 }
@RequestParam有以下三个参数:
value:参数名
required:是否必需,默认为true,表示请求中必须包含对应的参数名,如果不存在将抛出异常
defaultValue:默认参数名,设置该参数时,自动将required设为false。极少情况需要使用该参数,也不推荐使用该参数。
@RequestMapping(value="/getUser") public String getUser(@RequestParam("userName") String userName,){ //根据用户名获取用户信息 }
上面所示代码的处理方法是不安全的:如果HTTP请求不包含"userName"参数,将会导致异常!因此,如果不能保证"userName"参数一定存在,为了安全起见,请使用:
@RequestParam(value = "userName", required = false)
替代!
使用命令/表单对象绑定
所谓命令/表单对象并不需要实现任何接口,仅是一个拥有若干属性的POJO。Spring MVC按:“HTTP请求参数名 = 命令/表单对象的属性名”的规则,自动绑定请求数据,支持“级联属性名”,自动进行基本类型数据转换。
示意图如下:
范例代码如下:
@RequestMapping(value = {"/show", "view"}, method = {RequestMethod.GET, RequestMethod.POST}) public String show(User user, Model model) { model.addAttribute("username", "springmvc"); model.addAttribute("password", "类型非常灵活"); return "show"; }
总结:
通过注解配置MVC非常的方便和快捷,个人尤其喜欢Controller和RequestMapping以及参数绑定。
在Spring MVC3中用的比较多的(同时也是个人认为比较好用的)注解有如下几个:
@Controller将一个JavaBean声明为一个Controller控制器
@RequestMapping将一个普通的JavaBean方法声明为一个请求映射路径
@RequestParam将请求报文中的参数绑定到操作方法的入参中
@PathVariable将URL中的占位符绑定到操作方法的入参中
@RequestHeader将请求标头中的参数绑定到操作方法的入参中
@CookieValue将cookies中的参数绑定到操作方法的入参中
掌握了他们几个的用法,基本上就能应付80%以上的需要了。
原创文章,转载请注明出处:http://www.yshjava.cn/post/431.html
相关推荐
主要介绍Spring MVC 的使用注解来配置的使用实例
这是一个Spring MVC实例 使用MVC注解配置
如果使用spring mvc 3.2+和servelt 3+容器(比如tomcat8),那么web.xml和applicationContext.xml都不是必须的,可使用基于注解的配置: 基于配置的集成例子源代码:
采用spring3.0 mvc 注解的方式,在页面显示helloworld
介绍 Spring 2.5 新增的 Sping MVC 注解功能,讲述如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置。
基于注解配置和使用spring AOP(spring mvc框架)
主要为大家详细介绍了Spring MVC完全注解方式配置web项目的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
《Spring MVC 3.0实战指南》,参考《Spring 3.x企业应用开发实战》。 内容简介: 1、Spring MVC框架简介 2、HTTP请求地址映射 3、HTTP请求数据的绑定 4、数据转换、格式化、校验 5、数据模型控制 6、视图及...
spring mvc注解方式整合jdbctemplate
使用Spring3 mvc 注解配置,学习良师。
简单的描述了spring mvc的配置示例,不包括注解方法和示例代码
此框架结合了springmvc,hibernate,mybatis3.1,log4j2. 其中mybatis和hibernate只要在spring的配置文件注释一下就可以选择其中一个了。 事务处理,日志设置。所有东西都设置好了。完全满足中小项目直接开发
使用spring-mvc 注解方式 注入 Controller 控制器 访问路径 精确到方法名 无需 多余注解 简单方便 附带实例
巨好的Spring MVC 3 实用文档 详细介绍Spring MVC 3的各种特性及配置方法 堪称Spring MVC 3的葵花宝典 免费赠送 还可以作为SpringMVC3的讲课指南
可用于分析spring mvc源码、spring mvc父子容器初始化流程、session和cookie机制、spring session等,也可以用于学习Java Web(servlet、filter、listener等)、spring源码等。 该项目使用servlet3.0规范,无web.xml...
后台全注解式的开发(除了必要的spring和hibernate的xml配置以外) 03. 后台通过自定义注解结合一个访问拦截器实现整个系统的权限控制 04. 系统前台采用全采用的Html+jQuery开发 05. 系统前台与后台的交互全部...
关于Spring注解的配置,使用都有详细的注释说明 spring的MVC架构这里不是很明显,但LZ稍作添加即可!
随着Annotation的流行,一些主流框架都加入了对Annotation的支持。使用Annotation能够简化很多配置工作...本文将 Spring 2.5 新增的 Sping MVC 注解功能,介绍如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置。
简单实用spring MVC教程 使新手一下就了解SPring MVC ,并且还有注解。和注解方面如何配置。
Spring MVC 注解模式下怎么样上传FTP图片,内容很简单,一看就会