本文共 7123 字,大约阅读时间需要 23 分钟。
package com.example.mongodemo.config;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Component;import org.springframework.web.method.HandlerMethod;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * @Author lyr * @create 2020/3/24 1:18 * 拦截器 * 要在 webMvcConfiguration注册 */@Slf4j@Componentpublic class WebInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { log.info("开始"); //打印对应 处理请求的 Controller类 log.info(((HandlerMethod)handler).getBean().getClass().getName()); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { log.info("运行中"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { log.info("结束"); //抛出异常的话 会有 ex参数 }}
然后 要在配置上面注册一下这个拦截器
package com.example.mongodemo.config;import org.springframework.beans.factory.annotation.Autowired;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.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/** * @Author lyr * @create 2020/3/23 19:53 */@Configuration //标注时配置类public class MvcConfig implements WebMvcConfigurer { @Autowired private WebInterceptor interceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(interceptor); } @Bean public MvcConfig MyMvcConfig() { MvcConfig mvcConfig = new MvcConfig() { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); } }; return mvcConfig; }}
package com.lyr.cakemanagerv2.config;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.WebMvcConfigurer;import javax.annotation.Resource;/** * @Author lyr * @create 2020/7/30 11:27 */@Configuration //标注时配置类public class WebConfig implements WebMvcConfigurer { @Resource private TokenInterceptor interceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(interceptor) .addPathPatterns("/**") .excludePathPatterns("/test"); } @Bean public WebConfig MyMvcConfig() { return new WebConfig(); }}
拦截器
package com.lyr.cakemanagerv2.config;import dto.Result;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Component;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import token.JWTCode;import token.JwtUtil;import util.web.WebUtil;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * @Author lyr * @create 2020/7/29 23:10 */@Slf4j@Componentpublic class TokenInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { setHeader(httpServletResponse); String token = httpServletRequest.getHeader("token"); String uri = httpServletRequest.getRequestURI(); log.info("{} -> {}",httpServletRequest.getMethod(),uri ); try{ JWTCode code = JwtUtil.judgeToken(token); switch (code) { case OVERDUE:{ Result
跨域问题也可以用过滤器来解决
package com.lyr.cakemanagerv2.config;import org.springframework.stereotype.Component;import javax.servlet.*;import javax.servlet.http.HttpServletResponse;import java.io.IOException;/** * @Author lyr * @create 2020/7/21 14:38 */@Componentpublic class WebFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { setHeader((HttpServletResponse) res); chain.doFilter(req, res); } private void setHeader(HttpServletResponse res) { HttpServletResponse response = (HttpServletResponse) res; response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, HEAD"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "access-control-allow-origin, authority, content-type, version-info, X-Requested-With"); }}
转载地址:http://dauzi.baihongyu.com/