使手机浏览支持session的解决方式

      因为有不少手机不支持cookie。而sessionid默认是通过cookie来存储和传递的。所以会出现收集不支持session的情况。

 

      首先我们先搞清楚Session,Cookie, Url重写这些概念, 然后在这个基础上阐述如何利用Url重写在Wap门户的开发中维护Session.

 

     什么是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,还有一个很长的二进制的字符串,是SessionID的值。实质上 URL 重写是通过向 URL 连接添加参数,并把 session ID 作为值包含在连接中。然而,为使这生效,你需要为你的 servlet 响应部分的每个连接添加 session ID.

     知道了Session,Cookie, Url的概念,那么下面的这个问题就不难回答了:

     Wap中如何进行Session管理?

 

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

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

    1  JSP实现

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

包含 session ID,如果你需要使用重定向,可以使用response.encodeRedirectURL () 来对 URL 进行编码。 encodeURL() 及 encodeRedirectedURL () 方法首先判断 cookies 是否被浏览器支持;如果支持,则参数 URL 被原样返回,session ID 将通过 cookies 来维持。

代码示例:

不使用Url重写:

<ahref=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%>_fcksavedurl=" <%=myURL%>" _fcksavedurl="

<%=myURL%>" _fcksavedurl="<%=myURL%>" >

 

      2  JSTL实现

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

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

     3  Struts实现:

struts配置文件中:

设置属性

redirect,contextRelative

 

<forwardname="listArticlesForBlog"path="/template/listArticlesForBlog.jsp"redirect="true" contextRelative="true"/>

 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值