java 报文配置spring_SpringMVC3注解学习之注解配置

请求路径映射表达式

@RequestMapping注解用于声明请求映射路径,除了标准的URL,还支持Ant风格(即?、*和**的字符)的和带{xxx}占位符的URL。如下所示

/usercreateUser

**代表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")publicStringdelete(@RequestParam("userId")StringuserId){//删除用户}

通过headers注解限定请求标头(报文头)参数

@RequestMapping(value="/show",headers="content-type=text/*")publicStringshow(@RequestParam("userId")StringuserId){//显示用户详情}

在上述两个例子中,params和headers分别对请求参数及报文头属性进行限定,它们支持简单的表达式,下面以params表达式为例说明,headers可以参照params进行理解之:

"userId"表示请求必须包含名为userId的请求参数

"!userId":表示请求不能包含名为userId的请求参数

"userId!=value1":表示请求包含名为userId的请求参数,但其值不能为value1

{"userId=value1","userName"}:请求必须包含名为userId和userName的两个请求参数,且param1参数的值必须为value1

通过注解绑定请求数据

绑定请求参数:

@RequestMapping(value="/rename")publicStringrename(@RequestParam("userName")StringuserName,@RequestParam("password")Stringpassword,@RequestParam("rename")Stringrename){//具体处理代码}

绑定Cookies参数

@RequestMapping(value="/cookies")publicStringcookies(@CookieValue("JSESSIONID")StringsessionId){//具体处理代码}

绑定请求标头(报文头)参数

@RequestMapping(value="/index")publicStringindex(@RequestHeader("Accept-Language")StringaccpetLanguage){//具体处理代码}

@RequestParam有以下三个参数:

value:参数名

required:是否必需,默认为true,表示请求中必须包含对应的参数名,如果不存在将抛出异常

defaultValue:默认参数名,设置该参数时,自动将required设为false。极少情况需要使用该参数,也不推荐使用该参数。

@RequestMapping(value="/getUser")publicStringgetUser(@RequestParam("userName")StringuserName,){//根据用户名获取用户信息}

上面所示代码的处理方法是不安全的:如果HTTP请求不包含"userName"参数,将会导致异常!因此,如果不能保证"userName"参数一定存在,为了安全起见,请使用:

@RequestParam(value="userName",required=false)

替代!

使用命令/表单对象绑定

所谓命令/表单对象并不需要实现任何接口,仅是一个拥有若干属性的POJO。Spring

MVC按:“HTTP请求参数名 = 命令/表单对象的属性名”的规则,自动绑定请求数据,支持“级联属性名”,自动进行基本类型数据转换。

示意图如下:

a4c26d1e5885305701be709a3d33442f.png

范例代码如下:

@RequestMapping(value={"/show","view"},method={RequestMethod.GET,RequestMethod.POST})publicStringshow(Useruser,Modelmodel){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中的参数绑定到操作方法的入参中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值