JAVA & XML & JAVASCRIPT & AJAX & CSS

          Web 2.0 技術(shù)儲備............

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            77 隨筆 :: 17 文章 :: 116 評論 :: 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>
          ?* 配置參數(shù)<p>
          ?* checkSessionKey 需檢查的在 Session 中保存的關(guān)鍵字<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;

          /**
          ?* 用于設(shè)置 HTTP 請求字符編碼的過濾器,通過過濾器參數(shù)encoding指明使用何種字符編碼,用于處理Html Form請求參數(shù)的中文問題
          ?*/
          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 2006-03-21 11:50 Web 2.0 技術(shù)資源 閱讀(2025) 評論(0)  編輯  收藏 所屬分類: JSP & Servlet
          主站蜘蛛池模板: 古浪县| 高要市| 乌鲁木齐市| 神木县| 秭归县| 腾冲县| 池州市| 宜章县| 叙永县| 丘北县| 普兰店市| 五常市| 泰宁县| 怀柔区| 芒康县| 会同县| 中山市| 瑞昌市| 甘南县| 古蔺县| 德化县| 阜平县| 息烽县| 无为县| 社会| 西安市| 寿阳县| 平顶山市| 晋州市| 南城县| 年辖:市辖区| 蕲春县| 泸定县| 黔西| 霍州市| 嘉荫县| 泰宁县| 牙克石市| 邹平县| 洞口县| 班玛县|