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 技术中最实用的技术. 如同它的名字一样,过滤器是处于客户端和服务器资源文件之间的一道过滤网,帮助我们过滤掉一些不符合要求的请求,通常用作 ...
随机推荐
- (三)ajax请求不同源之nginx反向代理跨域
一.基本原理 nginx是一个高性能的web服务器,常用作反向代理服务器.nginx作为反向代理服务器,就是把http请求转发到另一个或者一些服务器上. 用nginx反向代理实现跨域,是最简单的跨域方 ...
- XVIII Open Cup named after E.V. Pankratiev. Ukrainian Grand Prix
A. Accommodation Plan 对于已知的$K$个点,离它们距离都不超过$L$的点在树上是一个连通块,考虑在每种方案对应的离$1$最近的点统计. 即对于每个点$x$,统计离它距离不超过$L ...
- ubuntu中如何安装python3.6
此处使用命令行方式来安装Python3.6: sudo wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz sudo ta ...
- Java HotSpot(TM) 64-Bit Server VM warning
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000007e4200000, 467140608, 0) ...
- 牛刀小试之用pytorch实现LSTM
https://www.itcodemonkey.com/article/9008.html 要看一看
- PropertyEditor、Formatter、Converter的应用
@ResponseBody @RequestMapping("date.do") public String data(Date date) { return date.toStr ...
- 学习虚拟机时Vbox提示硬件加速不可用时应该怎么办?
也不知大家在安装或使用虚拟机时有没有出现过这样的现象?Vbox提示硬件加速不可用? 在学习Java和安装虚拟机时,自己的电脑上出现Vbox提示Vt-x硬件加速不可用,但后也知道了方法怎么弄! 方法及步 ...
- ETL数据采集方法
1.触发器方式 触发器方式是普遍采取的一种增量抽取机制.该方式是根据抽取要求,在要被抽取的源表上建立插入.修改.删除3个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个增量日志表 ...
- 学习ActiveMQ(八):activemq消息的持久化
1. 持久化方式介绍前面我们也简单提到了activemq提供的插件式的消息存储,在这里再提一下,主要有以下几种方式: AMQ消息存储-基于文件的存储方式,是activemq开始的版本默认的消息存储方式 ...
- Linux自动化命令工具expect
expect是Unix系统中用来进行自动化控制和测试的软件工具,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等. 用法 Linux中我们经常写脚本处 ...