SpringMV获得请求参数
1.获得基本类型参数Controller中的业务方法的参数名要与参数的name一致,参数值会自动映射匹配
@RequestMapping(value="/allBook10",produces= "text/plain;charset=utf-8")
@ResponseBody
public String list10(String name,int age) throws IOException{
return name+age;
}
结果:
Controller中的业务方法的POJO参数的属性名要与参数的name一致,参数值会自动映射匹配
@RequestMapping(value="/allBook11",produces= "text/plain;charset=utf-8")
@ResponseBody
public void list11(Student student) {
System.out.println(student);
}
结果:
Student(name=zhangsan, age=24, Address=wup)
3.获得数组类型参数
Controller中的业务方法的数组名要与参数的name一致,参数值会自动映
@RequestMapping(value="/allBook12",produces= "text/plain;charset=utf-8")
@ResponseBody
public void list12(String[] strs) {
System.out.println(Arrays.asList(strs)); //该方法是将数组转化为list
System.out.println(Arrays.toString(strs)); //重写toString
}
结果:
[12, 14, 18]
[12, 14, 18]
4.获取集合类型参数
5.参数绑定@RequestParam
当请求的参数名称与Controller的业务方法参数名称不一致时,就需要通过@RequestParam注解显示绑定
这里的@RequestParam(“name”) 里的name指你客户端传的属性名
如果和@RequestParam(“name”) 又不一致的话
@RequestMapping(value="/allBook14",produces= "text/plain;charset=utf-8")
@ResponseBody
public void list14(@RequestParam("name") String username) {
System.out.println("传入的参数为"+username);
}
结果:
传入的参数为张三
也可以对@RequestParam()添加多个属性
value:与请求参数名称
required:表示这个请求参数必须有,如果没有则报错
defaultValue:表示没有指定参数时,使用默认值
@RequestMapping(value="/allBook15",produces= "text/plain;charset=utf-8")
@ResponseBody
public void list15(@RequestParam(value = "name",required = false,defaultValue = "我是默认值") String username) {
System.out.println("传入的参数为"+username);
}
结果:
传入的参数为我是默认值
6.获得Servlet相关API
@RequestMapping(value="/allBook17")
@ResponseBody
public void list17(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
System.out.println(request);
System.out.println(response);
System.out.println(session);
}
结果:
org.apache.catalina.connector.RequestFacade@43147d40
org.apache.catalina.connector.ResponseFacade@457f3459
org.apache.catalina.session.StandardSessionFacade@912cc6d
7.获得请求头
使用@RequestHeader可以获得请求头信息,相当于web阶段学习的request.getHeader(name)
@RequestHeader注解的属性如下:
value:请求头的名称
required:是否必须携带次请求头
@RequestMapping(value="/allBook18")
@ResponseBody
public void list18(@RequestHeader(value="User-Agent",required = false) String headerValue) {
System.out.println(headerValue);
}
结果:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.55
8.获得Cookie
使用@CookieValue可以获得指定Cookie的值
@CookieValue注解的属性如下:
value:Cookie的名称
required:是否必须携带此cookie
@RequestMapping(value="/allBook19")
@ResponseBody
public void list19(@CookieValue(value="JSESSIONID",required = false) String jsessionid) {
System.out.println(jsessionid);
}
结果:
6326CFA25571F306A8C15B59226BEF3C



