zoukankan      html  css  js  c++  java
  • Java四个有用的过滤器Filter

    一、使浏览器不缓存页面的过滤器    
    import javax.servlet.*;   
    import javax.servlet.http.HttpServletResponse;   
    import java.io.IOException;   
      
      
    public class ForceNoCacheFilter implements Filter {   
      
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException   
      
       ((HttpServletResponse) response).setHeader("Cache-Control","no-cache");   
       ((HttpServletResponse) response).setHeader("Pragma","no-cache");   
       ((HttpServletResponse) response).setDateHeader ("Expires", -1);   
       filterChain.doFilter(request, response);   
      
      
    public void destroy()   
      
      
      
         public void init(FilterConfig filterConfig) throws ServletException   
      
      
      
      
    二、检测用户是否登陆的过滤器   
      
    import javax.servlet.*;   
    import javax.servlet.http.HttpServletRequest;   
    import javax.servlet.http.HttpServletResponse;   
    import javax.servlet.http.HttpSession;   
    import java.util.List;   
    import java.util.ArrayList;   
    import java.util.StringTokenizer;   
    import java.io.IOException;   
      
      
    public class CheckLoginFilter   
    implements Filter   
      
         protected FilterConfig filterConfig = null;   
         private String redirectURL = null;   
         private List notCheckURLList = new ArrayList();   
         private String sessionKey = null;   
      
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException   
      
       HttpServletRequest request = (HttpServletRequest) servletRequest;   
       HttpServletResponse response = (HttpServletResponse) servletResponse;   
      
        HttpSession session = request.getSession();   
       if(sessionKey == null)   
        
        filterChain.doFilter(request, response);   
        return;   
        
       if((!checkRequestURIIntNotFilterList(request)) && session.getAttribute(sessionKey) == null)   
        
        response.sendRedirect(request.getContextPath() + redirectURL);   
        return;   
        
       filterChain.doFilter(servletRequest, servletResponse);   
      
      
    public void destroy()   
      
       notCheckURLList.clear();   
      
      
    private boolean checkRequestURIIntNotFilterList(HttpServletRequest request)   
      
       String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());   
       return notCheckURLList.contains(uri);   
      
      
    public void init(FilterConfig filterConfig) throws ServletException   
      
       this.filterConfig = filterConfig;   
       redirectURL = filterConfig.getInitParameter("redirectURL");   
       sessionKey = filterConfig.getInitParameter("checkSessionKey");   
      
       String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");   
      
       if(notCheckURLListStr != null)   
        
        StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");   
        notCheckURLList.clear();   
        while(st.hasMoreTokens())   
         
         notCheckURLList.add(st.nextToken());   
         
        
      
      
      
    三、字符编码的过滤器   
      
    import javax.servlet.*;   
    import java.io.IOException;   
      
      
    public class CharacterEncodingFilter   
    implements Filter   
      
    protected FilterConfig filterConfig = null;   
    protected String encoding = "";   
      
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException   
      
             if(encoding != null)   
              servletRequest.setCharacterEncoding(encoding);   
             filterChain.doFilter(servletRequest, servletResponse);   
      
      
    public void destroy()   
      
       filterConfig = null;   
       encoding = null;   
      
      
         public void init(FilterConfig filterConfig) throws ServletException   
      
              this.filterConfig = filterConfig;   
             this.encoding = filterConfig.getInitParameter("encoding");   
      
      
      
      
    四、资源保护过滤器   
      
      
    package catalog.view.util;   
      
    import javax.servlet.Filter;   
    import javax.servlet.FilterConfig;   
    import javax.servlet.ServletRequest;   
    import javax.servlet.ServletResponse;   
    import javax.servlet.FilterChain;   
    import javax.servlet.ServletException;   
    import javax.servlet.http.HttpServletRequest;   
    import java.io.IOException;   
    import java.util.Iterator;   
    import java.util.Set;   
    import java.util.HashSet;   
    //   
    import org.apache.commons.logging.Log;   
    import org.apache.commons.logging.LogFactory;   
      
      
    public class SecurityFilter implements Filter {   
     //the login page uri   
     private static final String LOGIN_PAGE_URI = "login.jsf";   
        
     //the logger object   
     private Log logger = LogFactory.getLog(this.getClass());   
        
     //a set of restricted resources   
     private Set restrictedResources;   
        
       
     public void init(FilterConfig filterConfig) throws ServletException {   
      this.restrictedResources = new HashSet();   
      this.restrictedResources.add("/createProduct.jsf");   
      this.restrictedResources.add("/editProduct.jsf");   
      this.restrictedResources.add("/productList.jsf");   
       
        
       
     public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)   
       throws IOException, ServletException {   
      this.logger.debug("doFilter");   
         
      String contextPath = ((HttpServletRequest)req).getContextPath();   
      String requestUri = ((HttpServletRequest)req).getRequestURI();   
         
      this.logger.debug("contextPath = " + contextPath);   
      this.logger.debug("requestUri = " + requestUri);   
         
      if (this.contains(requestUri, contextPath) && !this.authorize((HttpServletRequest)req)) {   
       this.logger.debug("authorization failed");   
       ((HttpServletRequest)req).getRequestDispatcher(LOGIN_PAGE_URI).forward(req, res);   
       
      else {   
       this.logger.debug("authorization succeeded");   
       chain.doFilter(req, res);   
       
       
        
     public void destroy() {}    
        
     private boolean contains(String value, String contextPath) {   
      Iterator ite = this.restrictedResources.iterator();   
         
      while (ite.hasNext()) {   
       String restrictedResource = (String)ite.next();   
          
       if ((contextPath + restrictedResource).equalsIgnoreCase(value)) {   
        return true;   
        
       
         
      return false;   
       
        
     private boolean authorize(HttpServletRequest req) {   
      
                  //处理用户登录   
             
       
     
  • 相关阅读:
    读 《异类》- 作者:[加拿大] 马尔科姆·格拉德威尔 有感
    docker常用操作命令
    MySQL 使用规范
    js 字符串转json对象
    Mybatis 工作原理
    JDBC连接配置
    Java 线程基础
    数组与链表
    Java 内部类
    MySQL 去重
  • 原文地址:https://www.cnblogs.com/interdrp/p/1451969.html
Copyright © 2011-2022 走看看