已閱讀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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球以太網(wǎng)接入交換機行業(yè)調(diào)研及趨勢分析報告
- 二零二五年度國際海運貨物損失賠償協(xié)議3篇
- 2025-2030全球堆棧式CMOS圖像傳感器行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球輸送輪行業(yè)調(diào)研及趨勢分析報告
- 二零二五年度財務(wù)顧問合作協(xié)議及財務(wù)分析報告模板3篇
- 二零二五年度環(huán)保設(shè)備安裝施工合同招標文件范本3篇
- 二零二五版?zhèn)€人教育培訓承包合同3篇
- 二零二五年影視拍攝兼職合同3篇
- 二零二五年度鋼管出租與環(huán)保評估與監(jiān)測合同3篇
- 二零二五年度船舶窗簾安裝與維修保養(yǎng)合同3篇
- 第22單元(二次函數(shù))-單元測試卷(2)-2024-2025學年數(shù)學人教版九年級上冊(含答案解析)
- 藍色3D風工作總結(jié)匯報模板
- 安全常識課件
- 小王子-英文原版
- 2024年江蘇省導游服務(wù)技能大賽理論考試題庫(含答案)
- 2024年中考英語閱讀理解表格型解題技巧講解(含練習題及答案)
- 新版中國食物成分表
- 浙江省溫州市溫州中學2025屆數(shù)學高二上期末綜合測試試題含解析
- 保安公司市場拓展方案-保安拓展工作方案
- GB/T 15843.2-2024網(wǎng)絡(luò)安全技術(shù)實體鑒別第2部分:采用鑒別式加密的機制
- 10以內(nèi)加減法(直接打印,20篇)
評論
0/150
提交評論