连初级都算不上的代码小白 2024-03-11 14:42 采纳率: 52.4%
浏览 25

拦截器的handler和handlerMethod



@Component
@Slf4j
public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if(handler instanceof HandlerMethod){
            log.debug("1111111");
            return true;
        }
        //看有没有对应的session、有则放行、没有则
        log.info("2222222");
        return false;
    }
}

这段代码中if(handler instanceof HandlerMethod)的作用是什么

  • 写回答

5条回答 默认 最新

  • 檀越@新空间 2024-03-11 14:42
    关注

    连初级都算不上的代码小白 下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    if(handler instanceof HandlerMethod)的作用是判断拦截到的处理器对象(handler)是否为Spring MVC的HandlerMethod类型。

    作用是用来判断当前请求是否是一个Controller方法的请求,进而决定是否要执行拦截逻辑。

    解决方案:

    1. 如果handler是HandlerMethod类型,表示当前请求是一个Controller方法的请求,可以继续执行拦截器的逻辑并放行。
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if(handler instanceof HandlerMethod){
            log.debug("1111111");
            return true;
        }
        // 不是Controller方法的请求,不执行拦截逻辑
        log.info("2222222");
        return false;
    }
    
    1. 如果handler不是HandlerMethod类型,则不是Controller方法的请求,可以直接放行,不执行拦截器的逻辑。
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if(handler instanceof HandlerMethod){
            log.debug("1111111");
            return true;
        }
        // 不是Controller方法的请求,直接放行
        return true;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月11日