Java使用Filter實現(xiàn)登錄驗證
1、什么是Filter
Filter可認(rèn)為是Servlet的一種特殊用法,主要是對用戶發(fā)起的請求進(jìn)行預(yù)處理或后處理,意思就是在請求到達(dá)用戶想請求的地址之前先進(jìn)入Filter,或者在離開用戶請求之后進(jìn)入Filter。Filter類似于門衛(wèi),你在進(jìn)入之前門衛(wèi)需要盤查你,身份合法進(jìn)入,身份不合法攔截。
1.1、Filter過濾器的使用場景
1、對用戶的請求進(jìn)行統(tǒng)一認(rèn)證,適合做權(quán)限管理。
2、對請求和響應(yīng)進(jìn)行加密處理。
3、對用戶發(fā)送的請求或者響應(yīng)的數(shù)據(jù)進(jìn)行過濾處理。
4、對所有用戶的請求或者響應(yīng)進(jìn)行記錄,可以進(jìn)行日志管理。
2、Filter的使用方式
說明1:Filter的使用需要實現(xiàn)Filter接口,并重寫doFilter方法
說明2:導(dǎo)包信息import javax.servlet.Filter;
說明3:當(dāng)用戶正在進(jìn)行登錄的時候需要放行。
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)前用戶的請求地址 String url=request.getRequestURI(); //如果請求的地址中包含login,就放行 //如果用戶正在通過login.jsp或者請求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值為空,說明沒有登錄,因為登錄成功后會將用戶信息保存在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實現(xiàn)登錄驗證的文章就介紹到這了,更多相關(guān)Java Filter登錄驗證內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis-plus動態(tài)表名的實現(xiàn)示例
這篇文章主要介紹了mybatis-plus動態(tài)表名的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04詳解Java阻塞隊列(BlockingQueue)的實現(xiàn)原理
這篇文章主要介紹了詳解Java阻塞隊列(BlockingQueue)的實現(xiàn)原理,阻塞隊列是Java util.concurrent包下重要的數(shù)據(jù)結(jié)構(gòu),有興趣的可以了解一下2017-06-06Mybatis-Plus使用@TableField實現(xiàn)自動填充日期的代碼示例
數(shù)據(jù)庫中經(jīng)常有create_time,update_time兩個字段,在代碼中設(shè)置時間有點太麻煩了?mybatis-plus可以幫我們自動填充,本文主要介紹了Mybatis-Plus使用@TableField實現(xiàn)自動填充日期的代碼示例,感興趣的可以了解一下2022-04-04SpringBoot整合Redis實現(xiàn)附近位置查找(LBS)功能
Redis 提供了 GEO 數(shù)據(jù)結(jié)構(gòu),可以高效地存儲和查詢地理位置數(shù)據(jù),本文將介紹如何使用 Spring Boot + Redis 來實現(xiàn)附近位置查找,需要的可以了解下2025-03-03freemarker?jsp?java內(nèi)存方式實現(xiàn)分頁示例
這篇文章主要介紹了freemarker?jsp?java內(nèi)存方式實現(xiàn)分頁示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06