当前位置: 首页 > article >正文

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

本系列共涉及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获取,还是使用注解获取,大差不差,关键要懂其原理,当然更推荐使用注解的方式,因为更方便(哈哈哈哈哈哈代码少!!!)


http://www.kler.cn/news/295105.html

相关文章:

  • 有限体积法:基于一维稳态扩散问题及其程序实现
  • sping boot 基于 RESTful 风格,模拟增删改查操作
  • 【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)
  • 使用LSTM(长短期记忆网络)模型预测股票价格的实例分析
  • 复旦大学王龑团队发布《静态与动态情感的面部表情识别》综述
  • 漫谈设计模式 [5]:建造者模式
  • 通用内存快照裁剪压缩库Tailor介绍及源码分析(一)
  • ubuntu安装maven
  • C++可以被重载的操作符Overloadable operators
  • SpringBoot 依赖之 Spring for RabbitMQ
  • LabVIEW如何确保采集卡稳定运行
  • 基于SSM+Vue+MySQL的可视化高校公寓管理系统
  • 【Qt笔记】QUndoView控件详解
  • 大数据开发职场:理性分析拖延
  • box64 安装
  • 开源模型应用落地-LlamaIndex学习之旅-LLMs-集成vLLM(二)
  • [Linux]:环境变量与进程地址空间
  • Python中的私有属性与方法:解锁面向对象编程的秘密
  • django ubuntu 踩坑集锦
  • jmeter之TPS计算公式
  • Kafka命令
  • 在全球化时代成为超级个体:Web3、个人品牌与AI工具的融合
  • 【LeetCode】12.整数转罗马数字
  • MSSQL数据库安全配置
  • 信创实践(2):利用Leapp工具迁移CentOS至AnolisOS,实现系统升级与自主可控
  • 通信工程学习:什么是FM频率调制
  • 火狐浏览器设置秘籍:让https协议下的ws不加密时运行无阻(WebSocket connection HTTPS)
  • React Native中iOS工程从OC更换为swift
  • 压力测试知识总结
  • 网络学习-eNSP配置路由器