梁 兄

QQ: 160216918 QQ群: 26678700

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  56 Posts :: 5 Stories :: 383 Comments :: 0 Trackbacks

使用resin自己的url rewrite功能来传递jsessionid参数。


一) 默认的jsessionid
         默认配置中,jsessionid以cookie的方式在页面传递,即在http请求的header中有以下内容:

                    Cookie: JSESSIONID=abcrmF3Gx-5Z-hhkgHfzr

         此时resin/conf/resin.conf中的配置为默认的:
         <session-config>
                <enable-url-rewriting>false</enable-url-rewriting>
         </session-config>
 
         这种方法有个问题,就是用户禁用cookie的时候,我们就没办法使用了。我们需要寻找其它更保险的方法,请看方法二):


二)使用url rewrite传递jsessionid
       将jsessionid放到url中,这样可以不使用cookie。不使用cookie,可以避免遭遇用户禁用cookie的情况。另外,有安全性方面的考虑。

        使用url rewrite有两种方式[使用webwork框架,它比Structs优秀]: 
          1. http://***/test/welcome.action;jsessionid=abcLFJLwoeurlsjdlf?...
              这种是将jsessionid放在action后面
              需要修改resin/conf/resin.conf中的配置为:
              <session-config>
                     <enable-cookies>false</enable-cookies>
                     <enable-url-rewriting>true</enable-url-rewriting>
              </session-config>

          2. http://***/~jid=abcLFJLwoeurlsjdlf/test/welcome.action?...
              除了要按照前面的同样修改resin/conf/resin.conf中的配置为:
              <session-config>
                     <enable-cookies>false</enable-cookies>
                     <enable-url-rewriting>true</enable-url-rewriting>
              </session-config>

              还要在resin/conf/resin.conf中增加alternate-session-url-prefix的设置:
              <server>   
                    <class-loader>...</class-loader>
                    <alternate-session-url-prefix>/~jid=</alternate-session-url-prefix>
              ......
  
              注意alternate-session-url-prefix的位置,不是在<session-config>里面.

              测试中发现,按照这种方式配置后,url被重写为
              http://***/~jid=abcLFJLwoeurlsjdlf/test/welcome.action?...

              在浏览器中访问会产生http 404 file not found 错误,经反复检查(吐血的经历), 发现需要修改resin/conf/resin.conf中的配置:
              <server>
               ......
                     <host id="" root-directory=".">
                     <!--
                     <web-app id="/" document-directory="webapps/ROOT"/>
                      -->
                     </host>
              </server>
  
              将<web-app id="/" document-directory="webapps/ROOT"/>的设置屏蔽后才能正常访问http://***/~jid=abcLFJLwoeurlsjdlf/test/welcome.action?...这样的地址。

posted on 2007-12-04 09:51 梁-兄 阅读(986) 评论(0)  编辑 收藏 引用 所属分类: Java

标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航: