JAVA五個有用的過濾器.docx_第1頁
JAVA五個有用的過濾器.docx_第2頁
JAVA五個有用的過濾器.docx_第3頁
JAVA五個有用的過濾器.docx_第4頁
JAVA五個有用的過濾器.docx_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

五個有用的過濾器一、 使瀏覽器不緩存頁面的過濾器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; /* * 用于檢測用戶是否登陸的過濾器,如果未登錄,則重定向到指的登錄頁面 * 配置參數(shù) * checkSessionKey 需檢查的在 Session 中保存的關(guān)鍵字 * redirectURL 如果用戶未登錄,則重定向到指定的頁面,URL不包括 ContextPath * notCheckURLList 不做檢查的URL列表,以分號分開,并且 URL 中不包括 ContextPath */ 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 mons.logging.Log; import mons.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; */ 五 利用Filter限制用戶瀏覽權(quán)限 在一個系統(tǒng)中通常有多個權(quán)限的用戶。不同權(quán)限用戶的可以瀏覽不同的頁面。使用Filter進行判斷不僅省下了代碼量,而且如果要更改的話只需要在Filter文件里動下就可以。 以下是Filter文件代碼: import java.io.IOException; 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; public class RightFilter implements Filter public void destroy() public void doFilter(ServletRequest sreq, ServletResponse sres, FilterChain arg2) throws IOException, ServletException / 獲取uri地址 HttpServletRequest request=(HttpServletRequest)sreq; String

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論