【Spring】获取cookie,session,header(3)

本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。

博客涉及框架的重要知识点,根据序号学习即可。

目录

[本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。](#本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。)

博客涉及框架的重要知识点,根据序号学习即可。

1、获取cookie

1.1传统版本【使用HttpServletRequest】

1.2简洁版本【使用注解@CookieValue】

2、获取session

2.1传统版本【使用HttpServletRequest】

2.2简洁版本【使用注解@SessionAttribute】

2.3简洁版本【使用HttpSession】

3、获取header

3.1传统版本【使用HttpServletRequest】

3.2简洁版本【使用注解@RequestHeader】

最后:无论使用传统的HttpServletRequest获取,还是使用注解获取,大差不差,关键要懂其原理,当然更推荐使用注解的方式,因为更方便(哈哈哈哈哈哈代码少!!!)

1、获取cookie

1.1传统版本【使用HttpServletRequest】

复制代码
    @RequestMapping("/m11")
    public String m11(HttpServletRequest request, HttpServletResponse response){
        //获取所有的cookie信息
        Cookie[] cookies=request.getCookies();
        //打印cookie信息
        StringBuilder builder=new StringBuilder();
        if(cookies!=null){
            for(Cookie ck:cookies){
                builder.append(ck.getName()+":"+ck.getValue());
            }
        }

        return "Cookie信息:"+builder;
    }

运行结果:

没有获取到cookie是因为没有设置,下图展示如何自定义cookie【 在Application中手动添加cookie,其实这是不安全的,后端需要进行cookie的校验】

1.2简洁版本【使用注解@CookieValue】

复制代码
 @RequestMapping("/m12")
    public String m12(@CookieValue("zhangsan") String name){
        //简洁版获取cookie,使用注解
        return "获取到的name:"+name;
    }

注意区分这里的zhangsan 和name ,搞懂为啥不是第一个cookie,而是以zhangsan为name的cookie。因为@CookieValue

2、获取session

2.1传统版本【使用HttpServletRequest】

复制代码
    @RequestMapping("/m13")
    public String m13(HttpServletRequest request){
        //session的存储
        //获取session对象
        HttpSession session =request.getSession();//与getSession(true)一样,默认值为true
        if(session!=null){
            session.setAttribute("u","123");
        }
        return "Session存储成功";
    }


    @RequestMapping("/m14")
    public String m14(HttpServletRequest request){
        //session的读取
        //如果session不存在,不会自动创建session
        HttpSession session=request.getSession(false);
        String username=null;
        if(session!=null&&session.getAttribute("u")!=null){
            username=(String) session.getAttribute("u");
        }
        return "username:"+username;
    }

session是存放在服务器中的,不方便演示,所以我们先存储session,在读取

2.2简洁版本【使用注解@SessionAttribute】

复制代码
    @RequestMapping("/m15")
    public String m15(@SessionAttribute(value = "u",required = false)String username){
        //获取session简洁版【1】
        return "username:"+username;
    }

2.3简洁版本【使用HttpSession】

复制代码
    @RequestMapping("/m16")
    public String m16(HttpSession session){
        //获取session简洁版【2】
        //通过Spring MVC内置队象HttpSession来获取
        String username=(String)session.getAttribute("u");
        return "username:"+username;
    }

3、获取header

3.1传统版本【使用HttpServletRequest】

复制代码
    @RequestMapping("/m17")
    public String m17(HttpServletRequest request){
        //传统获取header
        String userAgent=request.getHeader("User-Agent");

        return "userAgent:"+userAgent;
    }

3.2简洁版本【使用注解@RequestHeader】

复制代码
    @RequestMapping("/m18")
    public String m18(@RequestHeader("User-Agent")String userAgent){
        //简洁版获取header
        return "userAgent:"+userAgent;
    }

最后:无论使用传统的HttpServletRequest获取,还是使用注解获取,大差不差,关键要懂其原理,当然更推荐使用注解的方式,因为更方便(哈哈哈哈哈哈代码少!!!)

相关推荐
indexsunny3 分钟前
互联网大厂Java面试实战:从Spring Boot到微服务架构的三轮提问
java·spring boot·微服务·eureka·kafka·mybatis·spring security
APIshop9 分钟前
实战代码解析:item_get——获取某鱼商品详情接口
java·linux·数据库
洛_尘10 分钟前
MySQL 5:增删改查操作
数据库·mysql
浮生醉清风i20 分钟前
Spring Ai
java·人工智能·spring
老邓计算机毕设21 分钟前
SSM养老院老人健康信息管理系统t4p4x(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·计算机毕业设计·ssm 框架·养老院老人健康管理系统
AC赳赳老秦23 分钟前
跨境科技服务的基石:DeepSeek赋能多语言技术文档与合规性说明的深度实践
android·大数据·数据库·人工智能·科技·deepseek·跨境
Dontla26 分钟前
boilerplate Introduction样板代码介绍(raw JDBC,Mybatis,productivity killer)
mybatis
拽着尾巴的鱼儿30 分钟前
Spring:定时任务@Scheduled cron 的实现原理
java·后端·spring
理智的煎蛋31 分钟前
达梦数据库全流程操作指南
数据库·oracle
FreeBuf_40 分钟前
欧盟漏洞数据库正式上线,采用去中心化模式运营
数据库·去中心化·区块链