由于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学习三之会话管理初解的更多相关文章

  1. java web Servlet 学习笔记 -3 会话管理技术

     Cookie和HttpSession 什么是会话: 用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 每个用户在使用浏览器与服务器进行会话的过 ...

  2. JSP&Servlet学习手册

    JSP&Servlet学习手册 沙琪玛 书 目录 JSP 指令... 3 书写方式... 3 指令列表... 3 JSP 内置对象... 3 内置对象特点... 3 常用内置对象... 3 o ...

  3. 【JSP&Servlet学习笔记】4.会话管理

    Http本身是无状态通信协议,要进行会话管理的基本原理,就是将需要维护的状态回应给浏览器,由浏览器在下次请求时主动发送状态信息,让Web应用程序“得知”请求之间的关联. 隐藏字段是将状态信息以窗体中看 ...

  4. JSP&Servlet学习笔记----第4章

    HTTP是基于请求/响应的无状态的通信协议. 使服务器记得此次请求与之后请求关系的方式,叫做会话管理. 隐藏域:由浏览器在每次请求时主动告知服务器多次请求间必要的信息.仅适用于一些简单的状态 管理,如 ...

  5. JSP&Servlet学习笔记----第1/2章

    HTML(HyperText Markup Language):超文本标记语言 HTTP(HyperText Transfer Protocol):超文本传输协议 URL(Uniform Resour ...

  6. jsp/servlet学习五之jsp表达式语言初窥

    EL表达式是jsp中最常用的表达式之一.EL表达式以${开头,并以}结束,例如${1+1}.el表达式可以返回任意类型的值,如果el表达式的结果是一个带属性的对象,则可以利用[]或者.运算来访问该属性 ...

  7. JSP&Servlet学习笔记----第3章

    Web容器是JSP/Servlet唯一认识的HTTP服务器. HTTP是基于请求/响应的无状态通信协议. 流程: 1.请求来到HTTP服务器 2.HTTP服务器将请求转交给Web容器 3.Web容器创 ...

  8. Servlet学习三:不允许直接访问jsp处理方式一过滤器

    转自:http://zy19982004.iteye.com/blog/1755189

  9. jsp&servlet学习笔记

    1.路径引用问题 一个css.jsp.html.或者javascript文件从从一个工程复制到另一工程,如果引用的时候使用的时相对路径,看似没有错误,但是却一直引用不进来,这时候要使用绝对路径,这样才 ...

随机推荐

  1. Java设计模式系列 — 构造器模式

    想象下你有一个类,像下图所示有许多属性.假设你想让你的类不可变(顺便说一下,除非有一个好的理由不这样做,否则你应该坚持.但是我们会以另一种方式来达到要求.) public class User { p ...

  2. Luogu 1098 - 字符串的展开 - [字符串操作][模拟]

    题目链接:https://www.luogu.org/problemnew/show/P1098 题目描述在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中 ...

  3. Linux sed命令 以行为单位编辑文本,或替换文本中的文字

    sed -e 4a\newLine testfile 首先查看testfile中的内容如下: $ cat testfile #查看testfile 中的内容 HELLO LINUX! Linux is ...

  4. P5280 [ZJOI2019]线段树

    题目链接:洛谷 题目描述:[比较复杂,建议看原题] 这道题太神仙了,线段树上做树形dp. 根据树形dp的套路,都是按照转移的不同情况给节点分类.这里每次modify的时候对于节点的影响也不同,所以我们 ...

  5. xutils android studio引用问题

    然后rebuild--->关闭项目-->重启,ok public class MyApplication extends Application { @Override public vo ...

  6. 小程序 showModal content换行

    wx.showModal({ title: '提示', content: '1.该拼团仅支持到指定取货地址自提\r\n2.拼团支付价格为拼团原价,当到达指定阶梯,拼团差价将在3个工作日内退回您的微信账 ...

  7. Golang--不定参数类型

    1.不定参数类型 不定参数是指函数传入的参数个数为不定数量. package main import ( "fmt" ) //不定参数函数 func Add(a int, args ...

  8. 七、UIViewController导航栏

    概述 上一节我们算是跟UIViewController打了个招呼,同时也表示我们正式介入iOS开发.本节我们将介绍UI界面的一个常用元素:导航栏. iOS为UIViewController提供了内置导 ...

  9. 用stm32f10x建立新的工程重要步骤

    stm32f10x系列新建空的工程主要原理: 1.添加启动文件 不同的芯片类型的启动文件的容量是不同的,选择适合该芯片的容量作为启动文件. 注意:启动文件是汇编语言编写的,所以文件的后缀名为.s 2. ...

  10. ubuntu 安装完后对于开发需要做的事情

    是从 https://www.osboxes.org/ubuntu/ 下载的vdi文件,估计vmware对应的应该也有. 1. 安装 openssh-server apt-get install op ...