Java ControllerAdvcie不';t使用GenericFilterBean处理所有异常
我使用GenericFilterBean制作了一个过滤器Java ControllerAdvcie不';t使用GenericFilterBean处理所有异常,java,spring,spring-boot,Java,Spring,Spring Boot,我使用GenericFilterBean制作了一个过滤器 public class JwtFilter extends GenericFilterBean { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, Servle
public class JwtFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String jwt = resolveToken(httpServletRequest);
String requestURI = httpServletRequest.getRequestURI();
try {
System.out.println(man);
if (StringUtils.hasText(jwt) && tokenProvider.validateToken(jwt)) {
Authentication authentication = tokenProvider.getAuthentication(jwt);
SecurityContextHolder.getContext().setAuthentication(authentication);
} else {
}
} catch(Exception e) {
System.out.println("yoyo");
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Invalid token.");
return ;
}
filterChain.doFilter(servletRequest, servletResponse);
}
我有一个例外,可以抓住每一个例外
@ControllerAdvice
@RestController
public class CustomizedResponseEntityExceptionHandler
extends ResponseEntityExceptionHandler{
@Autowired
private WebhookService webhookService;
@ExceptionHandler(Exception.class)
public final ResponseEntity<Object> handleAllException
(Exception ex, WebRequest request){
webhookService.sendMessage(ex.getMessage());
ExceptionResponse exceptionResponse = new ExceptionResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(), false, ex.getMessage());
return new ResponseEntity(exceptionResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
@ControllerAdvice
@RestController
公共类CustomizedResponseEntityExceptionHandler
扩展ResponseEntityExceptionHandler{
@自动连线
私有WebhookService WebhookService;
@ExceptionHandler(Exception.class)
公共最终责任处理例外
(例外情况,例如WebRequest){
webhookService.sendMessage(例如getMessage());
ExceptionResponse ExceptionResponse=新的ExceptionResponse(HttpStatus.INTERNAL_SERVER_ERROR.value(),false,例如getMessage());
返回新的ResponseEntity(exceptionResponse,HttpStatus.INTERNAL_服务器_错误);
}
如果您在筛选器中看到,则会出现错误“System.out.println(man);”,因为没有man变量。但是当错误发生时,它会给出spring boot default的响应。
我定义了response.sendError,外加@ExceptionHandler(Exception.class),以防万一。
两种方法都不起作用。
在这种情况下,如何控制自定义响应?
感谢您阅读。为什么要使用
@RestController
注释?如果没有您所说的名为man
的变量,那么您的代码就无法编译。