java过滤器相信有一点servlet经验的,应该都清楚怎么配置,怎么写。所以以下的关于配置方面,我不多说,这篇文章主要讲解的是,当我们有些URI不需要判断时,直接放行的配置。废话不多说,贴代码。
过滤器配置:
public class AdminUserFilter implements Filter{
private FilterConfig config=null;
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String uris=config.getInitParameter("escapeURI");
String[] uri = StringUtils.isEmpty(uris) ? null : uris.split(",");
String cUri = request.getRequestURI();
for(String u : uri){
if(!StringUtils.isEmpty(u) && cUri.contains(u)) {
chain.doFilter(request, response);
}
}
HttpSession session = request.getSession();
AdminUser adminUser = (AdminUser)session.getAttribute("adminUser");
if(null != adminUser) {
chain.doFilter(request, response);
} else {
response.sendRedirect(request.getServletPath() + "/login.jsp");
}
}
public void init(FilterConfig arg0) throws ServletException {
this.config=arg0;
}
}
以上为过滤器代码,可能有些不明白,escapeURI是什么?没关系,看下面的xml配置文件里的配置
<filter>
<filter-name>adminUserFilter</filter-name>
<filter-class>com.ww.fz.common.AdminUserFilter</filter-class>
<init-param>
<param-name>escapeURI</param-name>
<param-value>
/main/loginValidate.do
</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>adminUserFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
上面的代码是过滤器的配置,如果我们还有URI需要过滤,可以在第一个后面加上逗号,然后继续写URI,这里配置的所有URI,都可以放过。