|
A filter is an object that performs filtering tasks on either the request to a resource (a servlet or static content), or on the response from a resource, or both. 在配置web应用程序的描述文件中配置过滤器。
通常使用过滤器用作 1.安全认证过滤 2.登录和审核过滤 3、图片转换过滤 4.数据压缩过滤 5.加密过滤 6.Tokenizing Filters 7.Filters that trigger resource access events 8.XSL/T filters 9. Mime-type chain Filter 权限过滤率器例子: package filter;import java.io.IOException; import java.util.StringTokenizer; 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.HttpSession; import bean.UserInfo; /* * 权限过滤率器,验证用户是否有足够的权限访问相应的内容 * 过滤器是有容器类调用,首先是调用init方法,初始化过滤器,然后是调用doFilter执行过滤操作 * 最后是destroy执行释放资源的操作。 */ public class AuthorityFilter implements Filter { FilterConfig filterConfig=null;//接收容器传递给过滤器的filter配置对象 String logon="logon.jsp";//登录进入页面 String[] ignoreuri=null;//存储不需要登录就可以访问的页面 public void destroy() { filterConfig=null; ignoreuri=null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest req=(HttpServletRequest)request; HttpServletResponse rep=(HttpServletResponse)response; //判断当前请求是否为不需要登录的请求 if(this.ignoreuri!=null){ //不需要登录,继续过滤验证其他的页面 String requri=req.getRequestURI();//获得请求字符串 for(int i=0;i filterChain.doFilter(request, response); return; } } } //判断用户是否登录 HttpSession session=req.getSession(); UserInfo user=(UserInfo)session.getAttribute("session_userinfo"); if(user!=null && user.isLogon()){ filterChain.doFilter(request, response); }else{ //用户没有登录,进入登录页面 rep.sendRedirect(logon); } } /* * @filterConfig是容器传递给filter用于执行初始化操作 * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig=filterConfig; //读入登录页面连接(在用户没有登录的时候会跳转到此页面) String logon=filterConfig.getInitParameter("logonpage");//从web描述文件中读入初始化页面 if(logon!=null){ this.logon=logon; } //读取不需要登录的连接 String ignoreuri=filterConfig.getInitParameter("ignoreuri"); StringTokenizer stTok=new StringTokenizer(ignoreuri,","); int i=0; while(stTok.hasMoreElements()){ this.ignoreuri[i]=stTok.nextToken(); i++; } } |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25706637/viewspace-709637/ ,如需转载,请注明出处,否则将追究法律责任。