SpingMVC之获取Session、Cookie及请求头信息
直接通过形参获取Servlet相关接口及对象
-
springMVC提供访问原始Servlet接口API的功能,直接在方法形参上声明即可。 @RequestMapping("/servletApi") public String servletApi(HttpServletRequest request, HttpServletResponse response, HttpSession session){ System.out.println(request); System.out.println(response); System.out.println(session); return "demo.jsp"; } 可以通过request对象即可获取Session、Cookie、请求参数,请求头等对象及数据。
使用注解获取请求头数据
-
使用注解:@RequestHeader 类型:形参注解,作用于方法的形参前 作用:绑定请求头数据与对应处理方法形参间的关系 处理方法示例: /** * 获取请求头数据中host服务器ip信息 */ @RequestMapping("/demo10") @ResponseBody //将请求头中host属性 的数据,注入到host形参变量中 public String demo10(@RequestHeader("host") String host) { return host; } 响应结果
使用注解获取Cookie数据
-
使用注解:@CookieValue 类型:形参注解,作用于方法形参前 作用:绑定请求中Cookie数据与对应处理方法形参间的关系 处理方法示例 /** * 获取请求头数据中Cookie数据 */ @RequestMapping("/demo11") @ResponseBody //获取请求中对应key的Cookie的值,JSESSIONID为要获取的Cookie的key public String demo11(@CookieValue("JSESSIONID") String cookie) { return cookie; } 响应结果
使用注解获取Session数据
设置Session数据
-
使用注解:@SessionAttributes 类型:类注解,作用于处理器类上方 作用:声明放入Session作用域的变量的名称,适用于使用Model对象,进行携带数据跳转页面
从Session作用域中获取数据
-
使用注解:@SessionAttribute 类型:形参注解,作用于处理方法的形参前 作用:从Session作用域中获取指定的变量的值,并与方法形参进行绑定
配置使用
- 处理方法 @Controller //声明session作用域中的变量名 @SessionAttributes({ "name", "age"}) public class ResponseDemo { /** * 设置session数据 */ @RequestMapping("/demo12") public String demo12(Model model) { //使用model对象,为类上声明的session作用域中的变量赋值 model.addAttribute("name", "zhangsan"); model.addAttribute("age", "45"); //跳转到demo页面 return "/demo"; } /** * 获取Session中的数据 */ @RequestMapping("/demo13") @ResponseBody public String demo13(@SessionAttribute("name") String name, @SessionAttribute("age") String age) { return name + "----" + age; } }
- 响应结果 设置session数据结果 获取session数据结果
- 注意点 我们使用的model对象,实际上是在给Session作用域中的变量赋值 虽然可以不使用@SessionAttributes声明Session作用域中的变量,直接使用model对象携带数据进行页面的跳转,demo12页面也能够正常的显示数据,但是demo13就不能从Session作用域中获取到数据值。