保存session id有几种方式

1.第一种就是大家喜闻乐见的使用cookie中JSESSIONID=sessionID的方式存储到客户端,然后发送到服务器端,就可以从服务器的内存中根据ID找到HttpSession对象。

2.但是要注意,浏览器是可以选择将cookie进行人为禁止的,所以就必须要有其他的机制可以保证cookie禁止的状态下仍然可以发送session id到服务器,经常采用的方式就是URL重写,使用URL重写的方式也有2种:

    1.作为URL的附加信息,比如    http://...../xxx;jsessionid=D75aPnrF7C2HByOK3vjF

    2.作为查询字符串附加在URL后面,比如:http://……?……&jsessionid=PnrF7OK3vjC2HByFD75a

    但是这种方式也有很大的缺陷:

    如果使用这样的方式的话,所有的请求地址后面都需要添加这些session id信息,但如此的话,就以为着,本项目中不能存在任何的静态的页面,因为静态页面的信息,服务器端是会原样发送的客户端,而针对动态页面JSP会进行编译成Servlet再发送到客户端,如果链接中带有了数据交互的信息,静态页面后附加的sessio id信息就会失效,这是缺点之一;还有一大弊端,就是关于session失效的问题,当从保留的链接中找回原地址,到服务器端,session就会发现已经失效过期,这就非常的头疼了。

3.还有一种方式就是,使用表单的隐藏域的功能,服务器端会自动修改表单,添加一个隐藏字段,就可以让用户在提交表单的时候,把sessionID传回服务器。

    但这样也有缺陷:

    无法完成session的跟踪,因为页面的信息都是由表单进行提交,需要为每一个表单项里添加隐藏域的功能,而且如果点击超链接,就更不可能带着隐藏域里的信息进行传递session id的值了,所以,这也是最大的缺点。

你可能感兴趣的:(session,id)