springboot配置过滤器和拦截器
- import javax.servlet.*;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Value;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class SessionFilter implements Filter {
- private static final org.slf4j.Logger logger = LoggerFactory.getLogger(SessionFilter.class);
- @Value("$(serverurl)")
- private String serverurl;
- /*
- * 封装,不需要过滤的list列表
- */
- protected static List<Pattern> patterns = new ArrayList<Pattern>();
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
- patterns.add(Pattern.compile("loginq.do"));
- patterns.add(Pattern.compile("loginh.do"));
- patterns.add(Pattern.compile("share.do"));
- patterns.add(Pattern.compile("zhuce.do"));
- patterns.add(Pattern.compile("huiyuan.do"));
- patterns.add(Pattern.compile("login.do"));
- patterns.add(Pattern.compile("tiaozhuan.do"));
- patterns.add(Pattern.compile("register.do"));
- patterns.add(Pattern.compile("loginy.do"));
- patterns.add(Pattern.compile("jiali.do"));
- patterns.add(Pattern.compile("main/autoFillty_rj_situation.*"));
- patterns.add(Pattern.compile("main/post.*"));
- patterns.add(Pattern.compile("main/get.*"));
- patterns.add(Pattern.compile(".*[(\\.js)||(\\.css)||(\\.png)||(\\.tff)]"));
- }
- @Override
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
- HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
- HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
- String url = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length());
- if (url.startsWith("/") && url.length() > ) {
- url = url.substring();
- }
- if (isInclude(url)){
- chain.doFilter(httpRequest, httpResponse);
- return;
- } else {
- HttpSession session = httpRequest.getSession();
- if (session.getAttribute("currentUser") != null){
- // session存在
- chain.doFilter(httpRequest, httpResponse);
- return;
- } else {
- // session不存在 准备跳转失败
- httpResponse.sendRedirect("/loginy.do");
- }
- }
- }
- @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;
- }
- }
filter
在启动类里面添加
- /**
- * 配置过滤器
- * @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();
- }
- registration.addUrlPatterns("/**");过滤所有请求
- 拦截器:
在启动类里面添加
- @Bean//拦截器
- public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) {
- ServletRegistrationBean reg = new ServletRegistrationBean(dispatcherServlet);
- reg.getUrlMappings().clear();
- reg.addUrlMappings("*.html");
- reg.addUrlMappings("*.do");
- reg.addUrlMappings("*.js");
- reg.addUrlMappings("*.css");
- reg.addUrlMappings("*.txt");
- reg.addUrlMappings("*.woff");
- reg.addUrlMappings("*.ttf");
- reg.addUrlMappings("*.png");
- reg.addUrlMappings("*.jpg");
- return reg;
- }
springboot配置过滤器和拦截器的更多相关文章
- springboot环境下配置过滤器和拦截器
以前我们在配置过滤器和拦截器的时候,都是一个类继承一个接口,然后在xml中配置一下就ok 但是,但是,这是springboot的环境,没有xml的配置.所以我们还要继续学习啊啊啊啊啊~~~~~ 先简单 ...
- springboot(五)过滤器和拦截器
前言 过滤器和拦截器二者都是AOP编程思想的提现,都能实现诸如权限检查.日志记录等.二者有一定的相似之处,不同的地方在于: Filter是servlet规范,只能用在Web程序中,而拦截器是Sprin ...
- springboot使用过滤器和拦截器
1.Filter过滤器 @Componentpublic class AuthFilter implements Filter { private static final Log log = Log ...
- SpringBoot(十一)过滤器和拦截器
v博客前言 在做web开发的时候,过滤器(Filter)和拦截器(Interceptor)很常见,通俗的讲,过滤器可以简单理解为“取你所想取”,忽视掉那些你不想要的东西:拦截器可以简单理解为“拒你所想 ...
- 关于springboot中过滤器和拦截器
在解决跨域问题中,发现拦截器和过滤器用得不是熟练.就参考了下一下两个作者的文档.希望大家也可以汲取精华 文档1 https://blog.csdn.net/moonpure/article/det ...
- springboot中过滤器、拦截器、切片使用
直接贴代码:采用maven工程 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project ...
- springboot配置监听器、过滤器和拦截器
监听器:listener是servlet规范中定义的一种特殊类.用于监听servletContext.HttpSession和servletRequest等域对象的创建和销毁事件.监听域对象的属性发生 ...
- springBoot之配置文件的读取以及过滤器和拦截器的使用
前言 在之前的学习springBoot中,成功的实现了Restful风格的基本服务.但是想将之前的工程作为一个项目来说,那些是仅仅不够的.可能还需要获取自定义的配置以及添加过滤器和拦截器.至于为什么将 ...
- SpringBoot入坑指南之六:使用过滤器或拦截器
在Web应用中,常常存在拦截全部或部分请求进行统一处理的应用场景,如权限校验.参数校验.性能监控等. 在SpringMVC框架中,我们可以通过过滤器或拦截器实现相关功能,spring-boot-sta ...
随机推荐
- 本地读取服务器Xml文件及本地读本地的xml
updateUrl="ServerUrl"(服务器路径) WebClient wc = new WebClient(); Stream stream = wc.OpenRead(u ...
- java堆排序实现
代码如下: public class HeapSort { public static void heapSort(DataWrap[] data) { System.out.println(&quo ...
- linux学习8-正则表达式基础
正则表达式基础 实验介绍 虽然我们这一节的标题是正则表达式,但实际这一节实验只是介绍grep,sed,awk这三个命令,而正则表达式作为这三个命令的一种使用方式(命令输出中可以包含正则表达式).正则表 ...
- Django——1 环境搭建
Django 什么是Django 使用前的准备工作 新建项目 开启服务器 新建APP 简单实战 什么是Django框架 http服务器:用来接受用户请求,并将请求转发给web应用框架进行处理.Web应 ...
- python基础综合题----选自python二级考试
<笑傲江湖>是金庸的重要武侠作品之一.这里给出一个<笑傲江湖>的网络版本, 文件名为“笑傲江湖-网络版.txt”. ...
- 【[Offer收割]编程练习赛14 C】可疑的记录
[题目链接]:http://hihocoder.com/problemset/problem/1507 [题意] [题解] 如果多出来一个的话; 某个人的父亲节点就会变成两个 找到有两个父亲节点的人就 ...
- AndroidTreeView:Android树形节点View
AndroidTreeView:Android树形节点View AndroidTreeView是github上的一个第三方开源项目,其在github上的项目主页是:https://github. ...
- CF #330 D2 E
相当于给你一些点,要你最多删除不超过k,使得能使用一个边长为整数的长方形,与XY轴平行,使长方形的面积最小. 上课时拿笔来画画,然后忽然思路就开了,要是比赛也这样就好了~~先按X,Y分别排序,由于K较 ...
- springmvc 时间返回格式化
如果是@ResponseBody,可以通过@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")设置返回的样式: 如果是不是@ResponseBody ...
- Android游戏框架Libgdx使用入门
转载自:http://blog.csdn.net/cping1982/article/details/6176191 Libgdx作者博客:http://www.badlogicgames.com/ ...