说明
本文代码基于 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 = "/*")
@Slf4j
public class OauthFilter implements Filter {
/**
* 调用接口前
* @param filterConfig
* @throws ServletException
*/
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("init");
}
/**
* 调用接口后
* @param servletRequest
* @param servletResponse
* @param filterChain
* @throws IOException
* @throws ServletException
*/
@Override
public 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);
}
@Override
public void destroy() {
System.out.println("destroy");
}
}
启动类 WebApplication 添加注解
@ServletComponentScan //modify by v_hwhao 20190926-加入过滤器
public class WebApplication { //extends SpringBootServletInitializer
public 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")
@Slf4j
public class TRbtTestController {
//@Resource
@Autowired
private 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
控制台相关输出为
init
doFilter 之前-TestToken
返回数据:{"code":2000,"msg":"Success","data":{"id":"","name":"测试数据-菲克-1","version":"1.0.1"},"timestamp":1569500056369}
doFilter 之后-TestToken