本文不做底层理论知识的汇总,仅将多数获取数据的方式做应用层面的汇总与验证。
其中,文件数据的获取,另文再写~
其中请求方式,仅测试了 GET 和 POST 方法;
请求头信息,仅测试了 multipart/form-data 与 application/x-www-form-urlencoded
@RequestMapping(value="/test/{id}/{name}", method= {RequestMethod.GET, RequestMethod.POST})
public String test(@PathVariable int id, @PathVariable(name="name") String userName){
}
说明:如果 @PathVariable 不使用 name 参数指定名称,则必须和路由中的一致,否则会抛出异常;所指定的参数值,也不可为空。
@RequestMapping(value="/test1", method= {RequestMethod.GET, RequestMethod.POST})
public String test1(HttpServletRequest request){
String param1 = request.getParameter("param1"), // url 参数
form1 = request.getParameter("form1"), //form-data
//x-www-form-urlencoded
encoded1 = request.getParameter("encoded1");
String[] params = request.getParameterValues("params"),
forms = request.getParameterValues("forms"),
encodeds = request.getParameterValues("encodeds");
}
说明:
@RequestMapping(value="/test2", method= {RequestMethod.GET, RequestMethod.POST})
public String test2(@RequestParam(name = "name", defaultValue="noname", required=true) String userName){
// 仅获取单个值
}
@RequestMapping(value="/test2_1", method= {RequestMethod.GET, RequestMethod.POST})
public String test2_1(@RequestParam Map<String, Object> params) {
// 获取集合
}
说明:@RequestParam 注解可以简单的获取参数值。但是当请求方法为 GET,请求头又为 x-www-form-urlencoded 时,获取不到值。
@RequestMapping(value="/test3", method= {RequestMethod.GET, RequestMethod.POST})
public String test3(@RequestBody String body) {
}
说明:@RequestBody 注解仅适用于 x-www-form-urlencoded 的请求方式,会将请求参数组合为 & 连接的字符串;如果请求方式为 POST 时,会将 URL 中的参数一起打包进字符串。
@RequestMapping(value="/test4", method= {RequestMethod.GET, RequestMethod.POST})
public String test4(@RequestHeader(name = "headername", required=false) String headervalue, @CookieValue(name = "cookiename", required=false) String cookievalue){
}
说明:可直接获取头信息和 cookie 信息。
@RequestMapping(value="/test5", method= {RequestMethod.GET, RequestMethod.POST})
public String test5(Person person){
// person.getId()
// person.getName()
}
说明:对象参数的形式,可以获取包含所有与参数类属性同名的值;例如:{‘name‘: ‘Gary‘}。但是当请求方法为 GET,请求头又为 x-www-form-urlencoded 时,获取不到值。
原文:https://www.cnblogs.com/bashenandi/p/java-controller-get-value.html