Dict.CN 在線詞典, 英語學習, 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統計

          留言簿(23)

          積分與排名

          優秀學習網站

          友情連接

          閱讀排行榜

          評論排行榜

          四個有用的過濾器 Filter

           

          一、使瀏覽器不緩存頁面的過濾器 
          import javax.servlet.*;
          import javax.servlet.http.HttpServletResponse;
          import java.io.IOException;

          /**
           * 用于的使 Browser 不緩存頁面的過濾器
           
          */

          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;

          /**
           * 用于檢測用戶是否登陸的過濾器,如果未登錄,則重定向到指的登錄頁面<p>
           * 配置參數<p>
           * checkSessionKey 需檢查的在 Session 中保存的關鍵字<br/>
           * redirectURL 如果用戶未登錄,則重定向到指定的頁面,URL不包括 ContextPath<br/>
           * notCheckURLList 不做檢查的URL列表,以分號分開,并且 URL 中不包括 ContextPath<br/>
           
          */

          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;

          /**
           * 用于設置 HTTP 請求字符編碼的過濾器,通過過濾器參數encoding指明使用何種字符編碼,用于處理Html Form請求參數的中文問題
           
          */

          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;
                                  
                                  
          /**
                                  * This Filter class handle the security of the application.
                                  *
                                  
                                  * It should be configured inside the web.xml.
                                  * 
                                  * 
          @author Derek Y. Shen
                                  
          */

                                  
          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;
                                  
                                  
          /**
                                  * Initializes the Filter.
                                  
          */

                                  
          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");
                                  }

                                  
                                  
          /**
                                  * Standard doFilter object.
                                  
          */

                                  
          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) {
                                  
                                  
          //處理用戶登錄
                                  /* UserBean user = (UserBean)req.getSession().getAttribute(BeanNames.USER_BEAN);
                                  
                                  if (user != null && user.getLoggedIn()) {
                                  //user logged in
                                  return true;
                                  }
                                  else {
                                  return false;
                                  }
          */

                                  }

                                  }

           

          posted on 2007-12-03 17:13 都市淘沙者 閱讀(613) 評論(0)  編輯  收藏 所屬分類: Java Basic/Lucene/開源資料

          主站蜘蛛池模板: 喜德县| 玛曲县| 东乌珠穆沁旗| 南和县| 绥宁县| 盈江县| 栖霞市| 西林县| 佛学| 英德市| 伊吾县| 辉南县| 布拖县| 瓮安县| 昭觉县| 兴文县| 稷山县| 潞城市| 二连浩特市| 阳山县| 吴江市| 乌拉特前旗| 大丰市| 内丘县| 桑植县| 乐业县| 定远县| 临洮县| 连山| 堆龙德庆县| 五台县| 绵竹市| 汝南县| 新竹县| 建湖县| 尉氏县| 名山县| 资阳市| 威信县| 达尔| 教育|