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 技术中最实用的技术. 如同它的名字一样,过滤器是处于客户端和服务器资源文件之间的一道过滤网,帮助我们过滤掉一些不符合要求的请求,通常用作 ...
随机推荐
- 译:Dataiku 白皮书之《在银行和保险行业应用数据科学》
原文链接:Data Science For Banking & Insurance 如果不能正常访问,请点击备份获取. 在银行和保险行业应用数据科学 互联网巨头和金融技术创业时代的求生和发展 ...
- C 小白的 thrift 环境搭建
公司有个通讯 是用的 thrift ,thrift 是个什么都东西,可以类比 webservice 吧,比 webservice 高效些,不管是啥,搞他! 先在 mac 上搞本地开发环境 网上一搜 貌 ...
- ZooKeeper Getting Started Guide
http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html What is ZooKeeper? ZooKeeper is a centra ...
- IOS中多线程的总结
首先要知道线程和进程的区别.一个系统上运行的每一个应用程序都是一个线程.而进程中要执行的任务都是在线程上来实现的,所以说线程是进程的最小执行单元. 进程最少要有一个线程.多线程,顾名思义就是多条线程. ...
- Java课程2019年3月开学测试
一.登录界面 模板的验证方式已经写在了function里面,我们只需要在提交的过程中进行验证. 我们这里需要注意到的是在login文件夹中,有一个randcode的验证码生成文件,打开代码我们可以看到 ...
- 前端性能优化 —— reflow(回流)和repaint(重绘)
简要:整个在浏览器的渲染过程中(页面初始化,用户行为改变界面样式,动画改变界面样式等)reflow(回流)和repaint(重绘) 会大大影响web性能,尤其是手机页面.因此我们在页面设计的时候要尽量 ...
- [Codeforces Round #433][Codeforces 853C/854E. Boredom]
题目链接:853C - Boredom/854E - Boredom 题目大意:在\(n\times n\)的方格中,每一行,每一列都恰有一个被标记的方格,称一个矩形为漂亮的当且仅当这个矩形有两个角是 ...
- Linux中使用Apache发布html网页
在线学习: https://www.shiyanlou.com/courses/1 工具/原料 Linux,httpd,vi 样例html文件一份 方法/步骤 1 编辑httpd配置文件 2 查找 ...
- swust oj 983
利用二叉树中序及后序遍历确定该二叉树的先序序列 1000(ms) 10000(kb) 2606 / 4908 已知二叉树的中序和先序遍历可以唯一确定后序遍历.已知中序和后序遍历可以唯一确定先序遍历,但 ...
- tomcat端口冲突,关闭端口方法
CMD打开控制台 输入:netstat -ano | findstr 8080 //最后一行的进程号PID 输入:taskkill /F /PID 所要关闭的PID号 如图所示 之后会补充