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

springboot如何配置Filter過濾器

 更新時(shí)間:2023年12月11日 14:25:02   作者:小布的世界  
這篇文章主要介紹了springboot如何配置Filter過濾器問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot配置Filter過濾器

Filter 過濾器是web開發(fā)中很重要的一個(gè)組件,下面以一個(gè)session登陸的例子介紹下spring boot中如何使用Filter

首先要準(zhǔn)備一個(gè)實(shí)現(xiàn)了Filter的接口的類

SessionFilter:

import org.slf4j.LoggerFactory;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by mazhenhua on 2016/12/27.
 *
 * 過濾器
 */
public class SessionFilter implements Filter {
    private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SessionFilter.class);


    /**
     * 封裝,不需要過濾的list列表
     */
    protected static List<Pattern> patterns = new ArrayList<Pattern>();

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
        HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
        logger.info("aaaaaaaaaa");
        String url = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length());
        if (url.startsWith("/") && url.length() > 1) {
            url = url.substring(1);
        }

        if (isInclude(url)){
            chain.doFilter(httpRequest, httpResponse);
            return;
        } else {
            HttpSession session = httpRequest.getSession();
            if (session.getAttribute("") != null){
                // session存在
                chain.doFilter(httpRequest, httpResponse);
                return;
            } else {
                // session不存在 準(zhǔn)備跳轉(zhuǎn)失敗
                /* RequestDispatcher dispatcher = request.getRequestDispatcher(path);
                    dispatcher.forward(request, response);*/
                chain.doFilter(httpRequest, httpResponse);
                return;
            }
        }


    }

    @Override
    public void destroy() {

    }


    /**
     * 是否需要過濾
     * @param url
     * @return
     */
    private boolean isInclude(String url) {
        for (Pattern pattern : patterns) {
            Matcher matcher = pattern.matcher(url);
            if (matcher.matches()) {
                return true;
            }
        }
        return false;
    }

}

實(shí)際開發(fā)中往往有很多請(qǐng)求要直接請(qǐng)求進(jìn)來

不需要鑒權(quán)登陸的,所以代碼中過濾掉這種請(qǐng)求的代碼,裝進(jìn)list就好了。

    /**
     * 配置過濾器
     * @return
     */
    @Bean
    public FilterRegistrationBean someFilterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(sessionFilter());
        registration.addUrlPatterns("/*");
        registration.addInitParameter("paramName", "paramValue");
        registration.setName("sessionFilter");
        return registration;
    }

    /**
     * 創(chuàng)建一個(gè)bean
     * @return
     */
    @Bean(name = "sessionFilter")
    public Filter sessionFilter() {
        return new SessionFilter();
    }

經(jīng)過上面這倆步的配置,過濾器基本上就可以了。

配置多個(gè)filter,并指定順序,請(qǐng)參考: spring boot filter 配置多個(gè)時(shí),執(zhí)行順序

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot使用spring.config.import多種方式導(dǎo)入配置文件

    SpringBoot使用spring.config.import多種方式導(dǎo)入配置文件

    本文主要介紹了SpringBoot使用spring.config.import多種方式導(dǎo)入配置文件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 在Struts2中如何將父類屬性序列化為JSON格式的解決方法

    在Struts2中如何將父類屬性序列化為JSON格式的解決方法

    本篇文章,小編將為大家介紹關(guān)于在Struts2中如何將父類屬性序列化為JSON格式的解決方法,有需要的朋友可以參考一下
    2013-04-04
  • Spring中Bean初始化和銷毀的方式總結(jié)

    Spring中Bean初始化和銷毀的方式總結(jié)

    這篇文章主要為大家整理了Spring中Bean初始化和銷毀的多種方式,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以了解一下
    2023-04-04
  • Java之String、StringBuffer、StringBuilder的區(qū)別分析

    Java之String、StringBuffer、StringBuilder的區(qū)別分析

    今天搞安卓在看書的時(shí)候遇到了StringBuilder這個(gè)類型的東東,有點(diǎn)小迷,不知道它跟string、stringbuffer的關(guān)系式怎么樣的,趕快查閱相關(guān)資料,了解了個(gè)大概,拿出來分享一下
    2012-11-11
  • Spring Security 多過濾鏈的使用詳解

    Spring Security 多過濾鏈的使用詳解

    本文主要介紹了Spring Security 多過濾鏈的使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • dubbo新手學(xué)習(xí)之事件通知實(shí)踐教程

    dubbo新手學(xué)習(xí)之事件通知實(shí)踐教程

    這篇文章主要給大家介紹了關(guān)于dubbo新手學(xué)習(xí)之事件通知實(shí)踐的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 關(guān)于@MapperScan包掃描的坑及解決

    關(guān)于@MapperScan包掃描的坑及解決

    這篇文章主要介紹了關(guān)于@MapperScan包掃描的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java常用正則表達(dá)式驗(yàn)證類完整實(shí)例【郵箱、URL、IP、電話、身份證等】

    Java常用正則表達(dá)式驗(yàn)證類完整實(shí)例【郵箱、URL、IP、電話、身份證等】

    這篇文章主要介紹了Java常用正則表達(dá)式驗(yàn)證類,結(jié)合完整實(shí)例形式分析了Java針對(duì)郵箱、網(wǎng)址URL、IP地址、電話、身份證等正則驗(yàn)證相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • java短信驗(yàn)證碼獲取次數(shù)限制實(shí)例

    java短信驗(yàn)證碼獲取次數(shù)限制實(shí)例

    這篇文章主要介紹了java短信驗(yàn)證碼獲取次數(shù)限制實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Java實(shí)現(xiàn)精準(zhǔn)Excel數(shù)據(jù)排序的方法詳解

    Java實(shí)現(xiàn)精準(zhǔn)Excel數(shù)據(jù)排序的方法詳解

    在數(shù)據(jù)處理或者數(shù)據(jù)分析的場景中,需要對(duì)已有的數(shù)據(jù)進(jìn)行排序,在Excel中可以通過排序功能進(jìn)行整理數(shù)據(jù),而在Java中,則可以借助Excel表格插件對(duì)數(shù)據(jù)進(jìn)行批量排序,下面我們就來學(xué)習(xí)一下常見的數(shù)據(jù)排序方法吧
    2023-10-10

最新評(píng)論