Spring mvc系列四之 注解介绍

来源:互联网 发布:现货黄金源码 编辑:程序博客网 时间:2024/05/29 18:20

http://mylfd.iteye.com/blog/1888505

关于怎样在spring mvc中配置使用注解请看我上一篇文章:Spring mvc系列三之 开启注解,

首先用@Controller("userController")标志一个类为控制器,@Controller负责一个bean注册到spring上下文中,bean的ID默认是类名首字母小写,也可以自己定义,下面我显示的把名字定义为userController.

Java代码  收藏代码
  1. package gd.hz.springmvc.controller;  
  2.   
  3. import org.springframework.stereotype.Controller;  
  4.   
  5. @Controller("userController")  
  6. public class UserController {  
  7.    
  8. }  

 

@RequestMapping,用来定义访问的URL,可以定义在类上也可以定义在方法上.把它定义在类方法上,类下面的所有方法访问路径都要它之下.看下面的例子:

Java代码  收藏代码
  1. package gd.hz.springmvc.controller;  
  2.   
  3. import org.springframework.stereotype.Controller;  
  4.   
  5. import org.springframework.web.servlet.ModelAndView;  
  6. import org.springframework.web.bind.annotation.RequestMapping;  
  7.   
  8. @Controller("userController")  
  9. @RequestMapping("user")  
  10. public class UserController {  
  11.     //当有两个以上的配置时value不可以省略,url路径可以省去"/"  
  12.     @RequestMapping("addUser")  
  13.     public ModelAndView addUser()  
  14.     {  
  15.         String str = "Springmvc 您好啊!!--->addUser" ;  
  16.         return new ModelAndView("hello");  
  17.     }  
  18. }  

 我们在UserController 上使用了@RequestMapping("user"),在方法上使用了@RequestMapping("addUser")这样的话,我们访问这个方法的URL为:http://localhost/项目名称/user/addUser,并返回一个名为hello的视图

 

 下面是注解@RequestMapping的一些常用用法,其中当有配置有二个属性时,value不可省略.另外"result" , str ,是返回数据,我的下一章会介绍.

Java代码  收藏代码
  1. package gd.hz.springmvc.controller;  
  2.   
  3. import javax.servlet.http.HttpServletRequest;  
  4.   
  5. import org.springframework.stereotype.Controller;  
  6. import org.springframework.web.bind.annotation.PathVariable;  
  7. import org.springframework.web.bind.annotation.RequestMapping;  
  8. import org.springframework.web.bind.annotation.RequestMethod;  
  9. import org.springframework.web.bind.annotation.RequestParam;  
  10. import org.springframework.web.servlet.ModelAndView;  
  11.   
  12. @Controller("userController")  
  13. @RequestMapping("user")  
  14. public class UserController {  
  15.       
  16.     //method=RequestMethod.POST  
  17.     @RequestMapping(value="addUser/tow" , method=RequestMethod.GET)  
  18.     public ModelAndView addUser2()  
  19.     {  
  20.         String str = "Springmvc 您好啊!!--->addUser2" ;  
  21.         return new ModelAndView("hello" , "result" , str);  
  22.     }  
  23.       
  24.     //URL为user/addUser/thread  
  25.     @RequestMapping("addUser/thread")  
  26.     public ModelAndView addUser3()  
  27.     {  
  28.         String str = "Springmvc 您好啊!!--->addUser3" ;  
  29.         return new ModelAndView("hello" , "result" , str);  
  30.     }  
  31.       
  32.     //访问文件二级路径 URL为user/addUser/thread 返回定义目录下的test目录的Hello.jsp文件  
  33.     @RequestMapping("addUser/six")  
  34.     public String addUser6(HttpServletRequest request)  
  35.     {  
  36.         String str = "Springmvc 您好啊!!--->addUser6" ;  
  37.         request.setAttribute("result", str);  
  38.         return "test/hello" ;  
  39.     }  
  40. }  

 

 

 @RequestParam:

 required :参数是否必须,boolean类型,可选项,默认为true

 value: 传递的参数名称,String类型,可选项,如果有值,对应到设置方法的参数 
 defaultValue:String类型,参数没有传递时为参数默认指定的值

默认情况下,当从表单或者以GET传来的参数跟Controller中的方法中的参数名不一样时就要使用此注解:

Java代码  收藏代码
  1. @RequestMapping("/addUser/eight")    
  2.     public void addUser8(int id, @RequestParam("name") String username) {    
  3.         //这样做进行URL请求访问这个方法的时候,就会先从request中获取参数id的值赋给参数变量id,  
  4.         //从request中获取参数name的值赋给参数变量username    
  5.     }    

 

 

@PathVariable:可以利用请求路径传值,当指定名称跟变量名不一样时需要指定名字,如下.

Java代码  收藏代码
  1. @RequestMapping("addUser/{seven}")  
  2.     public String addUser7(@PathVariable("seven") String name , HttpServletRequest request)  
  3.     {  
  4.         request.setAttribute("result", name);  
  5.         return "test/hello" ;  
  6.     }  

  {seven}当url传来什么他就是什么,但是当接收它的变量名不一样时需要用@PathVariable指定.


原创粉丝点击