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

node怎么做网站门户型网站怎么建设

node怎么做网站,门户型网站怎么建设,无锡网站建设开发,中国最大的软件公司排名HttpSession 的运行原理(基于 Java Web) HttpSession 是 Java Web 开发中用于在服务器端存储用户会话数据的机制,它的核心作用是跟踪用户状态(如登录信息、购物车数据等)。 1. HttpSession 的基本概念 会话&#xff0…

HttpSession 的运行原理(基于 Java Web)

HttpSession 是 Java Web 开发中用于在服务器端存储用户会话数据的机制,它的核心作用是跟踪用户状态(如登录信息、购物车数据等)。


1. HttpSession 的基本概念

  • 会话(Session):指用户从访问网站到关闭浏览器(或超时)期间的一系列交互过程。

  • Session ID服务器为每个会话分配的唯一标识符(通常是一个 JSESSIONID Cookie)

  • 存储位置:Session 数据默认存储在 服务器内存 中(Tomcat/Jetty等),也可以配置到 Redis、数据库等。


2. HttpSession 的工作流程

(1)创建 Session

当客户端(浏览器)第一次访问服务器时:

  1. 服务器检查请求是否携带 JSESSIONID Cookie。

  2. 如果没有,则创建一个新的 Session,并生成唯一的 JSESSIONID

  3. 服务器在响应头中返回 Set-Cookie: JSESSIONID=xxx,浏览器保存该 Cookie。

(2)后续请求携带 Session ID

浏览器在后续请求中会自动带上 JSESSIONID Cookie:

GET /home HTTP/1.1
Cookie: JSESSIONID=abc123

服务器根据 JSESSIONID 找到对应的 Session,并读取/写入数据。

(3)相关配置

        在一些前后端分离的项目中,涉及跨域问题,这时如果想让会话携带Cookie等凭证,那么需要配置: withCredentials: true。withCredentials可以控制请求是否携带Cookie等凭证,同样的后端也需要设置。

         前端代码实例:

fetch('http://api.example.com/login', {method: 'POST',credentials: 'include', // 等效于 withCredentials: trueheaders: { 'Content-Type': 'application/json' },body: JSON.stringify({ username: 'user', password: 'pass' })
});

       后端代码:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: <具体域名>  

注意前后端都需要配置,否则也会报错

(3)Session 失效

Session 会在以下情况被销毁:

  • 超时session.setMaxInactiveInterval(1800)(30分钟无活动则失效)。

  • 主动销毁:调用 session.invalidate()

  • 服务器重启(如果 Session 未持久化到外部存储)。


3. HttpSession 的核心 API

方法说明
request.getSession()获取 Session(如果没有则创建)
request.getSession(false)获取 Session(如果没有则返回 null
session.getId()获取 Session ID
session.setAttribute("key", value)存储数据
session.getAttribute("key")读取数据
session.removeAttribute("key")删除数据
session.invalidate()销毁 Session
session.setMaxInactiveInterval(seconds)设置超时时间(秒)

4. HttpSession 的底层实现

(1)Session 存储方式

  • 默认:存储在 服务器内存(Tomcat 使用 ConcurrentHashMap)。

  • 分布式环境:使用 Redis数据库 或 Session 复制(如 Spring Session)。

(2)Session ID 的传递方式

  • Cookie(默认)

    Set-Cookie: JSESSIONID=abc123; Path=/; HttpOnly
  • URL 重写(禁用 Cookie 时):

    <a href="/home;jsessionid=abc123">Home</a>

5. 代码示例

(1)存储 Session 数据

@GetMapping("/login")
public String login(HttpServletRequest request) {HttpSession session = request.getSession(); // 获取或创建 Sessionsession.setAttribute("user", "张三"); // 存储数据session.setMaxInactiveInterval(1800); // 设置30分钟超时return "登录成功";
}

(2)读取 Session 数据

@GetMapping("/profile")
public String profile(HttpServletRequest request) {HttpSession session = request.getSession(false); // 不自动创建 Sessionif (session == null) {return "未登录";}String user = (String) session.getAttribute("user");return "当前用户: " + user;
}

(3)销毁 Session(退出登录)

@GetMapping("/logout")
public String logout(HttpServletRequest request) {HttpSession session = request.getSession(false);if (session != null) {session.invalidate(); // 销毁 Session}return "已退出登录";
}

6. 常见问题

(1)Session 和 Cookie 的区别

SessionCookie
存储位置服务器浏览器
安全性较高(数据在服务端)较低(可能被篡改)
存储大小较大(依赖服务器内存)较小(一般 ≤4KB)
生命周期可设置超时时间可设置过期时间

(2)如何防止 Session 劫持?

  • 使用 HTTPS 加密传输 JSESSIONID

  • 设置 HttpOnly 和 Secure 标志,防止 XSS 攻击:

    // Spring Boot 配置(application.properties)
    server.servlet.session.cookie.http-only=true
    server.servlet.session.cookie.secure=true

7. 总结

  1. HttpSession 用于在服务器端存储用户会话数据,依赖 JSESSIONID 标识用户。

  2. 默认存储在内存,分布式环境可用 Redis 共享 Session。

  3. 核心操作setAttribute()getAttribute()invalidate()

  4. 安全建议:使用 HttpOnly + Secure Cookie,避免 Session 劫持。


文章转载自:

http://UiTr842p.mcndn.cn
http://vo8CreI0.mcndn.cn
http://FJKs4noA.mcndn.cn
http://7nAnw8rz.mcndn.cn
http://zoTni6LI.mcndn.cn
http://Lr3uThpH.mcndn.cn
http://NYTsXoiB.mcndn.cn
http://8CTXIgwS.mcndn.cn
http://DB9lpwGh.mcndn.cn
http://f1cE0i1r.mcndn.cn
http://0xu6fOvL.mcndn.cn
http://DOrwS7Af.mcndn.cn
http://fmkFHNbR.mcndn.cn
http://lmHOnkY3.mcndn.cn
http://ravkvU9z.mcndn.cn
http://xtDay0K5.mcndn.cn
http://HGX3z3eQ.mcndn.cn
http://DMZfDsN0.mcndn.cn
http://Zr4tiRu3.mcndn.cn
http://mazPyf6Z.mcndn.cn
http://32xLbUSv.mcndn.cn
http://yfclQIu3.mcndn.cn
http://hOnhKzZS.mcndn.cn
http://EVKB7nRu.mcndn.cn
http://JcsrD4I8.mcndn.cn
http://Cn7SlV14.mcndn.cn
http://6HJv7vJK.mcndn.cn
http://PV40SzFx.mcndn.cn
http://VlPOT2HQ.mcndn.cn
http://duADi7jG.mcndn.cn
http://www.dtcms.com/wzjs/667895.html

相关文章:

  • 网站建设教育机构网站建设的前期开发
  • 番禺网站建设公司排名栖霞网站定制
  • 弹幕怎么做视频网站深圳网站设计公司排名榜
  • 南宁高端网站建设公司珠海建网站的联系方式
  • 免费的网站申请济南网站关键词优化公司
  • 电子科技网站模板宠物用品网站建设
  • 网站免费的不用下载做爰全过程教育网站
  • wordpress的配置dns宁波seo网络推广代理价格
  • 网站开发成都杭州微网站建设公司
  • 网站内部优化建设济南做网站软件
  • 百度在线做网站楼市最新消息2022新政
  • 上海app网站开发价值seo推广方式是什么呢
  • 药品在网站上做标签有哪些分类建站推荐
  • 网络营销的企业网站平台推广是什么意思
  • 深圳市住房建设局网站怎么打不开上海房产网签
  • 腾讯云购买域名后如何建网站郑州现在可以正常出入吗
  • 外贸网站建设 全球搜番禺绿叶居
  • 做网站好处建设网站需要哪些手续
  • 360提交网站入口html导入到wordpress
  • 山东住房与城乡建设厅网站公司介绍网站平台搭建设计论文
  • 荼叶公司网站模板网站开发进度安排文档
  • 湘西做网站商城和营销型网站建设
  • 开发网站公司排行没有网站可以做cpa广告么
  • 渭南网站制作学校国外免费建站网站不用下载
  • 做游戏视频网站要批证吗南京网站开发建设
  • 网站开发哪里接到单子的网站开发的硬件环境要求
  • 网站怎么广告投放小程序商城推广哪家好
  • 哈尔滨建站系统报价个人动漫网站怎么做页面
  • 公司做的网站费用计入什么科目做网站设计管理的专业
  • 网站开发人员负责方面抖音广告怎么投放