有你在真好 的个人博客
关于session和cookie以及url
阅读:2319 添加日期:2021/3/22 16:07:19

什么是Session, 什么是Cookie?

Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。Cookie是客户端的存储空间,由浏览器来维持。


什么是Url重写?

服务器也可以通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。

可以试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,而这个Cookie的名字就是JSESSIONID,还有一个很长的16进制的字符串,是SessionID的值。

实质上 URL 重写是通过向 URL 连接添加参数,并把 session ID 作为值包含在连接中。然而,为使这生效,你需要为你的 servlet 响应部分的每个连接添加 session ID.


Wap中如何进行Session管理?

Wap与PC不同之处在与Wap1.x不支持Session与Cookie,Wap2.0虽然支持但是只有协议支持还是不行,还要看手机终端支不支持?所以我们的解决方法就是完全不依赖Wap协议,完全不依赖手机终端,使用Url重写进行Session的维护,这个方法只与服务器端有关.



利用Url进行Session重写如何实现?

JSP实现 

把 session ID 加到一个连接可以使用一对方法来简化:response.encodeURL() 使 URL 

包含 session ID,如果你需要使用重定向,可以使用 response.encodeRedirectURL () 

来对 URL 进行编码。 

 encodeURL () 及 encodeRedirectedURL () 方法首先判断 cookies 是否被浏览器支持;

如果支持,则参数 URL 被原样返回,session ID 将通过 cookies 来维持。

代码示例:

不使用Url重写:

<a href=http://wwww.myserver.com/servelet/user;userName=awaysrain>Link</a>

使用Url重写:

通过HttpServletResponse接口中的encodeURL()方法编码.

String myURL = response.encodeURL(http://wwww.myserver.com/servelet/user);

<a href= <%=myURL%>  >

JSTL实现

<c:url>可以为会话管理重写 URL

<a href="<c:url value='/content/sitemap.jsp'/>">View sitemap</a>



 

Struts实现:

struts配置文件中: 

设置属性redirect, contextRelative

<forward name="listArticlesForBlog"

   path="/template/listArticlesForBlog.jsp" 

   redirect="true"  

   contextRelative="true"/>

最后一个比较搞的问题:

那么在浏览器允许cookie的情况下,不要求浏览器关闭cookie的情况下使用

url重写如何实现?

http://tomcat.apache.org/tomcat-5.5-doc/config/context.html 

Context支持cookies参数。  设置cookies="false",强制只从url解析sessionid。

cookies  

Set to true if you want cookies to be used for session identifierContext

communication if supported by the client (this is the default). Set to 

false if you want to disable the use of cookies for session identifier 

communication, and rely only on URL rewriting by the application


ICP备案号:苏ICP备14035786号-1 苏公网安备 32050502001014号