Cookie和Session的获取方法

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;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值