spring boot 如何添加拦截
添加拦截其它挺简单的,直接上代码吧,我以简单的登陆验证拦截为例
1,先实现一个拦截器
package com.dk.game.manager.intecptors; import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import com.alibaba.fastjson.JSONObject;
import com.dk.game.manager.service.CommonService; public class LoginFilter implements HandlerInterceptor {
public static String SESSION_USER = "USER";
private static Logger logger = LoggerFactory.getLogger(LoginFilter.class);
private CommonService commonService; public LoginFilter(CommonService commonService) {
this.commonService = commonService;
} @Override
public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception {
String path = req.getRequestURI();
logger.debug("请求路径:{}", path);
Object value = req.getSession(true).getAttribute(SESSION_USER);
if (value == null) {
if (req.getHeader("x-requested-with") != null && req.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {//如果ajax请求,走这里
resp.setCharacterEncoding("utf-8");//防止返回中文乱码,它必须放在PrintWriter获取之前,否则不会生效
resp.setContentType("text/html; charset=utf-8");
PrintWriter out = resp.getWriter();
JSONObject result = commonService.error(-100, "登陆已失效,请重新登陆!!");
out.print(result.toJSONString());// session失效
out.flush();
} else {
resp.sendRedirect("/dkgm/index");
}
return false;
}
logger.info("{} 操作 {}", value, path);
return true;
}
}
2,添加拦截器
package com.xinyue.interview; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.xinyue.interview.gm.filter.LoginFilter;
/**
*
* @ClassName: WebMvcConfig
* @Description: webmvc的相关配置实现,可以添加拦截器
* @author: wgs QQ群:66728073,197321069,398808948
* @date: 2018年10月26日 下午3:13:46
*/
@Configuration //这里的@Configuration注解必须有,要不然这个类不起做用,网上有的文章没有这个注解,拦截器不起作用,让我查了半天
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Autowired
private CommonService commonService;
public LoginFilter getLoginFilter() {
return new LoginFilter(commonService);
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getLoginFilter()).addPathPatterns("/gm/**.gm").excludePathPatterns("/gm/login")
; //注意这里路径的匹配,必须以/开头,前面是要拦截的请求,后面是不需要拦截的请求。
}
}

更多文章:http://www.coc88.com
spring boot 如何添加拦截的更多相关文章
- spring boot中注册拦截器
拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重 ...
- spring boot 实现mybatis拦截器
spring boot 实现mybatis拦截器 项目是个报表系统,服务端是简单的Java web架构,直接在请求参数里面加了个query id参数,就是mybatis mapper的query id ...
- Spring boot Jpa添加对象字段使用数据库默认值
Spring boot Jpa添加对象字段使用数据库默认值 jpa做持久层框架,项目中数据库字段有默认值和非空约束,这样在保存对象是必须保存一个完整的对象,但在开发中我们往往只是先保存部分特殊的字段其 ...
- Spring Boot实战:拦截器与过滤器
一.拦截器与过滤器 在讲Spring boot之前,我们先了解一下过滤器和拦截器.这两者在功能方面很类似,但是在具体技术实现方面,差距还是比较大的.在分析两者的区别之前,我们先理解一下AOP的概念,A ...
- spring boot配置springMVC拦截器
spring boot通过配置springMVC拦截器 配置拦截器比较简单, spring boot配置拦截器, 重写preHandle方法. 1.配置拦截器: 2重写方法 这样就实现了拦截器. 其中 ...
- spring boot 过滤器、拦截器的区别与使用
原文:https://blog.csdn.net/heweimingming/article/details/79993591 拦截器与过滤器的区别: 1.过滤器和拦截器触发时机不一样,过滤器是在请求 ...
- Spring boot之添加JSP支持
大纲 (1) 创建Maven web project: (2) 在pom.xml文件添加依赖 (3) 配置application.properties支持jsp (4) 编写测试Controller ...
- spring boot 项目添加maven依赖时provided
spring boot 项目是自带tomcat 的,但是我们有时候是需要把项目打包成war 然后放到独立的tomcat中运行的,这个时候我们就需要将它自带的tomcat给排除开,这时候我们就可以使用& ...
- Spring Boot 如何使用拦截器、过滤器、监听器?
过滤器 过滤器的英文名称为 Filter, 是 Servlet 技术中最实用的技术. 如同它的名字一样,过滤器是处于客户端和服务器资源文件之间的一道过滤网,帮助我们过滤掉一些不符合要求的请求,通常用作 ...
随机推荐
- 【Linux】Linux简介
思维导图 什么是Linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统. Linux能运行主要的UNIX工 ...
- C# 默认访问修饰符
c# 中类,成员,枚举,结构等默认访问修饰符是? 根据MSDN文档有: [MSDN] Classes and structs that are not nested within other clas ...
- CSS文字溢出处理问题
单行省略 div { white-space:nowrap; //断行处理:无断行 text-overflow:ellipsis; //文字溢出处理:省略号 overflow:hidden; //溢出 ...
- 图片懒加载、selenium和PhantomJS
1.图片懒加载 1.1 概念及实现原理 图片懒加载是一种网页优化技术.图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完, 将大大增加页面的首屏加 ...
- jQuery (01) 浏览器的事件模型
浏览器的事件模型 由网景公司引入的 DOM0 级事件模型 把事件处理程序绑定到 DOM 元素的属性上: ele.onclick(); ele.onDOMContentLoad(); ele.onloa ...
- 微信公众号_订阅号_微信JS-SDK网页开发
微信JS-SDK( 分享接口很常用 ) 是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包 借助微信高效使用相机.语音.选题.位置等手机系统的能力,同时可以直接使用微信分享.扫一扫.支付等 ...
- CodeForces 1143 B. Nirvana
题目 解决思路是,每个位上都是9的情况,遍历一下就可以了. #include <iostream> using namespace std; int n; int a[35]; int m ...
- 好大一个坑: EF Core 异步读取大字符串字段比同步慢100多倍
这两天遇到一个奇怪的问题,通过 EF/EF Core 查询数据库速度奇慢,先是在传统的 ASP.NET 项目中遇到(用的是EF6.0),后来将该项目迁移至 ASP.NET Core 也是同样的问题(用 ...
- RxSwift 操作符
RxSwift 操作符 (throttle) https://blog.csdn.net/weixin_38318852/article/details/80334838 RxSwift 操作符 (w ...
- 关于Android布局优化的代码使用
1. include标签: include标签的作用是在一个布局文件中导入另一个布局文件.在开发中经常会有多个页面同时拥有一部分相同的布局,这个时候如果每个布局都把那个部分的代码写一遍就会使得代码重 ...