1. interceptors:
New interceptor:
public class DemoInterceptor implements HandlerInterceptor
{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception
{
String name = request.getParameter("name");
System.out.println("DemoInterceptor..." + name);
return true;
}
}
Configuration class:
@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer
{
@Override
public void addInterceptors(InterceptorRegistry registry)
{
InterceptorRegistration demoInterceptor = registry.addInterceptor(new DemoInterceptor());
demoInterceptor.addPathPatterns("/*");
// 等同于:registry.addInterceptor(new DemoInterceptor()).addPathPatterns("/*");
}
}
test:
controller:
@GetMapping("/demo")
public String demo(String name)
{
return "demo";
}
Access: HTTP: // localhost: 8088 / Demo name = ZS? Results:
2. Filter
New Filter:
public class DemoFilter implements Filter
{
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
String name = request.getParameter("name");
System.out.println("DemoFilter..." + name);
chain.doFilter(request, response);
}
}
Configuration class:
@Bean
public FilterRegistrationBean demoFilterRegist() {
FilterRegistrationBean registration = new FilterRegistrationBean(new DemoFilter());
registration.addUrlPatterns("/*");
return registration;
}
Test Results:
Annotations can also be used in the form of:
Annotated on the filter: @WebFilter (urlPatterns = "/ *")
On startup class annotated: @ServletComponentScan (basePackages = "com.app.config.filter")
@ServletComponentScan scans servlet-related notes
About mentioned earlier in the article to verify the interceptor token:
Article link: https://blog.csdn.net/qq_34928194/article/details/103879771
Interceptor:
@Component
public class TokenInterceptor implements HandlerInterceptor
{
@Autowired
private JwtUtils jwtUtils;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception
{
response.setCharacterEncoding("utf-8");
String token = request.getHeader("token");
if (StringUtils.isEmpty(token))
{
token = request.getHeader("Authorization");
}
if (StringUtils.isEmpty(token))
{
token = request.getParameter("token");
}
HashMap<String, String> result = new HashMap<String, String>();
result.put("message", "token认证失败!");
if (handler instanceof HandlerMethod)
{
if (CommonUtil.isNotEmpty(token))
{
int verify = jwtUtils.verify(token);
if (0 == verify)
{
return true;
}
else if (1 == verify)
{
result.put("message", "token已过期!");
}
}
}
response.getWriter().write(JSONObject.toJSONString(result));
return false;
}
}
Configuration class:
@Autowired
private TokenInterceptor tokenInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry)
{
String[] excludePath = new String[] {"/api/login"};
registry.addInterceptor(tokenInterceptor).addPathPatterns("/api/**").excludePathPatterns(excludePath);
}