欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java過濾器Filter的基本使用教程

 更新時間:2023年02月22日 11:06:36   作者:綠仔牛奶_  
過濾器通常對一些web資源進行攔截,做完一些處理器再交給下一個過濾器處理,直到所有的過濾器處理器,再調(diào)用servlet實例的service方法進行處理。本文將通過示例為大家講解Java中過濾器Filter的用法與實現(xiàn),需要的可以參考一下

過濾器Filter

  • 用于攔截請求、過濾響應(yīng)
  • 在不使用過濾器時,瀏覽器向服務(wù)器發(fā)送請求后,服務(wù)器將會直接去獲取資源并響應(yīng)給瀏覽器
  • 添加Filter后,瀏覽器向服務(wù)器發(fā)送請求,請求在到達服務(wù)器之間會先經(jīng)過Filter,在Filter進行一系列判斷后滿足條件才可以被允許通過過濾到達服務(wù)器. 而服務(wù)器的響應(yīng)在抵達瀏覽器之前同樣會先經(jīng)過Filter之后才會到瀏覽器

Filter使用:

  • 導(dǎo)包:javax.servlet.Filter
  • Filter是一個接口,符合JavaEE規(guī)范
  • Filter接口的實現(xiàn)類被稱作是一個過濾器,實現(xiàn)類需要重寫Filter中的抽象方法
  • Filter中有三個方法如下
// init--> 初始化方法
default public void init(FilterConfig filterConfig) throws ServletException {}
// doFilter--> 過濾器實體方法
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)throws IOException, ServletException;
// destroy --> 銷毀過濾器的方法
default public void destroy() {}

init:在Web工程啟動時就會調(diào)用進行初始化

doFilter:三個參數(shù): request請求和response響應(yīng) chain鏈

FilterChain:過濾器鏈,當(dāng)前過濾器過濾通過后會將請求或響應(yīng)交給下一個過濾器執(zhí)行,可以理解為當(dāng)前過濾器允許該請求或響應(yīng)通過

// 過濾器放行的固定寫法
chain.doFilter(request, response);

destory:銷毀該過濾器

配置Filter:

// 注解
@WebFilter(urlPatterns = {"/doFilter"})
// Web.xml配置  與配置Servlet方法相同
<filter>
	<filter-name>filterTest</filter-name>
	<filter-class>com.filter.TestFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>filterTest</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

使用實例:

向web界面輸出文字,通過過濾器進行編碼,不通過過濾器將會打印亂碼

// 過濾器
@WebFilter(urlPatterns = {"/doFilter"})
public class Filter01 implements Filter {
    // 初始化方法
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("Filter初始化完成");
    }
    // 過濾器主體
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset:utf-8");
        // 允許通過過濾器
        chain.doFilter(request, response);
    }
    // 銷毀方法
    public void destroy() {
        System.out.println("Filter被銷毀");
    }
}
// Servlet
@WebServlet(urlPatterns = {"/doFilter","/doNotFilter"})
public class Demo01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("<h1>你好,鄭州</h1>");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

上述代碼所示:當(dāng)通過映射路徑/doNotFilter將會打印出中文亂碼,反之通過/doFilter則會設(shè)置好響應(yīng)的中文編碼正常輸出

到此這篇關(guān)于Java過濾器Filter的基本使用教程的文章就介紹到這了,更多相關(guān)Java過濾器Filter內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Cloud Gateway使用Token驗證詳解

    Spring Cloud Gateway使用Token驗證詳解

    這篇文章主要介紹了Spring Cloud Gateway使用Token驗證詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Spring MVC異常處理機制示例詳解

    Spring MVC異常處理機制示例詳解

    這篇文章主要給大家介紹了關(guān)于Spring MVC異常處理機制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Spring MVC具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • idea創(chuàng)建spring boot項目及java版本只能選擇17和21的問題

    idea創(chuàng)建spring boot項目及java版本只能選擇17和21的問題

    這篇文章主要介紹了idea創(chuàng)建spring boot項目及java版本只能選擇17和21的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • java控制臺實現(xiàn)學(xué)生信息管理系統(tǒng)(集合版)

    java控制臺實現(xiàn)學(xué)生信息管理系統(tǒng)(集合版)

    這篇文章主要為大家詳細(xì)介紹了java控制臺實現(xiàn)學(xué)生信息管理系統(tǒng)的集合版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Java反射機制的實現(xiàn)詳解

    Java反射機制的實現(xiàn)詳解

    反射主要解決動態(tài)編程,即使用反射時,所有的對象生成是動態(tài)的,因此調(diào)用的方法也是動態(tài)的.反射可以簡化開發(fā),但是代碼的可讀性很低
    2013-05-05
  • springboot集成swagger、knife4j及常用注解的使用

    springboot集成swagger、knife4j及常用注解的使用

    這篇文章主要介紹了springboot集成swagger、knife4j及常用注解的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Spring Data MongoDB中實現(xiàn)自定義級聯(lián)的方法詳解

    Spring Data MongoDB中實現(xiàn)自定義級聯(lián)的方法詳解

    這篇文章主要給大家介紹了關(guān)于Spring Data MongoDB中實現(xiàn)自定義級聯(lián)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Spring?Boot整合Kafka教程詳解

    Spring?Boot整合Kafka教程詳解

    這篇文章主要為大家介紹了Spring?Boot整合Kafka教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Java數(shù)據(jù)結(jié)構(gòu)之鏈表、棧、隊列、樹的實現(xiàn)方法示例

    Java數(shù)據(jù)結(jié)構(gòu)之鏈表、棧、隊列、樹的實現(xiàn)方法示例

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之鏈表、棧、隊列、樹的實現(xiàn)方法,結(jié)合實例形式分析了Java數(shù)據(jù)結(jié)構(gòu)中鏈表、棧、隊列、樹的功能、定義及使用方法,需要的朋友可以參考下
    2019-03-03
  • struts2簡介_動力節(jié)點Java學(xué)院整理

    struts2簡介_動力節(jié)點Java學(xué)院整理

    Struts2框架是MVC流程框架,適合分層開發(fā),這篇文章主要為大家詳細(xì)介紹了struts2簡介的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09

最新評論