JavaWeb過濾器簡介-創(chuàng)新互聯(lián)

過濾器位于客戶端和web應(yīng)用程序之間,用于檢查和修改兩者之間流過的請求和響應(yīng)。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)公司、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了治多免費建站歡迎大家使用!

在請求到達Servlet/JSP之前,過濾器截獲請求。

在響應(yīng)送給客戶端之前,過濾器截獲響應(yīng)。

多個過濾器形成一個過濾器鏈,過濾器鏈中不同過濾器的先后順序由部署文件web.xml中過濾器映射的順序決定。

最先截獲客戶端請求的過濾器將最后截獲Servlet/JSP的響應(yīng)信息。

我們需要實現(xiàn)一個Filter接口,導(dǎo)入import javax.servlet.*,并實現(xiàn)其中的抽象方法。

import javax.servlet.*;
import java.io.IOException;

public class LoginFilter implements Filter {

    @Override
    //初始化
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

    }

    @Override
    //刪除過濾器
    public void destroy() {

    }
}

以上操作和Servlet很相似,也可以理解為Filter就是一個Servlet,只是Filter所對應(yīng)的功能和位置不相同。

配置映射路徑:

過濾器配置映射路徑有兩種方法,第一種方法就是在web.xml中配置

login.jsp  過濾器配置映射 LoginFiltercom.scores.filter.LoginFilterLoginFilter/*

第二種方法就是利用注解的方式進行配置( 攔截的路徑 /*:攔截所有的請求)

@WebFilter(urlPatterns = {"/*"})

配置完成之后接下來我們就可以給LoginFilter寫上一些輸出語句及邏輯判斷

package com.scores.filter;

import javax.servlet.*;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

public class LoginFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("init");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest)servletRequest;
        //獲取當前uri
        String uri = request.getRequestURI();
        //通過這條輸出語句可以清楚的看到被攔截的請求
        System.out.println("doFilter"+uri);
        //通過過濾器----允許通過
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {
        System.out.println("destroy");
    }
}

在實行不同的要求時可以用不同的邏輯判斷來完成,例如你想完成必須要有用戶登錄才能繼續(xù)訪問后續(xù)頁面的要求,就可以在doFilter中加入邏輯判斷,假如nowses就代表你的賬號密碼。

//邏輯判斷
Object loginuser = request.getSession().getAttribute("nowses");
//如果他這個loginuser不為空
if(loginuser != null){
    //允許通過
     filterChain.doFilter(servletRequest,servletResponse);
    
}else{
    //跳轉(zhuǎn)回登錄頁面
    HttpServletResponse response = (HttpServletResponse) servletResponse;
        response.sendRedirect("/ScoresWeb/login.jsp");
}

總結(jié):

過濾器:根據(jù)業(yè)務(wù)需求對請求進行攔截。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站欄目:JavaWeb過濾器簡介-創(chuàng)新互聯(lián)
分享路徑:http://www.muchs.cn/article22/depscc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計、網(wǎng)站營銷、品牌網(wǎng)站制作、軟件開發(fā)移動網(wǎng)站建設(shè)、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名