Filter 过滤器是web开发中很重要的一个组件,下面以一个session登陆的例子介绍下spring boot中如何使用Filter

首先要准备一个实现了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不存在 准备跳转失败
/* 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;
}
}
实际开发中往往有很多请求要直接请求进来,不需要鉴权登陆的,所以代码中过滤掉这种请求的代码,装进list就好了。
/**
* 配置过滤器
* @return
*/
@Bean
public FilterRegistrationBean someFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(sessionFilter());
registration.addUrlPatterns("/*");
registration.addInitParameter("paramName", "paramValue");
registration.setName("sessionFilter");
return registration;
}
/**
* 创建一个bean
* @return
*/
@Bean(name = "sessionFilter")
public Filter sessionFilter() {
return new SessionFilter();
}
经过上面这俩步的配置,过滤器基本上就可以了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# springboot配置filter
# spring
# boot
# 过滤器
# springboot
# filter
# Spring Boot的filter(过滤器)简单使用实例详解
# spring boot过滤器FilterRegistrationBean实现方式
# Spring Boot使用过滤器Filter过程解析
# springboot @WebFilter注解过滤器的实现
# Spring Boot之过滤器 Filter注入的方式解析
# Spring Boot Filter 过滤器的使用方式
# 不需要
# 装进
# 有很多
# 不存在
# 跳转
# 如何使用
# 创建一个
# 大家多多
# 就可以
# 中很
# 实现了
# 这俩
# 过滤掉
# 就好了
# implements
# public
# private
# Pattern
# Matcher
# Created
相关文章:
重庆市网站制作公司,重庆招聘网站哪个好?
常州企业网站制作公司,全国继续教育网怎么登录?
网站专业制作公司有哪些,做一个公司网站要多少钱?
建站之星如何通过成品分离优化网站效率?
常州自助建站费用包含哪些项目?
如何在阿里云完成域名注册与建站?
七夕网站制作视频,七夕大促活动怎么报名?
哈尔滨网站建设策划,哈尔滨电工证查询网站?
如何快速打造个性化非模板自助建站?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
教程网站设计制作软件,怎么创建自己的一个网站?
如何在建站之星网店版论坛获取技术支持?
如何通过VPS搭建网站快速盈利?
如何在IIS管理器中快速创建并配置网站?
如何通过老薛主机一键快速建站?
如何用VPS主机快速搭建个人网站?
如何在搬瓦工VPS快速搭建网站?
免费视频制作网站,更新又快又好的免费电影网站?
建站主机选虚拟主机还是云服务器更好?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
如何在新浪SAE免费搭建个人博客?
三星网站视频制作教程下载,三星w23网页如何全屏?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
建站ABC备案流程中有哪些关键注意事项?
建站之星安装步骤有哪些常见问题?
如何选择CMS系统实现快速建站与SEO优化?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
高端网站建设与定制开发一站式解决方案 中企动力
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
如何用免费手机建站系统零基础打造专业网站?
网站网页制作专业公司,怎样制作自己的网页?
如何用美橙互联一键搭建多站合一网站?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
如何快速启动建站代理加盟业务?
宝塔新建站点报错如何解决?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
如何在IIS7上新建站点并设置安全权限?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
如何在西部数码注册域名并快速搭建网站?
家庭建站与云服务器建站,如何选择更优?
定制建站策划方案_专业建站与网站建设方案一站式指南
如何通过wdcp面板快速创建网站?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
如何高效利用200m空间完成建站?
建站之星导航如何优化提升用户体验?
如何通过远程VPS快速搭建个人网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。