首页 > 代码库 > Struts2 action 的 ;jsessionid=xxx 使找不到页面 Bug 的解决 [转帖]

Struts2 action 的 ;jsessionid=xxx 使找不到页面 Bug 的解决 [转帖]

一: jsessionid 简介: 
因为Session默认是需要Cookie支持的 有些客户浏览器是关闭Cookie的, 
这个时候就需要在URL中指定服务器上的jssessionid标识.如果你的web应用带有 jsessionid ,首先你的web应用不安全,而且也不利于 SEO (亦不美观). 

二: Java代码: 

 1 import javax.servlet.*; 2 import javax.servlet.http.HttpServletRequest; 3 import javax.servlet.http.HttpServletResponse; 4 import javax.servlet.http.HttpServletResponseWrapper; 5 import javax.servlet.http.HttpSession; 6 import java.io.IOException; 7  8 public class DisableUrlSessionFilter implements Filter { 9 10     public void doFilter(ServletRequest request, ServletResponse response,11             FilterChain chain) throws IOException, ServletException {12         if (!(request instanceof HttpServletRequest)) {13             chain.doFilter(request, response);14             return;15         }16 17         HttpServletRequest httpRequest = (HttpServletRequest) request;18         HttpServletResponse httpResponse = (HttpServletResponse) response;19 20         if (httpRequest.isRequestedSessionIdFromURL()) {21             HttpSession session = httpRequest.getSession();22             if (session != null)23                 session.invalidate();24         }25         // wrap response to remove URL encoding26         HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(27                 httpResponse) {28             @Override29             public String encodeRedirectUrl(String url) {30                 return url;31             }32 33             public String encodeRedirectURL(String url) {34                 return url;35             }36 37             public String encodeUrl(String url) {38                 return url;39             }40 41             public String encodeURL(String url) {42                 return url;43             }44         };45         chain.doFilter(request, wrappedResponse);46     }47 48     public void init(FilterConfig config) throws ServletException {49     }50 51     public void destroy() {52     }53 }

三: web.xml配置filter: 

 1     <filter> 2            <filter-name>jsessionid</filter-name> 3            <filter-class> 4             xinyu.filter.DisableUrlSessionFilter 5            </filter-class> 6         </filter> 7         <filter-mapping> 8            <filter-name>jsessionid</filter-name> 9            <url-pattern>/*</url-pattern>10         </filter-mapping>

 

Struts2 action 的 ;jsessionid=xxx 使找不到页面 Bug 的解决 [转帖]