去掉url 后面的jsessionid

我们使用urlrewrite将返回的url信息直接过滤掉,找出其中所有包jsession字样的内容,把它们删掉。

我们的项目使用maven,首先在pom文件里加入以下配置
org.tuckey
urlrewritefilter
3.2.0

如果不是maven项目,那么需要自行去找urlrewritefilter-3.2.0.jar的下载

之后配置web.xml文件,启用这个filter,如下:
UrlRewriteFilter
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
            logLevel
            WARN
       
UrlRewriteFilter
/*

请注意filter的顺序,虽然我不清楚具体顺序有什么要求,因为filter太多,一一去试太麻烦了。但有一次我将它放在所有filter的最后,它没起作用。我猜想可能和seam的filter之间的顺序有关。

目前我将这个filter放在第一个。

之后我们还要写一个 UrlRewrite的配置文件,在WEB-INF目录下新建urlrewrite.xml文件,其内容如下:
        "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">


   
        ^(.*);jsessionid=.*$
        $1
   

   
        *;jsessionid=*
        $1
   


其中的outbound-rule表示是返回给客户端的url,如果是访问的url,那么直接是rule。(比如我要将所有到某个地址的url,全部重定向到另一个地址,就可以用rule标签)

from表示规则,用正则表达式表示。to表示满足规则后转换为什么内容。S1表示from中第一段正则表达式匹配的内容。(比如用 *;jsessionid=*匹配了 localhost:8080/mywebapp/test.jsp?cid=1;jsessionid=123456,那么最后返回给浏览器的地址只会是 localhost:8080/mywebapp/test.jsp?cid=1。后面的jsession就被去掉了)

到这里就全部完成了,重启就能看到效果。

你可能感兴趣的:(java)