Java使用Filter實(shí)現(xiàn)登錄驗(yàn)證
1、什么是Filter
Filter可認(rèn)為是Servlet的一種特殊用法,主要是對(duì)用戶發(fā)起的請(qǐng)求進(jìn)行預(yù)處理或后處理,意思就是在請(qǐng)求到達(dá)用戶想請(qǐng)求的地址之前先進(jìn)入Filter,或者在離開用戶請(qǐng)求之后進(jìn)入Filter。Filter類似于門衛(wèi),你在進(jìn)入之前門衛(wèi)需要盤查你,身份合法進(jìn)入,身份不合法攔截。
1.1、Filter過濾器的使用場(chǎng)景
1、對(duì)用戶的請(qǐng)求進(jìn)行統(tǒng)一認(rèn)證,適合做權(quán)限管理。
2、對(duì)請(qǐng)求和響應(yīng)進(jìn)行加密處理。
3、對(duì)用戶發(fā)送的請(qǐng)求或者響應(yīng)的數(shù)據(jù)進(jìn)行過濾處理。
4、對(duì)所有用戶的請(qǐng)求或者響應(yīng)進(jìn)行記錄,可以進(jìn)行日志管理。
2、Filter的使用方式
說明1:Filter的使用需要實(shí)現(xiàn)Filter接口,并重寫doFilter方法
說明2:導(dǎo)包信息import javax.servlet.Filter;
說明3:當(dāng)用戶正在進(jìn)行登錄的時(shí)候需要放行。
2.1、創(chuàng)建Filter
public class LoginFilter implements Filter{ //銷毀方法 public void destroy() { } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //將ServletRequest轉(zhuǎn)化成HttpServletRequest HttpServletRequest request=(HttpServletRequest)servletRequest; HttpServletResponse response=(HttpServletResponse)servletResponse; //獲取當(dāng)前用戶的請(qǐng)求地址 String url=request.getRequestURI(); //如果請(qǐng)求的地址中包含login,就放行 //如果用戶正在通過login.jsp或者請(qǐng)求login.do進(jìn)行登錄,要放行。 if(url.indexOf("login")>-1){ //放行 filterChain.doFilter(request, response); return ; } HttpSession session=request.getSession(); String username=(String)session.getAttribute("username"); //如果username值為空,說明沒有登錄,因?yàn)榈卿洺晒髸?huì)將用戶信息保存在session中。 if(username!=null){ //放行 filterChain.doFilter(request, response); return ; } //如果沒有登錄轉(zhuǎn)發(fā)到login.jsp request.getRequestDispatcher("login.jsp").forward(request, response); } @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } }
2.2、在web.xml中配置Filter信息
<!-- 自定義過濾器 --> <filter> <filter-name> LoginFilter </filter-name> <filter-class>com.it.filter. LoginFilter </filter-class> </filter> <filter-mapping> <filter-name> LoginFilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
到此這篇關(guān)于Java使用Filter實(shí)現(xiàn)登錄驗(yàn)證的文章就介紹到這了,更多相關(guān)Java Filter登錄驗(yàn)證內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis-plus動(dòng)態(tài)表名的實(shí)現(xiàn)示例
這篇文章主要介紹了mybatis-plus動(dòng)態(tài)表名的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04詳解Java阻塞隊(duì)列(BlockingQueue)的實(shí)現(xiàn)原理
這篇文章主要介紹了詳解Java阻塞隊(duì)列(BlockingQueue)的實(shí)現(xiàn)原理,阻塞隊(duì)列是Java util.concurrent包下重要的數(shù)據(jù)結(jié)構(gòu),有興趣的可以了解一下2017-06-06Mybatis-Plus使用@TableField實(shí)現(xiàn)自動(dòng)填充日期的代碼示例
數(shù)據(jù)庫(kù)中經(jīng)常有create_time,update_time兩個(gè)字段,在代碼中設(shè)置時(shí)間有點(diǎn)太麻煩了?mybatis-plus可以幫我們自動(dòng)填充,本文主要介紹了Mybatis-Plus使用@TableField實(shí)現(xiàn)自動(dòng)填充日期的代碼示例,感興趣的可以了解一下2022-04-04SpringBoot整合Redis實(shí)現(xiàn)附近位置查找(LBS)功能
Redis 提供了 GEO 數(shù)據(jù)結(jié)構(gòu),可以高效地存儲(chǔ)和查詢地理位置數(shù)據(jù),本文將介紹如何使用 Spring Boot + Redis 來實(shí)現(xiàn)附近位置查找,需要的可以了解下2025-03-03freemarker?jsp?java內(nèi)存方式實(shí)現(xiàn)分頁(yè)示例
這篇文章主要介紹了freemarker?jsp?java內(nèi)存方式實(shí)現(xiàn)分頁(yè)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06