14 楼look_(随便看看)回复于 2006-01-16 15:00:21 得分 10
自己重写session:
1。用户第一次进入系统,从session中取出session ID :String sessionID=session.getID();
2。在以后的跳转页面的url带上session ID ,这样sesison就不会丢失: "/wap/test.jsp;jsessionID="+sessionID
16 楼funcreal(为中华之崛起而编程)回复于 2006-01-17 10:06:46 得分 90
楼上很多兄弟对session和cookie理解的不够透彻。
session是维护会话的,可以算一种规则,它不是某种实现机制。它的实现有两种方式,一种是利用cookie,一种是url编码。
wap网关对于cookie的支持非常有限。所以会造成session丢失的问题。一般来说都应该使用url编码。回复人: look_(随便看看)所说的很对,但是url编码是jsp的内建机制,不需要自己来实现。可以使用response.encodeURL来做就可以了。搂主别怕麻烦,这不是你该不该的问题,这是你初期设计上的问题,所以你必须得改。而且很多书中都建议使用url编码方式。至于为什么,原因很简单。大家现在把自己的浏览器中的cookie禁掉,看看你开发的web有几个能用?没了cookie,而你又没有使用url编码,自然session就没办法工作了。
Trackback:http://topic.csdn.net/t/20051231/09/4492177.html#
利用Url进行Session重写如何实现?
JSP实现
把 session ID 加到一个连接可以使用一对方法来简化:response.encodeURL() 使 URL
包含 session ID,如果你需要使用重定向,可以使用 response.encodeRedirectURL ()
来对 URL 进行编码。
encodeURL () 及 encodeRedirectedURL () 方法首先判断 cookies 是否被浏览器支持;
如果支持,则参数 URL 被原样返回,session ID 将通过 cookies 来维持。
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"/>