会话跟踪技术允许服务器确定访问站点的用户,用户访问站点的次数和用户停留站点的时间段
客户端和服务器之间的会话ID和状态信息,通常有四种方法:
1,使用servlet API中的Session会话机制(存储在Web服务器)
2,使用cookie(存储在客户端浏览器)
3,URL重写:URL可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对
4,隐藏表单域:,非常适合需要大量数据存储的会话应用
Session会话管理:使用cookie和附加URL参数都可以将上一次请求的状态信息传递到下一次请求中,但是如果传递的状态信息较多,将极大降低网络传输效率和增大服务器端程序处理的难度。
客户端需要接收、记忆和回送 Session的会话标识号,Session可以且通常是借助cookie来传递会话标识号。
1.Servlet API规范中定义了一个HttpSession接口,HttpSession接口定义了各种管理和操作会话状态的方法。
2.HttpSession对象是保持会话状态信息的存储结构,一个客户端在WEB服务器端对应一个各自的HttpSession对象。
3.WEB服务器并不会在客户端开始访问它时就创建HttpSession对象,只有客户端访问某个能与客户端开启会话的Servlet程序时,WEB应用程序才会创建一个与该客户端对应的HttpSession对象。
4.WEB服务器为HttpSession对象分配一个独一无二的会话标识号,然后在响应消息中将这个会话标识号传递给客户端。客户端需要记住会话标识号,并在后续的每次访问请求中都把这个会话标识号传送给WEB服务器,WEB服务器端程序依据回传的会话标识号就知道这次请求是哪个客户端发出的,从而选择与之对应的HttpSession对象
cookie是存放在客户端的机器上面,如果客户端的浏览器出于安全方法的考虑,在浏览器的隐私设置中阻止了所有的cookie 服务器就没有办法把一些信息写入到客户端,使用cookie就没有用了
Java Servlet API中为我们提供了会话跟踪的另一种机制,通常的做法是重写客户请求的URL,把Session ID添加到URL信息中
URL重写其实就是在URL后面加上一个jsessionid参数,jsessionid的参数值是唯一的,所以可以跟踪某一会话。
HttpServletResponse接口中提供了2种URL重写的方法。
String encodeURL(String url) 重写给定的url,包含Session ID
String encodeRedirectURL(String url) 使用sendRedirect 方法时,重写给定的url,包含SessionID
隐藏表单域:隐藏HTML表单域通常是用来存储状态信息
隐藏的变量操作就像HTML输入域一样,提交页面给服务器时,客户端会把该隐藏域的名/值对传给服务器
客户端的页面是不能看到或是修改隐藏的HTML变量的值。
Servlet API中使用HttpSession和cookie来跟踪客户的状态
getSession方法返回与客户端请求绑定的会话对象。
会话跟踪的四大技术分别是:使用Session和cookie,URL重写,隐藏表单域



