云计算百科
云计算领域专业知识百科平台

【Java Web趣味解读】重定向vs转发?Cookie和Session?三大作用域保姆级拆解!

导语

刚学Java Web的小伙伴是不是总被“重定向”“转发”“Cookie”“Session”这些概念绕晕?明明都是“跳转页面”,为啥分两种?明明都是存数据,Cookie和Session又有啥不一样?今天就用奶茶店、超市会员卡这些生活化的例子,把这些知识点掰开揉碎讲清楚,保证有趣又好记!

一、先唠唠“跳转那些事”:重定向vs转发(302和内部串门)

咱们先举个🌰:你去奶茶店买“芋泥波波茶”,这就是一次“请求”。

  • 重定向:像你先去A店,A店说“我家没芋泥了,你去B店买吧”,你听完出门,自己走到B店再问一遍“要芋泥波波茶”。

  • 本质:浏览器发了两次请求(A店一次,B店一次),第一次响应状态码302,响应头里会带Location:B.jsp(告诉你该去哪个页面)。

  • 特点:两次请求!会创建新的request对象,之前存的属性全丢(比如你在A店跟店员说“少糖”,到B店得重新说)。

  • 趣味总结:“出门再进门,啥都得重说”。

  • 转发:还是买奶茶,你去A店,A店店员自己跑到后厨(B工位)拿芋泥,然后把做好的奶茶递给你。

  • 本质:Servlet内部行为,浏览器只发了一次请求,全程都是A店在内部协调。

  • 特点:一次请求!request对象不变,之前存的“少糖”属性还在(店员记得你的要求)。

  • 趣味总结:“内部串门,啥事都记得”。

  • 💡 重定向vs转发 秒懂对比表:

    特性

    重定向

    转发

    请求次数

    2次

    1次

    request对象

    新创建

    同一个

    地址栏

    会变(显示B店地址)

    不变(还显示A店地址)

    本质

    浏览器主动跳转

    Servlet内部跳转

    二、数据存哪?Cookie和Session(超市会员卡的两种玩法)

    买完奶茶去超市逛,会员卡就是咱们的“数据存储工具”,对应Cookie和Session:

  • Cookie:存在你手里的纸质会员卡!

      ✅ 可禁用:你可以把会员卡扔了(浏览器禁用Cookie),超市就认不出你了;

      ✅ 容量小:最多存4096字节(就像会员卡只能写几行字,存不了大文件);

      ✅ 可过期:会员卡设了有效期,到期就作废(代码里用setMaxAge()设置,-1表示关闭浏览器就失效);

      ✅ 随请求带:你每次去超市,都得主动出示会员卡(Cookie会随HTTP请求自动发送给服务器)。

  • 是什么:浏览器端的小型存储区域,键值对形式(比如key=userName, value=张三)。

  • 趣味特点:

  • Session:超市后台记的会员电子档案!

      ✅ 基于Cookie:超市给你一张“临时小票”(JSESSIONID存在Cookie里),你凭小票就能查后台的电子档案;

      ✅ 容量大:想存多少存多少(只要服务器扛得住,比如存用户的购物车、登录状态);

      ✅ 可失效:长时间不用,档案就被清了(代码里用setMaxInactiveInterval()设置超时时间);

      ✅ 更安全:数据存在服务器,不怕被篡改(比Cookie安全,敏感数据优先存在Session里)。

  • 是什么:Tomcat服务器端的存储区域,也是键值对形式。

  • 趣味特点:

  • 三、三大作用域:数据的“居住权限”(快递存放点的区别)

    Java Web里的三大作用域,就像小区里的快递存放点,不同存放点,快递能放的时间、能拿的人都不一样:

  • request(请求域):快递柜的“临时格口”

  • 范围:一次请求内有效(比如你取一次快递,打开格口拿完,格口就清空了);

  • 场景:转发时传递数据(比如A Servlet查完商品数据,转发到JSP展示,用request.setAttribute()存数据)。

  • session(会话域):小区的“个人代收点”

  • 范围:整个浏览器会话有效(只要浏览器不关,或者没超时,都能取);

  • 场景:用户登录后,存用户信息(比如登录状态、购物车),跨请求都能用。

  • applicationContext(应用域):小区的“公共仓库”

  • 范围:整个Web应用有效(服务器不关,所有用户都能访问);

  • 场景:存全局数据(比如网站在线人数、商品分类列表)。

  • 💡 三大作用域 核心对比:

    作用域

    生命周期

    访问范围

    趣味比喻

    request

    一次请求

    仅本次请求

    临时快递格口

    session

    浏览器会话

    当前用户

    个人代收点

    applicationContext

    应用启动到停止

    所有用户

    小区公共仓库

    总结

  • 重定向是两次请求,转发是一次请求,核心区别在“是否新建request对象”;

  • Cookie存在浏览器(不安全、容量小),Session存在服务器(安全、容量大),Session依赖JSESSIONID的Cookie实现;

  • 三大作用域的核心是“数据的生命周期和访问范围”,request最小,applicationContext最大。

  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » 【Java Web趣味解读】重定向vs转发?Cookie和Session?三大作用域保姆级拆解!
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!