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,或者在離開(kāi)用戶請(qǐng)求之后進(jìn)入Filter。Filter類(lèi)似于門(mén)衛(wèi),你在進(jìn)入之前門(mén)衛(wèi)需要盤(pán)查你,身份合法進(jìn)入,身份不合法攔截。
1.1、Filter過(guò)濾器的使用場(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)行過(guò)濾處理。
4、對(duì)所有用戶的請(qǐng)求或者響應(yīng)進(jìn)行記錄,可以進(jìn)行日志管理。
2、Filter的使用方式
說(shuō)明1:Filter的使用需要實(shí)現(xiàn)Filter接口,并重寫(xiě)doFilter方法
說(shuō)明2:導(dǎo)包信息import javax.servlet.Filter;
說(shuō)明3:當(dāng)用戶正在進(jìn)行登錄的時(shí)候需要放行。
2.1、創(chuàng)建Filter
public class LoginFilter implements Filter{
//銷(xiāo)毀方法
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,就放行
//如果用戶正在通過(guò)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值為空,說(shuō)明沒(méi)有登錄,因?yàn)榈卿洺晒髸?huì)將用戶信息保存在session中。
if(username!=null){
//放行
filterChain.doFilter(request, response);
return ;
}
//如果沒(méi)有登錄轉(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信息
<!-- 自定義過(guò)濾器 -->
<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)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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-06
Mybatis-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-04
SpringBoot整合Redis實(shí)現(xiàn)附近位置查找(LBS)功能
Redis 提供了 GEO 數(shù)據(jù)結(jié)構(gòu),可以高效地存儲(chǔ)和查詢地理位置數(shù)據(jù),本文將介紹如何使用 Spring Boot + Redis 來(lái)實(shí)現(xiàn)附近位置查找,需要的可以了解下2025-03-03
freemarker?jsp?java內(nèi)存方式實(shí)現(xiàn)分頁(yè)示例
這篇文章主要介紹了freemarker?jsp?java內(nèi)存方式實(shí)現(xiàn)分頁(yè)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06

