一般来说什么权限,日志问题都需要拦截器,servlet原生态拦截器肯定是没有框架中的拦截器好用的,特别是排除放行的内容,是不好用的,下面举个例子说明
packagefilter;importjava.io.IOException;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcom.mysql.jdbc.StringUtils;public class RoleFilter implementsFilter{public staticString defaultUrl;//不拦截的资源类型
private staticString[] ignoreTypes;
@Overridepublic voiddestroy() {
System.out.println("销毁拦截器");
}
@Overridepublic voiddoFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain chain)throwsIOException, ServletException {
HttpServletRequest request=(HttpServletRequest)servletRequest;
HttpServletResponse response=(HttpServletResponse)servletResponse;
String requestUri=request.getRequestURI();
String contextPath=request.getContextPath();
String url=requestUri.substring(contextPath.length());
boolean isIgnoreType = false;if(ignoreTypes != null){for (int i = 0; i < ignoreTypes.length; i++) {if (url.endsWith("." +ignoreTypes[i])) {
isIgnoreType= true;break;
}
}
}else{
chain.doFilter(request, response);
}if(url.indexOf("/login.action") > -1||url.indexOf("/loginbuttom.action") > -1||url.indexOf("/loginsub.action") > -1||isIgnoreType==true){
System.out.println(url+"这是登录入口或者静态资源,放行");
chain.doFilter(request, response);
}else{
String name= (String)request.getSession().getAttribute("UserName");if(name==null){
response.sendRedirect(contextPath+"/login.action");
}else{
System.out.println("用户名:"+name);
chain.doFilter(request, response);
}
}
}
@Overridepublic void init(FilterConfig filterConfig) throwsServletException {
defaultUrl= filterConfig.getInitParameter("defaultUrl");
String ignoreTypes= filterConfig.getInitParameter("ignoreTypes");if(ignoreTypes != null && !ignoreTypes.trim().equals("")){this.ignoreTypes = ignoreTypes.split(",");
}
}
}
这是拦截器的java代码,实现filter接口就行了,然后看看web.xml的配置
Web_03
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
CenterController
controller.CenterController
CenterController
*.action
RoleFilter
filter.RoleFilter
defaultUrl
http://www.baidu.com
ignoreTypes
gif,bmp,png,jpg,js,flash,css
RoleFilter
/*
配置就是这么简单,静态元素就在
ignoreTypes里面配置就可以了,非常简单