這篇文章將為大家詳細(xì)講解有關(guān)使用Servlet Filter怎么實(shí)現(xiàn)系統(tǒng)登錄權(quán)限,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)、成都品牌網(wǎng)站建設(shè)、網(wǎng)頁(yè)制作、做網(wǎng)站、建網(wǎng)站。成都創(chuàng)新互聯(lián)公司擁有實(shí)力堅(jiān)強(qiáng)的技術(shù)研發(fā)團(tuán)隊(duì)及素養(yǎng)的視覺(jué)設(shè)計(jì)專(zhuān)才。Filter適用的場(chǎng)景:
1.為一個(gè)web應(yīng)用程序的新功能建立模型(可被添加到web應(yīng)用程序中或者從web應(yīng)用程序中刪除而不需要重寫(xiě)基層應(yīng)用程序代碼)
2.向過(guò)去的代碼添加新功能
3.用戶(hù)授權(quán)的Filter: Filter 負(fù)責(zé)檢查用戶(hù)請(qǐng)求,根據(jù)請(qǐng)求過(guò)濾用戶(hù)非法請(qǐng)求
4.日志Filter: 詳細(xì)記錄某些特殊的用戶(hù)請(qǐng)求
5.負(fù)責(zé)解碼的Filter: 包括對(duì)非標(biāo)準(zhǔn)編碼的請(qǐng)求解碼
Filter使用的位置:
過(guò)濾器放在web資源之前,可以在請(qǐng)求抵達(dá)它所應(yīng)用的web資源(可以是一個(gè)Servlet、一個(gè)Jsp頁(yè)面,甚至是一個(gè)HTML頁(yè)面)之前截獲進(jìn)入的請(qǐng)求,并且在它返回到客戶(hù)之前截獲輸出請(qǐng)求。Filter:用來(lái)攔截請(qǐng)求,處于客戶(hù)端與被請(qǐng)求資源之間,目的是重用代碼。Filter鏈,在web.xml中哪個(gè)先配置,哪個(gè)就先調(diào)用。在filter中也可以配置一些初始化參數(shù)。
Filter的用途:
1.在HttpServletRequest 到達(dá)Servlet 之前,攔截客戶(hù)的HttpServletRequest
2.根據(jù)需要檢查HttpServletRequest ,也可以修改HttpServletRequest 頭和數(shù)據(jù)
3.在HttpServletResponse 到達(dá)客戶(hù)端之前,攔截HttpServletResponse
4.根據(jù)需要檢查HttpServletResponse ,可以修改HttpServletResponse 頭和數(shù)據(jù)
一個(gè)Filter 可負(fù)責(zé)攔截多個(gè)請(qǐng)求或響應(yīng):一個(gè)請(qǐng)求或響應(yīng)也可被多個(gè)請(qǐng)求攔截。
使用Filter進(jìn)行系統(tǒng)登錄權(quán)限校驗(yàn)
這里我們使用對(duì)session進(jìn)行校驗(yàn)的方式,當(dāng)對(duì)某一模塊進(jìn)行請(qǐng)求時(shí),先校驗(yàn)當(dāng)前用戶(hù)的請(qǐng)求是否有session存在,如果有,繼續(xù)訪(fǎng)問(wèn),如果沒(méi)有,即跳轉(zhuǎn)到登錄頁(yè)。
第一步:
編寫(xiě)自己的Filter攔截類(lèi),攔截類(lèi)需要實(shí)現(xiàn)servlet的filter接口
public class WebFilter implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; HttpSession session = request.getSession(); String currPath = request.getRequestURI(); //當(dāng)前請(qǐng)求的URL if (session.getAttribute("logined") != null) { filterChain.doFilter(servletRequest, servletResponse); } else { response.sendRedirect("/login.jsp"); } } @Override public void destroy() { } }
這里使用了攔截器鏈,當(dāng)我們配置了多個(gè)攔截器的時(shí)候,服務(wù)器會(huì)按照web.xml中過(guò)濾器定義的先后循序組裝成一條鏈,然后一次執(zhí)行其中的doFilter()方法。
第二步:
在web.xml中配置自定義的攔截器
web.xml:
webFilter com.test.interceptor.WebFilter skipPath ok.jsp webFilter /*
關(guān)于使用Servlet Filter怎么實(shí)現(xiàn)系統(tǒng)登錄權(quán)限就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。