zoukankan      html  css  js  c++  java
  • 去除url中自带的jsessionid

    web.xml中配置Filter:

    <filter>
       <filter-name>jsessionid</filter-name>
       <filter-class>
        cn.iautos.mall.filter.RemoveUrlSessionFilter
       </filter-class>
    </filter>
    <filter-mapping>
       <filter-name>jsessionid</filter-name>
       <url-pattern>/*</url-pattern>
    </filter-mapping>
      
    

    java代码如下:

    package cn.iautos.mall.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.HttpServletResponseWrapper;
    import javax.servlet.http.HttpSession;
    
    /**
     * 去除url中的jsessionid
     * @author xuzhenmin
     * @version 2014-5-30  下午2:33:34
     */
    public class RemoveUrlSessionFilter implements Filter {
    
       
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            // skip non-http requests
            if (!(request instanceof HttpServletRequest)) {
                 chain.doFilter(request, response);
                return;
             }
    
             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();
             }
    
            // wrap response to remove URL encoding
             HttpServletResponseWrapper wrappedResponse = new HttpServletResponseWrapper(httpResponse) {
                 @Override
                public String encodeRedirectUrl(String url) {
                    return url;
                 }
    
             
                public String encodeRedirectURL(String url) {
                    return url;
                 }
    
               
                public String encodeUrl(String url) {
                    return url;
                 }
    
               
                public String encodeURL(String url) {
                    return url;
                 }
             };
    
            // process next request in chain
             chain.doFilter(request, wrappedResponse);
         }
    
        /**
          * Unused.
         */
        public void init(FilterConfig config) throws ServletException {
         }
    
        /**
          * Unused.
         */
        public void destroy() {
         }
    }
    
  • 相关阅读:
    mysql的安装、启动和基础配置 —— windows版本
    Navicat安装及简单使用
    期货黄金与现货黄金比较
    android 网络编程--socket tcp/ip udp http之间的关系
    socket、tcp、udp、http 的认识及区别
    Android数据传递的五种方法汇总
    android 应用程序Activity之间数据传递与共享的几种途径
    Android数据存储的五种方法汇总
    Android终端与服务器数据传输解决方案
    转载 解决Android与服务器交互大容量数据问题
  • 原文地址:https://www.cnblogs.com/xuzhenmin/p/3761104.html
Copyright © 2011-2022 走看看