说明
本文代码基于 2.引用 lombok 使用 log 项目代码进行修改
开发环境
| 名称 | 版本 |
|---|---|
| 操作系统 | Windows 10 X64 |
| JDK | JDK1.8(jdk-8u151-windows-x64) |
| IntelliJ IDEA | IntelliJ IDEA 2018.3 |
| Maven | Maven 3.6.0 |
相关内容
文件结构

test-invoice-web
添加 filter 包和文件 OauthFilter
package com.test.invoice.filter;import lombok.extern.slf4j.Slf4j;import org.springframework.core.annotation.Order;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import static com.xiaoleilu.hutool.lang.Console.log;/*** 过滤器** @author: v_hwhao* @version:* @date: 2019-09-26 19:47*/@Order(1)//越小越先执行@WebFilter(filterName = "oauthFilter", urlPatterns = "/*")@Slf4jpublic class OauthFilter implements Filter {/*** 调用接口前* @param filterConfig* @throws ServletException*/@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("init");}/*** 调用接口后* @param servletRequest* @param servletResponse* @param filterChain* @throws IOException* @throws ServletException*/@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;String contentToken=((HttpServletRequest) servletRequest).getHeader("Content-token");httpServletResponse.setHeader("Content-token", contentToken+"-Set");System.out.println("doFilter 之前-"+contentToken);filterChain.doFilter(servletRequest, servletResponse);System.out.println("doFilter 之后-"+contentToken);}@Overridepublic void destroy() {System.out.println("destroy");}}
启动类 WebApplication 添加注解
@ServletComponentScan //modify by v_hwhao 20190926-加入过滤器public class WebApplication { //extends SpringBootServletInitializerpublic static void main(String[] args){SpringApplication.run(WebApplication.class,args);}}
TRbtTestController-Get() 方法修改
package com.test.invoice.controller;import com.google.gson.Gson;import com.google.gson.GsonBuilder;import com.test.invoice.data.TRbtTestData;import com.test.invoice.data.TRbtTestDataParam;import com.test.invoice.service.consumer.TRbtTestConsumer;import com.test.invoice.vo.ResponseVO;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import lombok.extern.slf4j.Slf4j;import org.springframework.web.bind.annotation.*;import org.springframework.beans.factory.annotation.Autowired;/*** 消费者,通过 Feign-api 调用** @author:* @version:* @date: 2019-08-12 14:49*/@RestController@Api(description = "测试框架系统控制类")@RequestMapping("/Inv/Api")@Slf4jpublic class TRbtTestController {//@Resource@Autowiredprivate TRbtTestConsumer testConsumer;@PostMapping("/Test/Get")@ApiOperation(value = "系统框架测试-获取单个数据", httpMethod = "POST", response = ResponseVO.class, notes = "系统框架测试-获取单个数据")public ResponseVO Get(@RequestBody TRbtTestData data){GsonBuilder builder = new GsonBuilder();Gson gson = builder.create();//log.info("请求方法 Get(),请求参数:"+ gson.toJson(data));ResponseVO result = testConsumer.Get(data);System.out.println("返回数据:"+ gson.toJson(result));//log.info("返回数据:"+ gson.toJson(result));return result;}}
测试
使用 Postman 访问 Get 接口
地址:http://localhost:8080/Inv/Api/Test/Get
Body raw 参数:"id":"","name":"测试数据-菲克-1","version":""}


IntelliJ IDEA 2018.3 控制台相关输出为
initdoFilter 之前-TestToken返回数据:{"code":2000,"msg":"Success","data":{"id":"","name":"测试数据-菲克-1","version":"1.0.1"},"timestamp":1569500056369}doFilter 之后-TestToken