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

19寸 网站做多大千锋教育的真实性

19寸 网站做多大,千锋教育的真实性,wordpress 模版 摄影,苏州建设建设信息网站目录 1.前言 2.正文 2.1cookie与session概念 2.2返回cookie参数 2.3设置session 3.小结 1.前言 哈喽大家好吖,今天继续来给大家来分享SpringMVC的学习,今天主要带来的是cookie与session的讲解以及通过postman和fiddler来实战,废话不多…


目录

1.前言

2.正文

2.1cookie与session概念

2.2返回cookie参数

2.3设置session

3.小结


1.前言

哈喽大家好吖,今天继续来给大家来分享SpringMVC的学习,今天主要带来的是cookie与session的讲解以及通过postman和fiddler来实战,废话不多说让我们开始吧。

2.正文

2.1cookie与session概念

2.1.1.为什么需要 Cookie 和 Session?

HTTP 协议是无状态的,服务器无法自动识别两次请求是否来自同一个用户。Cookie 和 Session 的作用就是在无状态的 HTTP 协议基础上,实现用户身份识别和状态保持

cookie是存储在客户端上的,session是存储在服务器上的。cookie中存储着sessionID。

2.1.2通俗理解

  • Cookie:像一张"会员卡",由服务器发放,浏览器保存,每次访问时自动出示。

  • Session:像"保险箱",数据存储在服务器,用户通过"钥匙"(Session ID)访问自己的数据。

2.1.3cookie

1. 定义

Cookie 是服务器发送给浏览器的一小段文本信息(通常 4KB 以内),浏览器会保存并在后续请求中自动携带。

2. 工作原理

  1. 客户端首次访问服务器

  2. 服务器通过 Set-Cookie 响应头下发 Cookie

  3. 浏览器后续请求自动通过 Cookie 请求头发送 Cookie

2.1.4session

1. 定义

Session 是服务器端存储的用户会话数据,通过唯一的 Session ID 标识用户,该 ID 通常通过 Cookie 传递。

2. 工作原理

  1. 客户端首次访问服务器

  2. 服务器创建 Session 并生成 Session ID

  3. 通过 Set-Cookie 下发 Session ID

  4. 浏览器后续请求携带 Session ID

  5. 服务器通过 Session ID 查找用户数据

讲解完基础概念后我们就要开始写代码啦。 

2.2返回cookie参数

返回所有cookie:

@RequestMapping("/r11")  // 1. 定义路由映射
public String r11(HttpServletRequest request){  // 2. 方法参数注入// 3. 获取 Cookie 数组Cookie[] cookies = request.getCookies();// 4. 非空检查if(cookies != null){// 5. 遍历 Cookie 数组for(Cookie cookie : cookies){// 6. 打印每个 Cookie 的名称和值System.out.println(cookie.getName() + ":" + cookie.getValue());}}// 7. 返回响应return "返回所有cookie成功";
}

关键点详解:

  1. @RequestMapping("/r11")

    • 这是一个 Spring MVC 注解

    • 表示当访问 /r11 路径时,会执行这个方法

    • 等价于 @GetMapping("/r11")(如果只处理 GET 请求)

  2. HttpServletRequest request

    • Spring 会自动注入当前 HTTP 请求对象

    • 该对象包含请求的所有信息(头信息、参数、Cookie 等)

  3. request.getCookies()

    • 重要方法:从请求中获取所有 Cookie

    • 返回 Cookie[] 数组(可能为 null)

    • 每个 Cookie 对象包含:

      • getName():获取 Cookie 名称

      • getValue():获取 Cookie 值

      • 其他方法:getDomain()getPath()isHttpOnly() 等

  4. 非空检查

    • 必须检查 cookies != null

    • 如果浏览器没有发送任何 Cookie,该方法返回 null

    • 不检查会导致 NullPointerException

  5. Cookie 遍历

    • 使用增强 for 循环遍历数组

    • 每个 Cookie 对象代表一个键值对

在浏览器中打开该网页,接下来通过fiddler抓包工具对其抓包: 

另外我们可以在postman设置cookies的值,格式是键值对。

通过postman也可以进行连接:


返回某个键值对的值: 

//返回cookie中单个键的值@RequestMapping("/r12")public String r12(@CookieValue ("name") String name){return "cookie该key的值" + name;}

 关键点详解:

 

  1. @RequestMapping("/r12")

    • 定义了一个处理 HTTP 请求的端点

    • 默认支持所有 HTTP 方法(GET/POST等)

    • 建议明确指定方法类型,如 @GetMapping

  2. @CookieValue("name")

    • Spring MVC 提供的注解

    • 自动从请求的 Cookie 中提取名为 "name" 的值

    • 注入到方法参数 String name 中

  3. 返回值处理

    • 直接拼接字符串返回

2.3设置session

存储session:

@RequestMapping("/r13")  // 1. 定义路由端点
public String setSession(HttpServletRequest request) {  // 2. 注入请求对象// 3. 获取或创建 SessionHttpSession session = request.getSession();// 4. 存储数据到 Sessionsession.setAttribute("name", "jerry");session.setAttribute("age", 20);// 5. 返回响应return "session设置成功";
}

关键点详解

  1. request.getSession()

    • 核心方法,获取当前会话的 HttpSession 对象

    • 重要特性

      • 如果 Session 不存在,会自动创建新 Session

      • 等价于 request.getSession(true)

      • 如果不想自动创建,可使用 request.getSession(false)

  2. setAttribute() 方法

    • 存储数据的标准方式

    • 参数说明:

      void setAttribute(String name, Object value)
    • 可以存储任何可序列化的 Java 对象

    • 相同 name 会覆盖旧值

  3. Session 生命周期

    • 创建:第一次调用 getSession() 时

    • 销毁:

      • 调用 session.invalidate()

      • 超过配置的超时时间(默认 30 分钟)

      • 服务器重启(如果使用内存存储)

进行抓包: 


三种获取session的方式:

方法一:通过 HttpServletRequest 获取 

@RequestMapping("/r14")
public String getSession1(HttpServletRequest request) {// 获取现有 Session,不自动创建新 SessionHttpSession session = request.getSession(false);if (session == null) {return "用户未登录";} else {// 从 Session 获取属性并强制类型转换String name = (String) session.getAttribute("name");return "登录用户为:" + name;}
}
  1. request.getSession(false)

    • 参数 false 表示不自动创建新 Session

    • 如果 Session 不存在则返回 null

  2. 安全校验:

    • 显式检查 session == null 处理未登录情况

    • 避免直接操作可能为 null 的 Session

  3. 类型转换:

    • getAttribute() 返回 Object 类型

    • 需要强制转换为目标类型(这里是 String


 方法二:直接注入 HttpSession

@RequestMapping("/r15")
public String getSession2(HttpSession session) {// 直接使用注入的 Session 对象String name = (String) session.getAttribute("name");return "登录用户为: " + name;
}
  1. 自动注入:

    • Spring 会自动注入当前请求的 HttpSession

    • 等价于 request.getSession(true)

  2. 行为特点:

    • 如果 Session 不存在会自动创建新 Session

    • 可能导致不必要的 Session 创建

  3. 空值风险:

    • name 属性可能不存在(返回 null


 方法三:使用 @SessionAttribute 注解

@RequestMapping("/r16")
public String getSession3(@SessionAttribute("name") String name) {return "登录用户为: " + name;
}
  1. 注解特性:

    • 直接从 Session 中提取指定属性

    • 自动完成类型转换(无需显式强转)

  2. 异常处理:

    • 如果属性不存在会抛出 HttpSessionRequiredException

    • 可以使用 required = false 避免

  3. 与 @ModelAttribute 的区别:

    • @SessionAttribute 只从 Session 读取

    • @ModelAttribute 会先检查 Session 再检查请求参数

方法特点适用场景是否自动创建 Session
r14通过 HttpServletRequest 获取需要精确控制 Session 创建可控制 (false)
r15直接注入 HttpSession简单读取场景自动创建 (true)
r16使用 @SessionAttribute 注解需要特定 Session 属性自动创建 (true)

3.小结

今天的分享到这里就结束了,喜欢的小伙伴点点赞点点关注,你的支持就是对我最大的鼓励,大家加油!

http://www.dtcms.com/wzjs/529387.html

相关文章:

  • 独立站seo是什么意思互联网广告是做什么的
  • 做网站比较好的公司网站优化排名金苹果系统
  • 网站开发平台 运行平台seo营销培训咨询
  • 黎平网站建设关键词推广系统
  • 姚家园做网站优化大师专业版
  • 网站开发运营工作总结免费刷seo
  • 云虚拟主机wordpress甘肃省seo关键词优化
  • 中投建设官方网站软文代写平台有哪些
  • 郴州做网站的jsurl中文转码
  • bc网站怎么做支付雷神代刷推广网站
  • 网站建设制作设计营销公司杭州专业北京seo公司
  • 威县做网站多少钱网络优化报告
  • 平台类网站费用seo方法培训
  • 广州英铭网站建设百度贴吧怎么发广告
  • wordpress 上传 重命名网站页面优化方案
  • 资料网站模板国家高新技术企业认定
  • 中国有没有做的好的网站电商网站有哪些
  • 栾城seo整站排名宁波seo推广推荐公司
  • 网站群建设意见征集企业网站推广策划书
  • 做电商网站自己建网站流程
  • 建网站代码网络广告策划书模板范文
  • macbook做网站开发抚顺seo
  • 黄骅市做网站hao123网址大全浏览器设为主页
  • 5个搜索引擎作弊的网站seo常用工具包括
  • 哈尔滨网站建设费用巨量算数官方入口
  • 专业建站分销商城全国前十名小程序开发公司
  • 好看的论坛源码大连seo外包平台
  • 企业内部培训app软件seo排名技巧
  • 湖南省建设厅官网网站拉新推广赚钱的app
  • 网站建设委托外包协议惠州seo排名收费