Filter过滤器,不过滤特定资源

Filter过滤器,不过滤特定资源

不多说废话:

一 web.xml 

  <filter>
    <filter-name>WXBackStageFilter</filter-name>
    <filter-class>com.ccic.wechat.filter.WXBackStageFilter</filter-class>
    <init-param>
      <param-name>logonString</param-name>
      <param-value>/index.jsp;login.do</param-value>
    </init-param>
    <init-param>
      <param-name>includeString</param-name>
      <param-value>.do;.jsp</param-value>
    </init-param>
    <init-param>
      <param-name>redirectPath</param-name>
      <param-value>/index.jsp</param-value>
    </init-param>
    <init-param>
      <param-name>disabletestfilter</param-name>
      <param-value>N</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>WXBackStageFilter</filter-name>
    <url-pattern>/WXOA/*</url-pattern>
  </filter-mapping>

二 filter.java

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
configgetServletContext();
HttpServletRequest hrequest = (HttpServletRequest) request;
HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper(
(HttpServletResponse) response);
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;

String  userID= (String)req.getSession().getAttribute("userID");
String urlsString= req.getRequestURI();

//不过滤的url 
String[] str1 = {"WXOA","login.jsp"};
for(String s:str1){
String [] urlStrings= hrequest.getRequestURI().split("/");
if (urlStrings[urlStrings.length-1].equals(s )) {
chain.doFilter(request, response);
           return;
       } 
}
//不做过滤的文件
String[] str = {"css","js","jpg","png","gif"};
if (this.isContains(urlsString, str)) {// 只对指定过滤参数后缀进行过滤
chain.doFilter(request, response);
return;
}

if(StringUtil.isNotEmpty(userID)){
req.getSession().getAttribute("userPase");
chain.doFilter(request, response);
        return;

}else {
//重定向
req.getContextPath();
wrapper.sendRedirect(req.getContextPath()+"/WXOA");
            return;
}




}

public static boolean isContains(String container, String[] regx) {
boolean result = false;
for (int i = 0; i < regx.length; i++) {
String sdString=container.substring(container.lastIndexOf(".")+1);
if (sdString.equals(regx[i])) {
return true;
}
}
return result;
}

web.xml 中可定义不过滤的资源

在filter.java中获取 ,这样做比较灵活。以上代码为写死的。

猜你喜欢

转载自blog.csdn.net/xinglinglove/article/details/77308055