使用注解@RequestParam指定要获取参数的名称
注:加上这个注解后客户端就必须要传入这个指定名称的参数,否则就会报错
@RequestMapping("/m1")
public String method1(@RequestParam("name")String username) {
return username;
}
2.当参数有多个时,可将它们封装成一个对象
注:对象的属性名必须与参数名称对应,即参数名为name,那么必须要有一个名为name的属性才能将它获取
@RequestMapping("/m2")
public User method2(User user) {
return user;
}
3.若传入的多个参数的名称相同,则使用数组或集合接收
@RequestMapping("/m3")
public String[] method3(@RequestParam("hobby")String[] hobbys) {
return hobbys;
}
@RequestMapping("/m4")
public ArrayList method4(@RequestParam("num")ArrayList nums) {
return nums;
}
二、Rest请求
虽然请求路径都为“/user”,但若请求方式不同,则执行的方法也不同
@GetMapping("/user")
public String method1() {
return "获取用户";
}
@PostMapping("/user")
public String method2() {
return "保存用户";
}
开启表单的隐藏方法
需先开启一个过滤器,这个过滤器会拦截所有请求,如果是post请求且“_method”参数的值为“delete”、“put”、“patch”时,过滤器会生成一个request的包装类并重写里面的getMethod方法,然后放行这个request的包装对象。
spring:
mvc:
hiddenmethod:
filter:
enabled: true
获取路径变量
@GetMapping("/p1/{v1}/p2/{v2}")
public String method5(@PathVariable("v1")String v1, @PathVariable("v2")String v2, String v3) {
return "v1 = " + v1 + "; v2 = " + v2 + "; v3 = " + v3;
}
路径变量可以与参数混合使用
获取cookie @GetMapping("/getcookie")
public void method6(HttpServletResponse res, HttpServletRequest req) throws IOException {
cookie cookie = new cookie("cookie1","hello");
res.addcookie(cookie);
res.sendRedirect(req.getContextPath() + "/getcookie2");
}
@GetMapping("/getcookie2")
public String method7(@cookievalue("cookie1")String val) {
// 获取cookie的值
return val;
}
@GetMapping("/getcookie3")
public String method8(@cookievalue("cookie1")cookie val) {
// 获取整个cookie
return val.getValue();
}
获取请求头
@GetMapping("/host")
public String method9(@RequestHeader("Host")String host) {
return host;
}



