第二章 Session会话管理
采用网址重写的缺点:
在有些Web浏览器中,URL限制为2000个字符。
仅当有链接要插入值时,值才能转换成后面的资源。此外,要把值添加到静态页面的链接中,可不是一件容易的事情。
网址重写必须在服务器端有效。所有的链接都必须带有值,这样可能出现一个问题,即一个页面中可能会有许多个链接。
某些字符,例如空格、&符号及问号都必须进行编码。
添加到URL中的信息是明显可见的,这种情况有时可不是我们所期待的。
网址重写案例设计:
1.访问top10,返回一个页面,该页面中的每个按钮的url都被重写了,加上了type参数
2.点击按钮后,访问top10,并带上Token,服务端根据Token信息返回相应的页面
3.服务器根据用户选择的URL信息,返回相应的页面内容
隐藏域案例设计:
1.customer、editCustomer、updateCustomer用同一个Servlet进行处理
2.Customer上edit按钮,会将用户id提交给CustomerEdit页面
3.CustomerEdit上用隐藏域记录当前正在被编辑用户的id,update按钮会将信息提交给updateCustomer
4.updateCustomer完成更新,不返回页面
Cookie:
cookie是自动地在Web服务器和浏览器之间来回传递的一小块信息。
cookie适用于那些需要跨越许多页面的信息。
由于cookie是作为HTTP标头嵌入的,因此传输它的过程由HTTP协议处理。
可以根据自己的需要设置cookie的有效期限。
对于Web浏览器而言,每台Web 服务器最多可以支持20个cookie。
Cookie相关方法:
Cookie(String name, String value)
httpServletResponse.addCookie(Cookie cookie)
cookie.getName()
HttpSession对象:
getSession()
getSession(bool create)
setAttribute(String name, Object value)
getAttribute(String name)
getAttributeNames()
getId():获得HttpSession标识符
invalidate():这个方法强制Session过期,并将绑到到Session上的所有对象都解除绑定
getMaxInacitveInterval():了解一个HttpSession在用户最后一次访问之后还可以维持多久。
setMaxInactiveInterval():传递0,则Session永远不过期
添加到HttpSession中的值不一定是String,可以为任意Java对象,只要它的类实现了java.io.Serializable接口即可,以便当Servlet容器认为有必要的时候,保存的对象可以序列化成一个文件或者保存到数据库中,例如,当容器的内存快要用完的时候。仍然可以将非序列化的对象保存在HttpSession中,但是如果Servlet容器试图将它们序列化,将会以失败告终,并抛出异常。
HttpSession中保存的值不发送到客户端,这与其他的Session管理方法不同。而是Servlet容器为它创建的每一个HttpSession生成一个唯一标识符,并将这个标识符作为一个token发送给浏览器,一般是作为一个名为JSESSIONID的cookie,或者作为一个jsessionid参数添加到URL后面。在后续的请求中,浏览器会将这个token发送回服务器,使服务器能够知道是哪个用户在发出请求。无论Servlet容器选择用哪一种方式传输session标识答,那都是在后台自动完成的,不需要你去做额外的处理工作。
第二章 Session会话管理的更多相关文章
- session会话管理
session会话和cookie一起被称为会话跟踪技术,主要通过保存在服务器端的session数据和客户端浏览器的cookie数据共同完成用户访问服务器的足迹记录. 1. 什么是会话 会话sessio ...
- 第二十四章 在线会话管理——《跟我学Shiro》
目录贴:跟我学Shiro目录贴 有时候需要显示当前在线人数.当前在线用户,有时候可能需要强制某个用户下线等:此时就需要获取相应的在线用户并进行一些操作. 本章基于<第十六章 综合实例>代码 ...
- HttpClient学习研究---第二章:连接管理
第二章.Connection management连接管理2.1. 2.1.Connection persistence连接持久性The process of establishing a conne ...
- JavaWeb中Session会话管理,理解Http无状态处理机制
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512955067434271246/ 1.<Servlet简单实现开发部署过程> 2.<Serv ...
- .net用SQL Server进行session会话管理
保存在内存中的session经常由于dll的变动导致丢失.有一种方法可以长期保存session,那就是session的SqlServer模式. ASP.NET允许将会话数据存储到一个数据库服务器中,方 ...
- session会话管理,与过滤器使用,访问控制
1 用户登录,是否注册用户,在登录处理页面进行用户验证,创建session保存用户名和密码 2否,进入用户注册页面 3是,系统保存该用户的登录信息 4进入要访问的页面 5用户直接访问某个页面, 6系统 ...
- 第二章· MySQL体系结构管理
一.客户端与服务器模型  1.mysql是一个典型的C/S服务结构 1.1 mysql自带的客户端程序(/application/mysql/bin) mysql mysqladmin mysqld ...
- 4.会话管理(Session)
1.会话管理的概念和基本原理: 会话管理概念: 会话的实现过程: 2.使用Cookie.隐藏域.URL重写实现会话管理 创建并向客户端发送Cookie; 从客户端读取Cookies Cookie的方法 ...
- JavaWeb中Cookie会话管理,理解Http无状态处理机制
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512995108961387015/ 1.<Servlet简单实现开发部署过程> 2.<Serv ...
随机推荐
- 操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP)
原文:操作XML文档遇到的XMLNS问题及解决方法 (C# 和 PHP) 不管是用 PHP 还是 C#, 在操作 XML 的时候我们除了一个节点一个节点去取值之外, 还有一个非常方便的表达式, 就是 ...
- shell转义符
转义是一种引用单个字符的方法. 一个前面放上转义符 (\)的字符就是告诉shell这个字符按照字面的意思进行解释, 换句话说, 就是这个字符失去了它的特殊含义. 在某些特定的命令和工具中, 比如ech ...
- Elasticsearch教程(一)简介与安装
简单概念 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为 ...
- JavaScript 数据实用程序库:Datalib
Datalib 是一个 JavaScript 数据实用程序库. 快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中. <HTML开发M ...
- TCP打洞和UDP打洞的区别 (相互直接访问)
为什么网上讲到的P2P打洞基本上都是基于UDP协议的打洞?难道TCP不可能打洞?还是TCP打洞难于实现? 假设现在有内网客户端A和内网客户端B,有公网服务端S. 如果A和B想要进行UD ...
- C++的标准库函数默认都是操作字节,而不是字符,非常痛苦,所以引入了u16string和u32string(Linux上的wchar_t是32位的原因,utf16对unicode的支持是有缺陷的)good
时至今日,字符串使用unicode已经是不需要理由的常识,但对一些有着悠久历史的编程语言来说,这仍然是个头痛的问题.如果抛开第三方库的支持,C++其实并不能实际有效地支持unicode,即使是utf8 ...
- Qt官方开发环境生成的exe发布方式--使用windeployqt
Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行.因此 Qt 官方开发环境里自带了一个 ...
- <房间内功能>打赏小动画
截图如下 : 功能: 每次点击礼物,都要通过动画显示一个小图标,最多显示两行图标栏,送多次会显示然后再次显示,显示 XX 送给 XX 一个小礼物的动画样式.动画样式效果为,整体动画模 ...
- 前端开发在uc浏览器上遇到的坑
关于uc 的flex 和textarea 的width:100%: 这些天再做一个wap的项目,本想着手机上不用考虑兼容性问题,可以大刀阔斧搞,fuck ie678! 在pc上完成页面开发,在chro ...
- oracle11g安装时出现程序未找到文件解决办法
在安装的最后可能会出现如下问题 解决办法如下 将win64_11gR2_database_2of2中的\win64_11gR2_database_2of2\database\stage\Compone ...