@RequestParam注解
用于将指定的请求参数赋值给方法中的形参。
@RequestParam支持的属性:
示例一:
写法一:
- @RequestMapping(value=”/login”)
- public ModelAndView login(
- @RequestParam(“loginname”) String loginname,
- @RequestParam(“password”) String password
- ){
- return …;
- }
写法二:
- @RequestParam(value=”loginname”, required=true , defaultValue =”admin”)
实例:@RequestMapping和@RequestParam注解的使用:
(1)实体类:User
- // 域对象,实现序列化接口
- public class User implements Serializable{
-
- // 私有字段
- private String loginname;
- private String password;
- private String username;
-
- // 公共构造器
- public User() {
- super();
- }
- // set/get方法
- public String getLoginname() {
- return loginname;
- }
- public void setLoginname(String loginname) {
- this.loginname = loginname;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
-
- }
(2) UserController
- // Controller注解用于指示该类是一个控制器,可以同时处理多个请求动作
- @Controller
- // RequestMapping可以用来注释一个控制器类,此时,所有方法都将映射为相对于类级别的请求,
- // 表示该控制器处理所有的请求都被映射到 value属性所指示的路径下
- @RequestMapping(value = "/user")
- public class UserController {
-
- // 静态List<User>集合,此处代替数据库用来保存注册的用户信息
- private static List<User> userList;
-
- // UserController类的构造器,初始化List<User>集合
- public UserController() {
- super();
- userList = new ArrayList<User>();
- }
-
- // 静态的日志类LogFactory
- private static final Log logger = LogFactory.getLog(UserController.class);
-
- // 该方法映射的请求为http://localhost:8080/context/user/register,该方法支持GET请求
- @RequestMapping(value = "/register", method = RequestMethod.GET)
- public String registerForm() {
- logger.info("register GET方法被调用...");
- // 跳转到注册页面
- return "registerForm";
- }
-
- // 该方法映射的请求为http://localhost:8080/RequestMappingTest/user/register,该方法支持POST请求
- @RequestMapping(value = "/register", method = RequestMethod.POST)
- // 将请求中的loginname参数的值赋给loginname变量,password和username同样处理
- public String register(@RequestParam("loginname") String loginname, @RequestParam("password") String password,
- @RequestParam("username") String username) {
- logger.info("register POST方法被调用...");
- // 创建User对象
- User user = new User();
- user.setLoginname(loginname);
- user.setPassword(password);
- user.setUsername(username);
- // 模拟数据库存储User信息
- userList.add(user);
- // 跳转到登录页面
- return "loginForm";
- }
-
- // 该方法映射的请求为http://localhost:8080/RequestMappingTest/user/login
- @RequestMapping("/login")
- public String login(
- // 将请求中的loginname参数的值赋给loginname变量,password同样处理
- @RequestParam("loginname") String loginname, @RequestParam("password") String password, Model model) {
- logger.info("登录名:" + loginname + " 密码:" + password);
- // 到集合中查找用户是否存在,此处用来模拟数据库验证
- for (User user : userList) {
- if (user.getLoginname().equals(loginname) && user.getPassword().equals(password)) {
- model.addAttribute("user", user);
- return "welcome";
- }
- }
- return "loginForm";
- }
-
- }
注:类上面使用了@RequestMapping(value=”/user”)注解,表示所有请求都被映射到user路径下。
(3)loginForm.jsp
- <form action="login" method="post">
- <table>
- <tr>
- <td><label>登录名: </label></td>
- <td><input type="text" id="loginname" name="loginname" ></td>
- </tr>
- <tr>
- <td><label>密码: </label></td>
- <td><input type="password" id="password" name="password"></td>
- </tr>
- <tr>
- <td><input id="submit" type="submit" value="登录"></td>
- </tr>
- </table>
- </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