1、Cookie的简单获取方法(可以获取到所有的cookie)
(1)在参数里还有HttpServletResponse response这些,这些都是内置对象需要就拿不需要就删掉就可以,在这里我们用到的是HttpServletRequest request
(2)lambda表达式方法
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r2")
public String getCookie(HttpServletRequest request) {
Cookie[] cookies=request.getCookies();
if(cookies!=null){
Arrays.stream(cookies).forEach(x->System.out.println(x.getName()+":"+x.getValue()));
return "获取cookie成功";
}
return "Cookie为空";
}
}
(3)for循环方法
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r2")
public String getCookie(HttpServletRequest request) {
Cookie[] cookies=request.getCookies();
if(cookies!=null){
for (Cookie c:cookies){
System.out.println(c.getName()+":"+c.getValue());
}
return "获取cookie成功";
}
return "Cookie为空";
}
}
2、用spring boot方法获取cookie(获取指定的,获取不到所有的)也可以继续在声明里加其他的cookie
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r2")
public String getCookie(@CookieValue("lala") String lala ) {
return "lala:"+lala;
}
}
3、获取session(传统方式)
要先运行SetSession在访问GetSession,如果直接get会返回默认值为null
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String setSession(HttpServletRequest request ) {
HttpSession session=request.getSession();
session.setAttribute("username","zhangsan");
return "设置session成功";
}
@RequestMapping("/r2")
public String getSession(HttpServletRequest request){
HttpSession session=request.getSession();
String username=(String) session.getAttribute("username");
return "登录用户:"+username;
}
}
4、spring boot方法获取session(对代码起到简化效果)声明中的HttpSession是内置对象不需要可以去掉
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String setSession(HttpServletRequest request ) {
HttpSession session=request.getSession();
session.setAttribute("username","zhangsan");
return "设置session成功";
}
@RequestMapping("/r2")
public String getSession(HttpSession session){
String username=(String) session.getAttribute("username");
return "登录用户:"+username;
}
}
5、使用注解方式获取session,再次简化代码,运行结果和上面两个一样
(1)这个代码的session不能为空,为空就报错
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String setSession(HttpServletRequest request ) {
HttpSession session=request.getSession();
session.setAttribute("username","zhangsan");
return "设置session成功";
}
@RequestMapping("/r2")
public String getSession(@SessionAttribute("username") String username){
return "登录用户:"+username;
}
}
(2)我们为了为空时候不报错,需要对我们代码进行修改
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String setSession(HttpServletRequest request ) {
HttpSession session=request.getSession();
session.setAttribute("username","zhangsan");
return "设置session成功";
}
@RequestMapping("/r2")
public String getSession(@SessionAttribute(value = "username",required = false) String username){
return "登录用户:"+username;
}
}
这个就是修改过程,加了一个require
6、拓展我们可以用我们的声明获得我们的其他信息,其他参数信息(举例获取User-Agent)获取全部的
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String getHeader(HttpServletRequest request ) {
String userAgent=request.getHeader("User-Agent");
return "User-Agent:"+userAgent;
}
}
postman的User-Agent
浏览器的User-Agent
7、指定获取参数,用注解方法
@RestController
@RequestMapping("/user")
public class user {
@RequestMapping("/r1")
public String getHeader(@RequestHeader("User-Agent") String userAgent) {
return "User-Agent:"+userAgent;
}
}