=相关新闻=
 =本站服务=
 =最新作品=
海西品牌网
模拟整形网
更多技术文档...
 =站长信息=
NAME: ヤ從伈゛開始
WEB: http://www.987114.cn
QQ: 540573223
EMAIL: 540573223@qq.com
AGE: MiMi
怀旧论坛
计数统计
当然位置: 海西品牌网 >>java编程>> 技术文档 >>正文          保护视力色:默认色 杏仁黄 秋叶褐 胭脂红 芥末绿 天蓝 雪青 灰 银河白(默认色)

去除Jsessionid

发布时间:2009-11-03 浏览数:加载中…

在jap静态页面生成时会出现加上Jsessionid=5F4771183629C9834F8382E23BE13C4C。而静态页面地址就成了类似www.987114.cn/Jsessionid=5F4771183629C9834F8382E23BE13C4C?a.html,访问的页面就不存在。

sessionid是作为一个临时cookie放在浏览器端的。session的具体信息放在服务器端。每次浏览器发出的请求,都会在http header里 带上 sessionid来标识自己。
URL 重写是由 操作自动执行的。如果 JSP 容器检测到一个存储用户当前会话标识的 cookie,那么就不必进行重写。但是,如果不存在这样的 cookie,那么 生成的所有 URL 都会被重写以编码会话标识。注:如果在随后的请求中存在适当的 cookie,那么 将停止重写 URL 以包含该标识。

我们在过滤器上做点手脚就可以解决这样的问题

代码:

package filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class RemoveJsessionFilter implements Filter {

 public void destroy() {
  // TODO Auto-generated method stub
  
 }

 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  // TODO Auto-generated method stub
  Hsrw wrappedResponse = clearSessionId(request, response);
   chain.doFilter(request, wrappedResponse);
 }

 public void init(FilterConfig arg0) throws ServletException {
  // TODO Auto-generated method stub
  
 }
 private Hsrw clearSessionId(ServletRequest request, ServletResponse response) {
    HttpServletRequest httpRequest = (HttpServletRequest) request;
    HttpServletResponse httpResponse = (HttpServletResponse) response;
    // clear session if session id in URL
    if (httpRequest.isRequestedSessionIdFromURL()) {
     HttpSession session = httpRequest.getSession();
     if (session != null)
      session.invalidate();
    }
    Hsrw wrappedResponse = new Hsrw(httpResponse);
    return wrappedResponse;
    // process next request in chain
   }
}
 

web配置:

<filter>
<filter-name>RemoveJsessionFilter</filter-name>
<filter-class>filter.RemoveJsessionFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>RemoveJsessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
 <servlet-mapping>

本文首发:java编程(http://www.987114.cn:80/blog/),转载请注明出处。
文章来源于:java编程 http://www.987114.cn:80/blog/

 

评论
美国/加拿大的网友: 2009-11-20
太帅了
中国的网友: 2009-12-19
太帅了
美国的网友: 2009-12-21
太帅了
广东省东莞市的网友: 2009-12-21
太帅了
 =友情链接=
海西品牌网 模拟整形网 海西论坛 爱美尔整形
版权所有:海路传媒