Spring annotation controller与requestmapping

使用@controller定义controllers
Spring mvc将特定url的请求分发到controller类来进行处理
在spring 3.0中,通过@controller标注即可将class定义为一个controller类。为使spring能找到定义为controller的bean,需要在spring-context配置文件中增加如下定义

Xml代码   收藏代码
  1. <context:component-scan base-package="net.zhepu.web" />  



使用@RequestMapping标注来关联url和controllers
  通过@RequestMapping标注,可以将特定的url和具体的controller类或controller类中的方法绑定。如

Java代码   收藏代码
  1. @Controller  
  2. @RequestMapping("/helloworld")  
  3. public class Helloworld {  
  4.   
  5.     @RequestMapping(method=RequestMethod.GET)  
  6.     public ModelAndView hello() {  
  7.         ModelAndView mv = new ModelAndView();  
  8.         mv.setViewName("helloworld");  
  9.         return mv;  
  10.     }  
  11. }  



将/hellowrold和 Hellowrold这个controller类绑定,而在hello()方法前的@RequestMapping(method=RequestMethod.GET)则将hello这个方法和/hellorworld.action的get请求绑定起来。

 

定义multiaction controllers
使用一个controller来处理多个action,称为multiaction controller。@RequestMapping标注并不要求一定放在class定义之前,而可以直接作为一个method level的标注来使用,当这样使用时,contorller类就变成了一个multiaction controller,例如

Java代码   收藏代码
  1. @Controller  
  2. public class MultiactionHelloworld {  
  3.   
  4.     @RequestMapping("/hello1")  
  5.     public ModelAndView hello1(){  
  6.         ModelAndView mv = new ModelAndView();  
  7.         mv.setViewName("helloworld");  
  8.         return mv;        
  9.     }  
  10.       
  11.     @RequestMapping("/hello2")  
  12.     public ModelAndView hello2(){  
  13.         ModelAndView mv = new ModelAndView();  
  14.         mv.setViewName("helloworld");  
  15.         return mv;        
  16.     }  



这里分别定义了两个方法hello1和hello2,对应的url为/hello1和/hello2

 

url template
@requestmapping参数中的url,除了常规的url外,也可以使用url template来定义形成类似REST请求的url。
例如

Java代码   收藏代码
  1.     @RequestMapping("/urltemplate/{username}")  
  2.     public ModelAndView test1(@PathVariable String username){  
  3.         ModelAndView mv = new ModelAndView();  
  4.         mv.addObject("userName", username);  
  5.         System.out.println(username);  
  6.         mv.setViewName("test002");  
  7.         return mv;        
  8.     }  
  9. <span style="white-space: normal;">  
  10. </span>  

以上通过@PathVariable将入参中的username和userid分别与请求url中的{username}和{userid}的值做绑定

@requestmapping的可选参数
 value
:表示需要匹配的url的格式。
 method:表示所需处理请求的http 协议(如get,post,put,delete等),可选值为RequestMethod这个enum的值。
 params:格式为”paramname=paramvalue” 或 “paramname!=paramvalue”。不带参数则表示paramvalue可以为任意值。
如params =  {"param1=1","param2!=2","param3"},表示对应的url必须包括param1,param2,param3三个参数,其中param1的值必须为1,param2的值不能为2,param3的值可以为任意值。
 headers:用来限定对应的reqeust请求的headers中必须包括的内容,例如
headers={"Connection=keep-alive"}, 表示请求头中的connection的值必须为keep-alive。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值