去掉静态文件后面的jsessionid

jsessionid的危害及去除解决方案,原文: http://randomcoder.com/articles/jsessionid-considered-harmful  

其实就是加个filter截取所有URL并进行重写: 
Java代码   收藏代码
  1. public class DisableUrlSessionFilter implements Filter {  
  2.   
  3.     @Override  
  4.     public void destroy() {  
  5.     }  
  6.   
  7.     @Override  
  8.     public void doFilter(ServletRequest request, ServletResponse response,  
  9.             FilterChain chain) throws IOException, ServletException {  
  10.         if (!(request instanceof HttpServletRequest)) {  
  11.             chain.doFilter(request, response);  
  12.             return;  
  13.         }  
  14.         HttpServletRequest httpRequest = (HttpServletRequest) request;  
  15.         HttpServletResponse httpResponse = (HttpServletResponse) response;  
  16.         if (httpRequest.isRequestedSessionIdFromURL()) {  
  17.             HttpSession session = httpRequest.getSession();  
  18.             if (session != null)  
  19.                 session.invalidate();  
  20.         }  
  21.         HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(  
  22.                 httpResponse) {  
  23.             public String encodeRedirectUrl(String url) {  
  24.                 return url;  
  25.             }  
  26.   
  27.             public String encodeRedirectURL(String url) {  
  28.                 return url;  
  29.             }  
  30.   
  31.             public String encodeUrl(String url) {  
  32.                 return url;  
  33.             }  
  34.   
  35.             public String encodeURL(String url) {  
  36.                 return url;  
  37.             }  
  38.         };  
  39.         chain.doFilter(request, wrappedResponse);  
  40.     }  
  41.   
  42.     @Override  
  43.     public void init(FilterConfig filterConfig) throws ServletException {  
  44.     }  
  45.   
  46.   
  47. }  

然后是web.xml的配置: 
Xml代码   收藏代码
  1. <!--to disable jsessionid in url  -->  
  2. <filter>  
  3.   <filter-name>  
  4.     DisableUrlSessionFilter  
  5.   </filter-name>  
  6.   <filter-class>  
  7.    com.abc.web.filter.DisableUrlSessionFilter  
  8.   </filter-class>  
  9. </filter>  
  10.   
  11. <filter-mapping>  
  12.   <filter-name>DisableUrlSessionFilter</filter-name>  
  13.   <url-pattern>/*</url-pattern>  
  14. </filter-mapping>  

你可能感兴趣的:(去掉静态文件后面的jsessionid)