博客
关于我
【springboot】拦截器和过滤器的实现
阅读量:330 次
发布时间:2019-03-04

本文共 3722 字,大约阅读时间需要 12 分钟。

拦截器与过滤器在Spring Boot应用中的实现与配置

在Spring Boot项目中,拦截器和过滤器是非常重要的技术工具,能够帮助我们对应用程序的请求进行统一管理和权限控制。本文将详细介绍如何实现和配置拦截器以及过滤器。

第一部分:拦截器的实现

拦截器在Spring Boot中通过实现HandlerInterceptor接口来实现。我们可以创建一个类,继承HandlerInterceptor,并在preHandle方法中实现自己的逻辑。以下是一个典型的拦截器实现:

import java.io.IOException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import com.example.User;public class AdminInterceptor implements HandlerInterceptor {    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException {        User user = (User) request.getSession().getAttribute("USER");        if (user != null) {            return true;        }        response.sendRedirect(request.getContextPath() + "login");        return false;    }    // 其他方法可以留空或根据需求定制}

第二部分:拦截器的配置

在Spring Boot中配置拦截器,需要创建一个配置类,继承WebMvcConfigurer,并在addInterceptors方法中注册拦截器。以下是一个典型的配置类:

import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configurationpublic class LoginConfig implements WebMvcConfigurer {    @Override    public void addInterceptors(InterceptorRegistry registry) {        InterceptorRegistration registration = registry.addInterceptor(new AdminInterceptor());        registration.addPathPatterns("/**");        registration.excludePathPatterns("login", "*.html", "*.js", "*.css", "*.woff", "*.ttf");    }}

第三部分:过滤器的实现

过滤器在Spring Boot中通过实现Filter接口来实现。我们可以创建一个类,继承Filter,并在doFilter方法中实现自己的逻辑。以下是一个典型的过滤器实现:

import java.io.IOException;import java.util.Arrays;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import org.springframework.stereotype.Component;@Component@WebFilter(urlPatterns="/**", filterName="loginFilter")public class LoginFilter implements Filter {    private static final String[] excludePathPatterns = { "/stuInfo/getAllStuInfoA" };    @Override    public void init(FilterConfig filterConfig) throws ServletException {        // 初始化逻辑可以在这里添加    }    @Override    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {        String url = request.getRequestURI();        if (Arrays.asList(excludePathPatterns).contains(url)) {            chain.doFilter(request, response);            return;        }        System.out.println("开始拦截了................");        // 业务逻辑可以在这里添加        chain.doFilter(request, response);    }    @Override    public void destroy() {        // 销毁逻辑可以在这里添加    }}

第四部分:过滤器的配置

在Spring Boot中配置过滤器,需要创建一个配置类,注入Filter类到FilterRegistrationBean中,指定URL模式。以下是一个典型的配置类:

import org.springframework.context.annotation.Configuration;import org.springframework.web.filter.FilterRegistrationBean;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration@EnableWebMvcpublic class FilterConfig implements WebMvcConfigurer {    @Bean    public FilterRegistrationBean registFilter() {        FilterRegistrationBean registration = new FilterRegistrationBean();        registration.setFilter(new LoginFilter());        registration.addUrlPatterns("/*");        registration.setName("loginFilter");        registration.setOrder(1);        return registration;    }}

通过以上配置,我们可以在Spring Boot项目中完成拦截器和过滤器的实现和配置。这些技术可以帮助我们对应用程序的请求进行统一管理和权限控制,提升应用的安全性和效率。

转载地址:http://qoih.baihongyu.com/

你可能感兴趣的文章
Mysql添加用户并授予只能查询权限
查看>>
mysql添加用户权限报1064 - You have an error in your SQL syntax问题解决
查看>>
mysql添加索引
查看>>
mysql添加表注释、字段注释、查看与修改注释
查看>>
mysql清理undo线程_MySQL后台线程的清理工作
查看>>
mysql清空带外键的表
查看>>
MySQL清空表数据
查看>>
mysql源码安装
查看>>
Mysql源码安装过程中可能碰到的问题
查看>>
MySQL灵魂16问,你能撑到第几问?
查看>>
MySQL灵魂拷问:36题带你面试通关
查看>>
mysql状态分析之show global status
查看>>
mysql状态查看 QPS/TPS/缓存命中率查看
查看>>
mysql生成树形数据_mysql 实现树形的遍历
查看>>
mysql用于检索的关键字_Mysql全文搜索match...against的用法
查看>>
MySQL用得好好的,为什么要转ES?
查看>>
MySql用户以及权限的管理。
查看>>
MySQL用户权限配置:精细控制和远程访问的艺术!------文章最后有惊喜哦。
查看>>
mysql用户管理、常用语句、数据分备份恢复
查看>>
MySQL留疑问:left join时选on还是where?
查看>>