springMVC注解参数绑定

@RequestParam注解

用于将指定的请求参数赋值给方法中的形参。

@RequestParam支持的属性:

示例一:

写法一:

[plain]  view plain  copy
  1. @RequestMapping(value=”/login”)  
  2.             public  ModelAndView  login(  
  3.         @RequestParam(“loginname”) String  loginname,  
  4.         @RequestParam(“password”) String  password  
  5. ){  
  6.                 return …;  
  7. }  

写法二:

[plain]  view plain  copy
  1. @RequestParam(value=”loginname”, required=true , defaultValue =”admin”)  


实例:@RequestMapping和@RequestParam注解的使用:

(1)实体类:User

[plain]  view plain  copy
  1. // 域对象,实现序列化接口  
  2. public class User implements Serializable{  
  3.       
  4.     // 私有字段  
  5.     private String loginname;  
  6.     private String password;  
  7.     private String username;  
  8.       
  9.     // 公共构造器  
  10.     public User() {  
  11.         super();  
  12.     }  
  13.     // set/get方法  
  14.     public String getLoginname() {  
  15.         return loginname;  
  16.     }  
  17.     public void setLoginname(String loginname) {  
  18.         this.loginname = loginname;  
  19.     }  
  20.     public String getPassword() {  
  21.         return password;  
  22.     }  
  23.     public void setPassword(String password) {  
  24.         this.password = password;  
  25.     }  
  26.     public String getUsername() {  
  27.         return username;  
  28.     }  
  29.     public void setUsername(String username) {  
  30.         this.username = username;  
  31.     }  
  32.       
  33. }  

(2)      UserController

[plain]  view plain  copy
  1. // Controller注解用于指示该类是一个控制器,可以同时处理多个请求动作  
  2. @Controller  
  3. // RequestMapping可以用来注释一个控制器类,此时,所有方法都将映射为相对于类级别的请求,  
  4. // 表示该控制器处理所有的请求都被映射到 value属性所指示的路径下  
  5. @RequestMapping(value = "/user")  
  6. public class UserController {  
  7.   
  8.     // 静态List<User>集合,此处代替数据库用来保存注册的用户信息  
  9.     private static List<User> userList;  
  10.   
  11.     // UserController类的构造器,初始化List<User>集合  
  12.     public UserController() {  
  13.         super();  
  14.         userList = new ArrayList<User>();  
  15.     }  
  16.   
  17.     // 静态的日志类LogFactory  
  18.     private static final Log logger = LogFactory.getLog(UserController.class);  
  19.   
  20.     // 该方法映射的请求为http://localhost:8080/context/user/register,该方法支持GET请求  
  21.     @RequestMapping(value = "/register", method = RequestMethod.GET)  
  22.     public String registerForm() {  
  23.         logger.info("register GET方法被调用...");  
  24.         // 跳转到注册页面  
  25.         return "registerForm";  
  26.     }  
  27.   
  28.     // 该方法映射的请求为http://localhost:8080/RequestMappingTest/user/register,该方法支持POST请求  
  29.     @RequestMapping(value = "/register", method = RequestMethod.POST)  
  30.     // 将请求中的loginname参数的值赋给loginname变量,password和username同样处理  
  31.     public String register(@RequestParam("loginname") String loginname, @RequestParam("password") String password,  
  32.             @RequestParam("username") String username) {  
  33.         logger.info("register POST方法被调用...");  
  34.         // 创建User对象  
  35.         User user = new User();  
  36.         user.setLoginname(loginname);  
  37.         user.setPassword(password);  
  38.         user.setUsername(username);  
  39.         // 模拟数据库存储User信息  
  40.         userList.add(user);  
  41.         // 跳转到登录页面  
  42.         return "loginForm";  
  43.     }  
  44.   
  45.     // 该方法映射的请求为http://localhost:8080/RequestMappingTest/user/login  
  46.     @RequestMapping("/login")  
  47.     public String login(  
  48.             // 将请求中的loginname参数的值赋给loginname变量,password同样处理  
  49.             @RequestParam("loginname") String loginname, @RequestParam("password") String password, Model model) {  
  50.         logger.info("登录名:" + loginname + " 密码:" + password);  
  51.         // 到集合中查找用户是否存在,此处用来模拟数据库验证  
  52.         for (User user : userList) {  
  53.             if (user.getLoginname().equals(loginname) && user.getPassword().equals(password)) {  
  54.                 model.addAttribute("user", user);  
  55.                 return "welcome";  
  56.             }  
  57.         }  
  58.         return "loginForm";  
  59.     }  
  60.   
  61. }  

              注:类上面使用了@RequestMapping(value=”/user”)注解,表示所有请求都被映射到user路径下。

(3)loginForm.jsp

[plain]  view plain  copy
  1. <form action="login" method="post">  
  2.      <table>  
  3.          <tr>  
  4.             <td><label>登录名: </label></td>  
  5.              <td><input type="text" id="loginname" name="loginname" ></td>  
  6.          </tr>  
  7.          <tr>  
  8.             <td><label>密码: </label></td>  
  9.              <td><input type="password" id="password" name="password"></td>  
  10.          </tr>  
  11.          <tr>  
  12.              <td><input id="submit" type="submit" value="登录"></td>  
  13.          </tr>  
  14.      </table>  
  15. </form>  

@PathVariable注解

          获得请求URL中的动态参数,只支持一个属性value,类型为String,表示绑定的名称,如果省略则默认绑定同名参数。

                  

                   @RequestMapping(value=”/pathVariableTest/{userId}”)

                   public  void  pathVariableTest(@PathVariable  Integer userId)

 

                   例如:http://localhost:8080/test/pathVariableTest/1

                   则自动将URL中模板变量{userId}绑定到通过@PathVariable注解的同名参数上,userId变量将被赋值为1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值