mobile web for no cookie session

由于一些低端手机不支持cookie,造成登录不上,在网上也查过都用url重写(a.普通方式实现 b.jstl-<c:url/> c.webwork-<ww:url/>)来实现,要是若大的项目都这么来工作量会很大,最终找到了一个解决方法采用resin url rewrite来传递jsessionid,以下配置为resin4.0.23

1.resin.conf默认配置中,jsessionid以cookie的方式在页面传递,即:

<session-config> 
  <enable-url-rewriting>false</enable-url-rewriting> 
</session-config>

2.使用url rewrite有两种方式:

  a.http://www.test.com/login.action;jsessionid=asdfasdfg2312?...

  这种是将jsessionid放在action后面,需要修改resin/conf/resin.conf中的配置为: 

<host id="" root-directory="/usr/work/deploy/mobile">
  <web-app id="/" root-directory=".">
    <session-config>
      <!--<reuse-session-id>true</reuse-session-id>-->
      <enable-cookies>false</enable-cookies> 
      <enable-url-rewriting>true</enable-url-rewriting> 
    </session-config>
  </web-app>
</host>

  b.http://www.test.com/~jid=asdfasdfg2312/login.action?... 

  还要在resin/conf/resin.conf中增加session-url-prefix的设置:

<cluster id="app-tier">
  ...
  <session-url-prefix>/~jid=</session-url-prefix>
  ...
  <host id="" root-directory="/usr/work/deploy/mobile">
    <web-app id="/" root-directory=".">
      <session-config>
        <!--<reuse-session-id>true</reuse-session-id>-->
        <enable-cookies>false</enable-cookies> 
        <enable-url-rewriting>true</enable-url-rewriting> 
      </session-config>
    </web-app>
  </host>
</cluster>

参考:

http://www.caucho.com/resin-4.0/admin/deploy-ref.xtp#sessionconfig

http://www.blogjava.net/aoxj/archive/2007/12/05/165538.html

posted @ 2012-08-15 11:20  WenEric  阅读(343)  评论(0编辑  收藏  举报