读书人

在过滤器中对ignoreURL进展处理

发布时间: 2012-12-23 11:28:15 作者: rapoo

在过滤器中对ignoreURL进行处理

? ? ? 公司的框架提供了对页面表格的验证功能,但必须要通过webfaster(类似于action)转到页面才会解析,因此在利用过滤器判断session是否失效时一定要放掉login.webfaster,于是写了一个过滤器来实现对ignoreURL的处理

过滤器代码:

?

import java.util.ArrayList;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.HttpSession;import java.io.IOException;public class FilterTest implements Filter{    protected String ignoreURL = null;    protected String [] allIgnoreURL = null;     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        HttpServletRequest req = (HttpServletRequest) request;        HttpSession session = req.getSession();        String url=req.getRequestURL().toString();        url= url.substring(url.lastIndexOf("/"));//获取*.webfaster        if(isIgnoreURL(url)){//如果是过滤器要忽略的url则继续执行请求            chain.doFilter(request, response);        }else if(session.getAttribute("userinfo")==null){//若session失效则通过relogin.webfaster转到login.html页面            StringBuffer scriptString=new StringBuffer();             scriptString.append(" <script>\n\r");             scriptString.append("self.top.location.href=\""+"relogin.webfaster"+"\"\n\r");            scriptString.append(" </script>\n\r");             response.getOutputStream().print(scriptString.toString());          }else{            chain.doFilter(request, response);        }    }    public void init(FilterConfig config) throws ServletException {        this.ignoreURL=config.getInitParameter("ignoreURL");        allIgnoreURL=ignoreURL.split(",");       }        public boolean isIgnoreURL(String url)    {      for (int i = 0; i < this.allIgnoreURL.length; i++)      {        if (url.equals(this.allIgnoreURL[i])) {          return true;        }      }      return false;    }}

?WEB.XML中的配置:

 <filter>             <filter-name>FilterTest</filter-name>             <filter-class>com.servyou.filter.FilterTest</filter-class>       <init-param>            <param-name>ignoreURL</param-name>            <param-value>            /relogin.webfaster,/login.webfaster            </param-value>        </init-param>       </filter>      <filter-mapping>           <filter-name>FilterTest</filter-name>           <url-pattern>*.webfaster</url-pattern>      </filter-mapping> 

读书人网 >编程

热点推荐