1、加入 阿里的 json jar包

<!--json  jar相关jar包-->

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.7</version>
</dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.23</version>
</dependency>

本文需要jar依赖 如图 - >

拦截之后返回的效果->

新建 config 包 并新建 InterceptorConfig  配置类 类上面添加 @Configuration 注解 表示是一个配置类

package com.pigs.springbootpigsinterceptor.config;

import com.pigs.springbootpigsinterceptor.interceptor.HomeInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /**
* @author PIGS
*
* 拦截 路径
*/
@Configuration
public class InterceptorConfig implements WebMvcConfigurer { /**
* 拦截 类
*/
@Autowired
private HomeInterceptor homeInterceptor; /**
* 这个方法用来注册拦截器,写好的拦截器需要通过这里添加注册才能生效
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) { /**
* 表示拦截所有的请求,
* addPathPatterns("/**");
* excludePathPatterns("/login", "/register")
* 表示除了登陆与注册之外,因为登陆注册不需要登陆也可以访问excludePathPatterns("/login", "/register")
*
*
*/
registry.addInterceptor(homeInterceptor).addPathPatterns("/home"); } }

新建 一个拦截类

HomeInterceptor 在类上面添加 @Component 注解 交给spring 容器管理 并实现 HandlerInterceptor  类

代码 ->

package com.pigs.springbootpigsinterceptor.interceptor;

import com.alibaba.fastjson.JSON;
import com.pigs.springbootpigsinterceptor.util.ResultUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter; /**
*
* 拦截器
*
* @author PIGS
*/
@Component
public class HomeInterceptor implements HandlerInterceptor { private static final Logger logger = LoggerFactory.getLogger(HomeInterceptor.class); /**
* 判断session 是否有值
*
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String userName = (String) request.getSession().getAttribute("userName");
logger.info("userName={}",userName); if (userName==null){
String result = JSON.toJSONString(ResultUtil.error(101, "你还没有登录哦!"));
returnJson(response, result);
return false;
} return true;
} /**
* 返回客户端数据
*/
private void returnJson(HttpServletResponse response, String result) throws Exception {
PrintWriter writer = null;
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=utf-8");
try {
writer = response.getWriter();
writer.print(result); } catch (IOException e) {
} finally {
if (writer != null) {
writer.close();
}
} } /**
* 处理请求完成后视图渲染之前的处理操作
*
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object
o, ModelAndView modelAndView) throws Exception { } /**
* 视图渲染之后的操作
*
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @param e
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse
httpServletResponse, Object o, Exception e) throws Exception { } }
自定义返回格式 ResultFormat 类 ->

代码->

package com.pigs.springbootpigsinterceptor.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component; /**
* @author PIGS-猪农·杨
* @version 1.0
* @date 2020/2/17 14:41
* 统一返回格式
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class ResultFormat<T> {
/**
* 错误码
*/
private Integer code; /**
* 提示信息
*/
private String msg; /**
* 内容
*/
private T data; }

ResultUtil返回工具类 ->

代码->

package com.pigs.springbootpigsinterceptor.util;

import com.pigs.springbootpigsinterceptor.entity.ResultFormat;
import org.springframework.beans.factory.annotation.Autowired; /**
* @author PIGS-猪农·杨
* @version 1.0
* @date 2020/2/17 14:53
* 统一返回工具类
*/
public class ResultUtil { public static ResultFormat success(Object object) {
ResultFormat result =new ResultFormat();
result.setCode(200);
result.setMsg("成功");
result.setData(object);
return result;
} public static ResultFormat success() {
return success(null);
} public static ResultFormat error(Integer code, String msg) {
ResultFormat result =new ResultFormat();
result.setCode(code);
result.setMsg(msg);
return result;
} } 已经托管 码云
https://gitee.com/pig_farmer_x/springboot/blob/master/springboot-pigs-interceptor.zip

SpringBoot 拦截器 && 拦截之后返回前台自定义格式的更多相关文章

  1. 【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener

    =================6.SpringBoot拦截器实战和 Servlet3.0自定义Filter.Listener ============ 1.深入SpringBoot2.x过滤器Fi ...

  2. Springboot前后端分离中,后端拦截器拦截后,前端没有对应的返回码可以判断

    项目登录流程如下 用户进入前端登录界面,输入账号密码等,输入完成之后前端发送请求到后端(拦截器不会拦截登录请求),后端验证账号密码等成功之后生成Token并存储到数据库,数据库中包含该Token过期时 ...

  3. Struts自定义拦截器&拦截器工作原理

    0.拦截器的调用原理: 拦截器是一个继承了序列化接口的普通接口.其工作原理是讲需要被拦截的对象作为参数传到intercept()方法内,在方法内部对此对象进行处理之后再执行原方法.intercept( ...

  4. Springboot通过拦截器拦截请求信息收集到日志

    1.需求 最近在工作中遇到的一个需求,将请求中的客户端类型.操作系统类型.ip.port.请求方式.URI以及请求参数值收集到日志中,网上找资料说用拦截器拦截所有请求然后收集信息,于是就开始了操作: ...

  5. Struts2 拦截器—拦截action

    对于拦截器的基本使用这里我就懒得打字了,我这里就讲下如何用 Struts2 拦截器 拦截action.这是我个人的想法,如果有什么不对的,或者你们有什么更好的方法.请多多留言! 拦截器的默认拦截的方法 ...

  6. 防止SpringMVC拦截器拦截js等静态资源文件

    SpringMVC提供<mvc:resources>来设置静态资源,但是增加该设置如果采用通配符的方式增加拦截器的话仍然会被拦截器拦截,可采用如下方案进行解决: 方案一.拦截器中增加针对静 ...

  7. springboot springmvc拦截器 拦截POST、PUT、DELETE请求参数和响应数据,并记录操作日志

    1.操作日志实体类 @Document(collection = "operation_log") @Getter @Setter @ToString public class O ...

  8. mybatis拦截器 修改mybatis返回结果集中的字段的值

    项目中使用了shardingJDBC,业务库做了分库,公共库没在一起,所以导致做码值转换的时候,需要在实现类里面做转码,重复的代码量大,故考虑用mybatis拦截器,将码值转换后再做返回给实现类.   ...

  9. struts2拦截器配置;拦截器栈;配置默认拦截器;拦截方法的拦截器MethodFilterInterceptor;完成登录验证

    struts2.xml 内容 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts ...

随机推荐

  1. 2016年3月13日 FXStreet首席分析师:欧元/美元下周走势展望

    FX168讯 欧元/美元在经历周初沉闷的走势之后,最终在欧洲央行出台一系列措施促进通货膨胀和经济增长之后怒涨至近一个月最高位.欧洲央行决议公布之前,投资者预期存款利率将下调10至15个基点,并可能进一 ...

  2. Kubernetes详解

    1.1 Kubernetes简介 1.1.1 什么是Kubernetes Kubernetes (通常称为K8s,K8s是将8个字母“ubernete”替换为“8”的缩写) 是一个以容器为中心的基础架 ...

  3. TCP/IP 协议栈初识

    原文:深入浅出 TCP/IP 协议栈 0. 简介 TCP/IP 协议栈是网络通信中一系列网络协议的综合,是核心骨架.它定义了电子设备接入因特网.以及数据在它们之间的传输方式,是一份标准.TCP/IP ...

  4. Spring 错误 cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'context:property-placeholder'.

    我来说下这个出错的原因吧 eclise中xsd的验证问题Description Resource Path Location Type cvc-complex-type.2.4.c: The matc ...

  5. python 面向对象静态方法、类方法、属性方法、类的特殊成员方法

    静态方法:只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性. 在类中方法定义前添加@staticmethod,该方法就与类中的其他(属性,方法)没有关系,不能通过实例化类调用方法使用 ...

  6. 添砖加瓦:[OpenCV]入门(一)

    1.OpenCV安装 (1)下载: 本文采用的是源码的方式进行安装,源码可以从OpenCV官网下载.这里以3.4.1为例. (2)安装 这里下载到的文件为3.4.1.zip."unzip 3 ...

  7. Redis 机器内核参数优化

    " > /proc/sys/vm/overcommit_memory echo never > /sys/kernel/mm/transparent_hugepage/enabl ...

  8. Think 框架漏洞利用

    下午有点闲,又没有女朋友陪,该干嘛呢??? 对了,做安全的是不需要女朋友的,哈哈哈哈哈 废话不多说,本机搭建环境: 首先nmap扫描一下,哦哈,有点东西. 开的端口有点多,这个时候有点窃喜,开的端口太 ...

  9. AE脚本:把SubRip/SRT/TXT/VTT字幕导入到AE

    脚本介绍 如果您需要在视频中嵌入字幕以进行网络或磁带传送,那么这个脚本则非常有用.可以将SubRip/SRT/TXT/VTT字幕格式文件通过 pt_ImportSubtitles脚本直接加载到AE软件 ...

  10. 内存:你跑慢点行不行?CPU:跑慢点你养我吗?内存:我不管!(内附超全思维导图)

    主存(RAM) 是一件非常重要的资源,必须要认真对待内存.虽然目前大多数内存的增长速度要比 IBM 7094 要快的多,但是,程序大小的增长要比内存的增长还快很多.不管存储器有多大,程序大小的增长速度 ...