贏在執行

          這個世界上只有兩樣東西愈分享愈多,那就是智慧與愛。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            17 Posts :: 11 Stories :: 13 Comments :: 0 Trackbacks
          一、使瀏覽器不緩存頁面的過濾器

          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-01-22 16:59 飛雪(leo) 閱讀(264) 評論(0)  編輯  收藏 所屬分類: JAVA基礎專區

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 河西区| 丰县| 辽宁省| 嘉义县| 云龙县| 来宾市| 永善县| 通州市| 云阳县| 邳州市| 汉源县| 全州县| 姚安县| 九寨沟县| 金秀| 红桥区| 巍山| 罗城| 曲麻莱县| 新晃| 永寿县| 太康县| 德安县| 延寿县| 西藏| 于都县| 赞皇县| 延川县| 安徽省| 博乐市| 永城市| 吉木乃县| 吴川市| 奈曼旗| 洛扎县| 宝坻区| 东台市| 沐川县| 彭山县| 乐都县| 伊宁市|