国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

springboot使用過濾器

這篇具有很好參考價值的文章主要介紹了springboot使用過濾器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一:過濾器

1.過濾器介紹

過濾器是處于客戶端與服務器資源文件之間的一道過濾網,幫助我們過濾一些不符合要求的請求。通常用作 Session校驗,判斷用戶權限。

2.過濾器生命周期

使用過濾器很簡單,只需要實現Filter類,然后重寫它的3個方法即可。

  • init方法:程序啟動調用Filter的init()方法(永遠只調用一次);在容器中創(chuàng)建當前過濾器的時候自動調用這個方法。
  • destory方法:程序停止調用Filter的destroy()方法(永遠只調用一次);在容器中銷毀當前過濾器的時候自動調用這個方法。
  • doFilter方法:doFilter()方法每次的訪問請求如果符合攔截條件都會調用(程序第一次運行,會在servlet調用init()方法以后調用;不管第幾次,都在調用doGet(),doPost()方法之前)。這個方法有3個參數,分別是ServletRequest、ServletResponse和FilterChain可以從參數中獲取HttpServletReguest和HttpServletResponse對象進行相應的處理操作。

二:使用注解方式實現過濾器(@WebFilter)?

?1.在springboot 啟動類添加該注解@ServletComponentScan

@SpringBootApplication
@ServletComponentScan // 過濾器
public class Springboot02WebTestApplication {
    SpringApplication.run(Springboot02WebTestApplication.class, args);
}

?2.寫個過濾器類,實現Filter接口

import com.alibaba.fastjson.JSONObject;
import org.springframework.core.annotation.Order;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.PrintWriter;

// urlPatterns 過濾路徑  filterName 過濾器name
@WebFilter(urlPatterns = "/user/*", filterName = "tokenFilter1")
public class TokenFilter1 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
//        Filter.super.init(filterConfig);
        System.out.println("init");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("doFilter");
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        String token = request.getHeader("token");
        System.out.println(token);
        //該方法執(zhí)行后直接運行至下一個過濾器
        if(token!=null){
            filterChain.doFilter(servletRequest, servletResponse);
        }else{
            servletResponse.setCharacterEncoding("UTF-8");
            servletResponse.setContentType("application/json; charset=utf-8");
            PrintWriter out = servletResponse.getWriter();
            JSONObject res = new JSONObject();
            res.put("msg", "錯誤");
            res.put("success", "false");
            out.append(res.toString());
        }
    }

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

3.訪問,我使用的Postman軟件進行的測試

? ? ? ? 添加請求頭token信息,才可以訪問成功


三:使用非注解方式實現過濾器(直接注入到spring中)

?1.Filter代碼

import com.alibaba.fastjson.JSONObject;

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

public class TokenFilter2 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 {
        System.out.println("doFilter");
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        String token = request.getHeader("token");
        System.out.println(token);
        //該方法執(zhí)行后直接運行至下一個過濾器
        if(token!=null){
            filterChain.doFilter(servletRequest, servletResponse);
        }else{
            servletResponse.setCharacterEncoding("UTF-8");
            servletResponse.setContentType("application/json; charset=utf-8");
            PrintWriter out = servletResponse.getWriter();
            JSONObject res = new JSONObject();
            res.put("msg", "錯誤");
            res.put("success", "false");
            out.append(res.toString());
        }
    }

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

?2.Filter配置文件

import com.itsufu.filter.TokenFilter2;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class FilterConfig {

    // Filter代碼類
    @Bean
    public TokenFilter2 tokenFilter2() {
        return new TokenFilter2();
    }

    @Bean
    public FilterRegistrationBean getFilterRegistrationBean(TokenFilter2 tokenFilter2) {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(tokenFilter2);
        filterRegistrationBean.setOrder(2);
        filterRegistrationBean.addUrlPatterns("/user/*");
        filterRegistrationBean.setName("tokenFilter2");
        return filterRegistrationBean;
    }
}

?3.測試與注解式一樣。

在此,祝各位帥哥美女,步步高升,一帆風順!??!文章來源地址http://www.zghlxwxcb.cn/news/detail-618161.html

到了這里,關于springboot使用過濾器的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • JAVA開發(fā)(通過網關gateway過濾器進行返回結果加密)

    JAVA開發(fā)(通過網關gateway過濾器進行返回結果加密)

    在對C的網站或者APP后端接口中,參數的傳輸往往需要加密傳輸。這時我們 可以通過springcloud的網關過濾器進行統(tǒng)一的控制。 網關過濾器的執(zhí)行順序: 請求進入網關會碰到三類過濾器:當前路由過濾器、DefaultFilter、GlobalFilter。 請求路由后,會將當前路由過濾器和DefaultFilter、

    2023年04月17日
    瀏覽(21)
  • SpringBoot 統(tǒng)計API接口用時該使用過濾器還是攔截器?

    SpringBoot 統(tǒng)計API接口用時該使用過濾器還是攔截器?

    統(tǒng)計請求的處理時間(用時)既可以使用 Servlet 過濾器(Filter) ,也可以使用 Spring 攔截器(Interceptor) 。兩者都可以在請求處理前后插入自定義邏輯,從而實現對請求響應時間的統(tǒng)計。 如果你需要在更底層、與框架無關的地方記錄所有請求(包括靜態(tài)資源請求)的處理時間

    2024年01月18日
    瀏覽(27)
  • springboot中過濾器@WebFilter的使用以及簡單介紹限流算法

    springboot中過濾器@WebFilter的使用以及簡單介紹限流算法

    過濾器(Filter)實際上就是對web資源進行攔截,做一些處理后再交給下一個過濾器或servlet處理,通常都是用來攔截request進行處理的,也可以對返回的response進行攔截處理,大致流程如下圖 一般情況下,我們針對一些敏感的參數,例如密碼、身份證號等,給它加密,防止報文明文

    2024年02月03日
    瀏覽(21)
  • 開發(fā)筆記 | JAVA過濾器Filter實現全局接口入參去除前后空格

    目錄 思考過程 遇到的問題 過濾器Filter使用步驟 全局去除入參前后空格代碼實現 處理過程中自己造成的一些問題 需求背景: 前端所有的條件查詢去除前后空格,如搜 【\\\"? ?測試? ? \\\"】后端將其轉為【測試】。之前都是前端統(tǒng)一處理的,但是這次要后端處理,那么就得考慮

    2024年02月12日
    瀏覽(20)
  • JavaWEB學習筆記(二)------HTTP、Servlet、會話、過濾器、監(jiān)聽器、Ajax、前端工程化

    JavaWEB學習筆記(二)------HTTP、Servlet、會話、過濾器、監(jiān)聽器、Ajax、前端工程化

    目錄 HTTP HTTP1.1 請求和響應的報文格式 請求報文 響應報文 常見狀態(tài)響應碼 Servlet? 靜態(tài)資源和動態(tài)資源 ?編輯 ?Servlet簡介? Servlet開發(fā)流程 導入和響應頭問題 url-pattern不同寫法 url-pattern工作方式 Servlet注解方式配置 Servlet生命周期? Servlet繼承結構 Servlet接口 GenerisServlet類 Ht

    2024年01月21日
    瀏覽(28)
  • 【Spring】Springboot過濾器Filter和攔截器Inteceptor詳解及使用場景

    Springboot過濾器Filter和攔截器Inteceptor詳解及使用場景

    2024年02月13日
    瀏覽(35)
  • SpringBoot在使用SpringSecurity時,配置跨域過濾器CorsFilter不生效分析解決

    SpringBoot在使用SpringSecurity時,配置跨域過濾器CorsFilter不生效分析解決

    此文中代碼只粘貼部分代碼,完整版請自行查看 請求一般為重啟debug服務再次請求 一般配置方法(適用于沒有SpringSecurity配置時) SpringSecurity配置時配置方法 首先說明Spring中過濾器加載使用的是FilterRegistrationBean配置過濾器,FilterRegistrationBean實現了Ordered接口,order排序值默認值為

    2024年01月20日
    瀏覽(99)
  • Springboot 過濾器

    攔截器和過濾器的區(qū)別: 過濾器(Filter) :可以拿到原始的http請求,但是拿不到你請求的控制器和請求控制器中的方法的信息。 攔截器(Interceptor):可以拿到你請求的控制器和方法,卻拿不到請求方法的參數。 切片(Aspect): 可以拿到方法的參數,但是卻拿不到http請求和

    2023年04月15日
    瀏覽(27)
  • springboot 過濾器鏈 來自 chatgpt

    當需要在Spring Boot中配置多個過濾器時,可以按照以下步驟進行操作: 創(chuàng)建多個自定義過濾器類:首先,你需要創(chuàng)建多個實現 javax.servlet.Filter 接口的自定義過濾器類,每個過濾器類都需要實現 doFilter 方法來定義過濾器的邏輯處理。 配置過濾器鏈:在Spring Boot應用程序的配置

    2024年02月12日
    瀏覽(17)
  • SpringBoot登錄校驗(四)過濾器Filter

    SpringBoot登錄校驗(四)過濾器Filter

    JWT令牌生成后,客戶端發(fā)的請求頭中會帶有JWT令牌,服務端需要校驗每個請求的令牌,如果在每個controller方法中添加校驗模塊,則十分復雜且冗余,所以引入統(tǒng)一攔截模塊,將請求攔截下來并做校驗,這塊內容可以選擇兩種技術: Filter過濾器 Interceptor攔截器 我們首先來學習

    2024年04月17日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包