jsp/servlet学习三之会话管理初解
由于http的无状态性,使得会话管理或会话跟踪成为web应用开发一个无可避免的主题。默认下,一个web服务器无法区分一个http请求是否为第一次访问。例如,一个web邮件应用要求用户登陆后才能查看邮件,因此,当用户输入了相应的用户名和密码后,应该不应该再次提示需要用户登陆,应该必须记住那些用户已经登陆。换句话说,应该必须能管理用户的会话。
URL重写
URL重写是一种会话跟踪技术,它将一个或者多个token添加到URL的查询字符串中,每个token通常为key=value形式,如下:
url?key-1=value-1&key-2=value-2
注意,URL和tokens间用问好(?)分割,token间用与号(&)分割。
url重写适合于tokens无须在太多url间传递的情况下,然而它有如下限制:
url在某些浏览器上最大长度为2000字符串;
若要传递到下一个资源,需要将值插入到链接中,换句话说,静态页面很难传值;
url重写需要在服务端上完成,所有的链接都必须带值,因此当一个页面存在很多链接时,处理过程会是一个不小的挑战。
某些字符,例如空格,与和问号等必须用base64编码;
所有信息都是可见的,某些情况不合适。
因为存在如上限制,url重写仅适合于信息仅在少量页面间传递,且信息不敏感。
cookies
cookies是一个很少的信息片段,可以自动在浏览器和web服务器间交互,因此cookies可存储在多个页面间传递信息。cookies作为HTTP header的一部分,其传输由HTTP协议控制。此外,你可以控制cookies的有效时间。浏览器通常支持每个网站高达20个cookies。
cookies的问题在于用户可以通过改变其浏览器设置来拒绝接受cookies。
要使用cookies,需要熟悉javax.servlet.http.coockie类以及httpServletRequest和httpServletResponse两个接口。
可以通过传递name和value两个参数给cookie类的构造函数来创建一个cookies:
Cookie cookie = new Cookie(name,value);
如下是一个创建语言选择的cookie示例:
Cookie languageSelectionCookie = new Cookie(“language”,”Italian“);
创建完一个Cookie对象后你可以设置domain,path和maxAge属性。其中maxAge属性决定Cookie何时过期。
HttpSession对象
在所有的会话跟踪技术中,httpSession对象是最强大和最通用的。一个用户可以有且最多有一个httpSession,并且不会被其他用户访问到。httpSession对象在用户第一次访问网站的时候自动被创建,你可以通过调用HttpServletRequest的getSession方法获取该对象。
ps:这是对会话的初步了解后续会发布详解博文
jsp/servlet学习三之会话管理初解的更多相关文章
- java web Servlet 学习笔记 -3 会话管理技术
Cookie和HttpSession 什么是会话: 用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 每个用户在使用浏览器与服务器进行会话的过 ...
- JSP&Servlet学习手册
JSP&Servlet学习手册 沙琪玛 书 目录 JSP 指令... 3 书写方式... 3 指令列表... 3 JSP 内置对象... 3 内置对象特点... 3 常用内置对象... 3 o ...
- 【JSP&Servlet学习笔记】4.会话管理
Http本身是无状态通信协议,要进行会话管理的基本原理,就是将需要维护的状态回应给浏览器,由浏览器在下次请求时主动发送状态信息,让Web应用程序“得知”请求之间的关联. 隐藏字段是将状态信息以窗体中看 ...
- JSP&Servlet学习笔记----第4章
HTTP是基于请求/响应的无状态的通信协议. 使服务器记得此次请求与之后请求关系的方式,叫做会话管理. 隐藏域:由浏览器在每次请求时主动告知服务器多次请求间必要的信息.仅适用于一些简单的状态 管理,如 ...
- JSP&Servlet学习笔记----第1/2章
HTML(HyperText Markup Language):超文本标记语言 HTTP(HyperText Transfer Protocol):超文本传输协议 URL(Uniform Resour ...
- jsp/servlet学习五之jsp表达式语言初窥
EL表达式是jsp中最常用的表达式之一.EL表达式以${开头,并以}结束,例如${1+1}.el表达式可以返回任意类型的值,如果el表达式的结果是一个带属性的对象,则可以利用[]或者.运算来访问该属性 ...
- JSP&Servlet学习笔记----第3章
Web容器是JSP/Servlet唯一认识的HTTP服务器. HTTP是基于请求/响应的无状态通信协议. 流程: 1.请求来到HTTP服务器 2.HTTP服务器将请求转交给Web容器 3.Web容器创 ...
- Servlet学习三:不允许直接访问jsp处理方式一过滤器
转自:http://zy19982004.iteye.com/blog/1755189
- jsp&servlet学习笔记
1.路径引用问题 一个css.jsp.html.或者javascript文件从从一个工程复制到另一工程,如果引用的时候使用的时相对路径,看似没有错误,但是却一直引用不进来,这时候要使用绝对路径,这样才 ...
随机推荐
- Java设计模式系列 — 构造器模式
想象下你有一个类,像下图所示有许多属性.假设你想让你的类不可变(顺便说一下,除非有一个好的理由不这样做,否则你应该坚持.但是我们会以另一种方式来达到要求.) public class User { p ...
- Luogu 1098 - 字符串的展开 - [字符串操作][模拟]
题目链接:https://www.luogu.org/problemnew/show/P1098 题目描述在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中 ...
- Linux sed命令 以行为单位编辑文本,或替换文本中的文字
sed -e 4a\newLine testfile 首先查看testfile中的内容如下: $ cat testfile #查看testfile 中的内容 HELLO LINUX! Linux is ...
- P5280 [ZJOI2019]线段树
题目链接:洛谷 题目描述:[比较复杂,建议看原题] 这道题太神仙了,线段树上做树形dp. 根据树形dp的套路,都是按照转移的不同情况给节点分类.这里每次modify的时候对于节点的影响也不同,所以我们 ...
- xutils android studio引用问题
然后rebuild--->关闭项目-->重启,ok public class MyApplication extends Application { @Override public vo ...
- 小程序 showModal content换行
wx.showModal({ title: '提示', content: '1.该拼团仅支持到指定取货地址自提\r\n2.拼团支付价格为拼团原价,当到达指定阶梯,拼团差价将在3个工作日内退回您的微信账 ...
- Golang--不定参数类型
1.不定参数类型 不定参数是指函数传入的参数个数为不定数量. package main import ( "fmt" ) //不定参数函数 func Add(a int, args ...
- 七、UIViewController导航栏
概述 上一节我们算是跟UIViewController打了个招呼,同时也表示我们正式介入iOS开发.本节我们将介绍UI界面的一个常用元素:导航栏. iOS为UIViewController提供了内置导 ...
- 用stm32f10x建立新的工程重要步骤
stm32f10x系列新建空的工程主要原理: 1.添加启动文件 不同的芯片类型的启动文件的容量是不同的,选择适合该芯片的容量作为启动文件. 注意:启动文件是汇编语言编写的,所以文件的后缀名为.s 2. ...
- ubuntu 安装完后对于开发需要做的事情
是从 https://www.osboxes.org/ubuntu/ 下载的vdi文件,估计vmware对应的应该也有. 1. 安装 openssh-server apt-get install op ...