引言

HTTP 协议是一个无状态的协议,简单理解就是两次请求/响应无法记录或保存状态信息。但是动态 Web 项目开发是需要保存请求状态的,比如用户的登录状态,但 HTTP 协议层不支持状态保存,所以需要有状态管理解决方案来解决这个问题。

常见的状态管理解决方案如下:

  • 隐藏表单字段

    提交表单时,利用表单控件的 hide 属性(隐藏属性)可以将状态信息隐藏发送给服务器,但是缺点是需要有表单提交。

  • cookie

    客户端 cookie 保存状态信息,缺点是状态信息存放在客户端不够安全

  • session

    服务器 session 保存状态信息,cookie 存放 session id,比较安全。缺点是如果浏览器禁用 cookie 会导致 session 无法使用。

  • url 地址重写

    重写 url 地址,将 session id 作为参数存放在 url 地址后,而不是 cookie 里,以解决 cookie 禁用 session 无法使用问题。

session 状态管理原理

  • 当客户端第一次向服务器发送 HTTP 请求时,服务器收到请求后创建一个 session 对象并生成唯一的 session id;

  • 服务器响应时将该 session id 发送给客户端浏览器,浏览器会将 session id 存放于 cookie 中;

  • 当客户端第二次再向服务器发送 HTTP 请求时,这时浏览器会将 cookie 里存放的 session id 一并发送给服务器;

  • 服务器收到请求后,会取出 session id,然后从服务器管理 session 对象的 map 集合里查找 session 对象;这样两次请求/响应共享同一个 session 对象,也就是所谓的一次 session 会话

session 对象的方法

通过 setAttribute(String name, Object object)方法可以向 session 对象存放状态信息,getAttribute(String name) 方法可以取出状态信息。

JavaWeb Session 状态管理的更多相关文章

  1. [Asp.Net]状态管理(Session、Application、Cache)

    上篇博文介绍了在客户端状态管理的两种方式:http://www.cnblogs.com/wolf-sun/p/3329773.html.除了在客户端上保存状态外,还可以在服务器上保存状态.使用客户端的 ...

  2. 转载ASP.NET 状态管理Application,Session,Cookie和ViewState用法

    转载原地址 http://www.cnblogs.com/cuishao1985/archive/2009/09/24/1573403.html ASP.NET状态管理 APPlication,Ses ...

  3. 状态管理之cookie使用及其限制、session会话

    # 1.什么是状态管理? 将浏览器与web服务器之间多次交互当作一个整体来处理,并且将多次交互所涉及的数据(即状态)保存下来.(cookie浏览器所涉及到的访问数据保存下来)# 2.如何进行状态管理? ...

  4. Unit07: 状态管理-Session

    Unit07: 状态管理-Session web package web; import java.io.IOException; import java.io.PrintWriter; import ...

  5. web状态管理机制

    引入:b/s(浏览器/服务器模式)区别于winform的是winform中只加载一次页面构造函数,而b/s中只要点击按钮或者其他涉及后台的操作都会调用后台代码.一般情况下为了防止服务器过载,b/s不会 ...

  6. Javaweb Session机制(有待补充)

    Javaweb Session机制 一.前言 session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话是从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个ses ...

  7. 表格搞定 Asp.net Web 状态管理

    最近在网上搜罗了 ASP.NET WEB 状态管理方面的一些内容,终于把这些内容整合总结了一下. 1. 希望自己通过整理,能够掌握一些,为自己投资. 2. 以便自己忘记,又要浪费时间搜罗. 3. 希望 ...

  8. [译]面向初学者的Asp.Net状态管理技术

    介绍 本文主要讲解Asp.Net应用程序中的状态管理技术(Asp.Net中有多种状态管理技术),并批判性地分析所有状态管理技术的优缺点. 背景 HTTP是无状态的协议.客户端发起一个请求,服务器响应完 ...

  9. [Asp.Net]状态管理(ViewState、Cookie)

    简介 HTTP协议是无状态的.从客户端到服务器的连接可以在每个请求之后关闭.但是一般需要把一些客户端信息从一个页面传送给另一个页面. 无状态的根本原因是:浏览器和服务器使用Socket通信,服务器将请 ...

随机推荐

  1. Linux实战技能,教你轻松应对85%的使用场景

    在Linux实操的过程中,你在网上也能搜到一堆参考资料,但是看完之后还是会觉得似懂非懂,无法举一反三,从网上复制粘贴了事,则极有可能不起作用. 如果侥幸解决了特定的问题,也意识到自己需要系统学习一下 ...

  2. Lucas(卢卡斯)定理

    Lucas(卢卡斯)定理 定义 若 \(p\) 为质数,且\(a\ge b\ge1\),则有: \[C_{a}^{b}\equiv C_{a/p}^{b/p}\cdot C_{a (mod\,p)}^ ...

  3. Linux递归压缩图片脚本

    1 压缩图片 使用ImageMagick的convert命令进行压缩图片,一般只需要一个指定压缩质量的参数,比如: convert -quality 75 1.jpg 1_compress.jpg 可 ...

  4. kafka配置内外网访问

    使用docker简单部署测试 zookeeper mkdir data conf chmod 777 data 启动命令 docker run -itd -p 2181:2181 -e ALLOW_A ...

  5. Jsoup-基于Java实现网络爬虫-爬取笔趣阁小说

    注意!仅供学习交流使用,请勿用在歪门邪道的地方!技术只是工具!关键在于用途! 今天接触了一款有意思的框架,作用是网络爬虫,他可以像操作JS一样对网页内容进行提取 初体验Jsoup <!-- Ma ...

  6. 案例分析——Who is the king of handwriting notes?

    案例分析--Who is the king of handwriting notes? 项目 内容 这个作业属于那个课程 2021春季学期软件工程(罗杰.任健) 这个作业的要求在哪里 案例分析 我在这 ...

  7. hdu4535

    题意: 吉哥系列故事--礼尚往来 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) To ...

  8. 病毒木马查杀实战第013篇:一个基于.NET的“敲竹杠”病毒研究

    前言 恶意程序发展至今,其功能已经从最初的单纯破坏,不断发展为隐私的窥探,信息的盗取,乃至如今非常流行的"敲竹杠"病毒,用于勒索.可见随着时代的发展,病毒的作者们往往也是想利用自己 ...

  9. Android平台dalvik模式下java Hook框架ddi的分析(1)

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/75710411 一.前 言 在前面的博客中已经学习了作者crmulliner编写的, ...

  10. 7.PHP Cookie与Session

    Cookie与Session Cookie Cookie功能 创建cookie <?PHP    setcookie("TMCookie" ,'www.baidu.com') ...