import com.alibaba.fastjson.JSONObject;
import com.c26.project.filter.constants.ModuleConstant;
import com.c26.project.htsd.constants.BasicConstant;
import com.c26.project.htsd.dto.GameSnKeyDto;
import com.c26.project.htsd.service.GameSnService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
/***
* 日志拦截器
* 需要实现 Filter 接口,类上要带上 @Component 注解
*/
@Component
public class LogFilter implements Filter {
protected final Logger logger = LoggerFactory.getLogger(getClass());
@Resource
GameSnService gameSnService;
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain){
//获取请求对象
HttpServletRequest req = (HttpServletRequest)request;
// 获取请求地址,除域名外
// 请求地址:http://localhost:8080/currency/ali/getCurrency
// 则得到:/currency/ali/getCurrency
String uri = req.getRequestURI();
//根据"/"拆成数组,第一个为空字符串;["","currency","ali","getCurrency"]
String[] arrayUri = uri.split("/");
ServletRequest requestWrapper = request;
try {
String module = arrayUri[1];//组件,一般是控制器
String method = arrayUri[2];//方法
if (ModuleConstant.LOGIN.equals(module)){
/** 登录接口拦截 */
logger.info("登录接口拦截");
}else if (ModuleConstant.PAY.equals(module) && ModuleConstant.CREATE.equals(method)){
/** 创建订单接口拦截 */
logger.info("创建订单接口拦截");
}else if ("pay".equals(module) && "charge".equals(method)) {
/** 支付回调接口拦截 */
logger.info("支付回调接口拦截");
}
}catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
try {
chain.doFilter(requestWrapper, response);
}catch (Exception e){
logger.error(e.getMessage(), e);
}
}
}
过滤器(拦截器)
最新推荐文章于 2024-07-11 17:24:34 发布