java– 如何在Spring Interceptor中使用@ExceptionHandler?

java– 如何在Spring Interceptor中使用@ExceptionHandler?,第1张

概述我正在使用springmvc为客户端创建restful api,我有一个用于检查accesstoken的拦截器.public class AccessTokenInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRe

我正在使用springmvc为客户端创建restful API,我有一个用于检查accesstoken的拦截器.

public class AccesstokenInterceptor extends handlerinterceptorAdapter{    @OverrIDepublic boolean preHandle(httpServletRequest request,httpServletResponse response,Object handler) throws Exception{    if (handler instanceof HandlerMethod)    {        HandlerMethod handlerMethod = (HandlerMethod) handler;        Authorize authorizerequired = handlerMethod.getmethodAnnotation(Authorize.class);        if (authorizerequired != null)        {            String token = request.getheader("accesstoken");            ValIDatetoken(token);        }    }    return true;}protected long ValIDatetoken(String token){    Accesstoken accesstoken = TokenImpl.GetAccesstoken(token);    if (accesstoken != null)    {        if (accesstoken.getExpirationDate().compareto(new Date()) > 0)        {            throw new TokenExpiredException();        }        return accesstoken.getUserID();    }    else    {        throw new InvalIDTokenException();    }}

在我的控制器中,我使用@ExceptionHandler来处理异常,处理InvalIDTokenException的代码看起来像

@ExceptionHandler(InvalIDTokenException.class)public @ResponseBodyResponse handleInvalIDTokenException(InvalIDTokenException e){    Log.p.deBUG(e.getMessage());    Response rs = new Response();    rs.setErrorCode(ErrorCode.INVALID_TOKEN);    return rs;}

但不幸的是,preHandle方法抛出的异常并未被控制器中定义的异常处理程序捕获.

任何人都可以给我一个处理异常的解决方案吗?@H_301_20@PS:我的控制器方法使用以下代码生成Json和xml:

@RequestMapPing(value = "login",method = RequestMethod.POST,produces ={    "application/xml","application/Json"})
最佳答案使用其他方法解决,捕获异常并转发到另一个控制器.

try{    ValIDatetoken(token);} catch (InvalIDTokenException ex){    request.getRequestdispatcher("/API/error/invalIDtoken").forward(request,response);    return false;} catch (TokenExpiredException ex){    request.getRequestdispatcher("/API/error/tokenexpired").forward(request,response);    return false;}
总结

以上是内存溢出为你收集整理的java – 如何在Spring Interceptor中使用@ExceptionHandler?全部内容,希望文章能够帮你解决java – 如何在Spring Interceptor中使用@ExceptionHandler?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1269339.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存