SpringMVC(十九):获取请求参数的几种方式

star2017 1年前 ⋅ 424 阅读

  SpringMVC获取请求参数可以有多种方式实现,对请求方式上也有些差异,现做下总结。

  从前端(浏览器)发送请求到后端基本脱离不了POST,GET两种方式,其它方式在应用中几乎绝迹,不参与分析。SpringMVC获取这两种请求的参数有多种方式。

请求地址

统一定义请求方式和参数

  1. GET请求:http://localhost/sys/sysUserLogin?account=admin&password=112233
  2. POST请求`:http://localhost/sys/sysUserLogin,参数是{"name":"admin","password":"112233"}
  3. GETRestful风格请求:http://localhost/sys/sysUserLogin/admin/1122331

系统用户实体类:SysUser

public class SysUser {
    private String account;
    private String password;

    .....set/get方法.....

}

Controller方法接收参数

方法中定义形参接收

方法中的形参类型和形参名与请求的参数匹配,可以自动接收请求的参数。
GETPOST两种方式都支持。

@Controller
@RequestMapping("/sys")
public class SysUserController {

    @RequestMapping("/sysUserLogin")
    public void sysUserLogin(String account, String password) {
        System.out.println("account = " + account + "; password = " + password );
    }
}

方法中使用对象接收

方法中的对象属性与请求的参数匹配,可以将值自动绑定到对象对应属性上。
GETPOST两种方式都支持。

@Controller
@RequestMapping("/sys")
public class SysUserController {

    @RequestMapping("/sysUserLogin")
    public void sysUserLogin(SysUser sysUser) {
        System.out.println("SysUser = " + sysUser);
    }
}

HttpServletRequest接收

通过HttpServletRequestgetParameter()方法从request中取值。
GETPOST两种方式都支持。

@Controller
@RequestMapping("/sys")
public class SysUserController {

    @RequestMapping("/sysUserLogin")
    public void sysUserLogin(HttpServletRequest req) {
        String account = (String) req.getParameter("account");
        String password = (String) req.getParameter("password");
        System.out.println("account = " + account + "; password = " + password );
    }
}

@PathVariable绑定

@PathVariable注解可以把路径中的参数绑定到方法中的形参上。
请求链接:http://localhost/sys/sysUserLogin/admin/1122331
只支持GET方式。

@Controller
@RequestMapping("/sys")
public class SysUserController {

    @RequestMapping("/sysUserLogin/{account}/{password}")
    public void sysUserLogin(@PathVariable String account, @PathVariable String password) {
        System.out.println("account = " + account + "; password = " + password );
    }
}

@ModelAttribute绑定

@ModelAttribute注解可作用在方法上,也可作用在方法形参上。
GETPOST两种方式都支持。

  1. 把请求参数绑定在形参上

    //绑定形参
    @Controller
    @RequestMapping("/sys")
    public class SysUserController {
    
        @RequestMapping("/sysUserLogin")
        public void sysUserLogin(
                @ModelAttribute("account") String account, 
                @ModelAttribute("password") String password) {
            System.out.println("account = " + account + "; password = " + password);
        }
    }
    
  2. 把请求参数绑定用户实体类属性上。

     //绑定用户实体类
     @Controller
     @RequestMapping("/sys")
     public class SysUserController {
    
         @RequestMapping("/sysUserLogin")
         public void sysUserLogin(@ModelAttribute SysUser sysUser,
                 HttpServletRequest req) {
             System.out.println("请求方式:" + req.getMethod() + "; sysUser = " + sysUser);
         }
     }
    

参考:SpringMVC之@ModelAttribute注解的使用

@RequestParam绑定

@RequestParam注解可以把请求参数绑定在方法形参上。
GETPOST两种方式都支持。

@Controller
@RequestMapping("/sys")
public class SysUserController {

    @RequestMapping("/sysUserLogin")
    public void sysUserLogin(
            @RequestParam("account") String account,
            @RequestParam("password") String password) {
        System.out.println("account = " + account + "; password = " + password);
    }
}
更多内容请访问:IT源点

全部评论: 0

    我有话说: