添加拦截器后,前台找不到Controller.

拦截器返回true了,为什么拿不到Controller?

public class LoginInterceptor implements HandlerInterceptor {

//    private static final Logger log = LoggerFactory.getLogger(LoginInterceptor.class);

    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
            throws Exception {
    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
            throws Exception {
    }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
        return true;
    }
}

dispatcher-servlet.xml

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <mvc:exclude-mapping path="/js/**"/>
            <mvc:exclude-mapping path="/css/**"/>
            <mvc:exclude-mapping path="/image/**"/>
<!--            <mvc:exclude-mapping path="/Login.jsp" />-->
            <bean class="controller.LoginInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

UserController

@Controller
@RequestMapping("/user")
public class UserController {
    @Resource
    UserService userService;

    @RequestMapping("/query")
    @ResponseBody
    public JSONObject query(){
        JSONObject jsonObject = new JSONObject();
        List<User> list = userService.query();
        jsonObject.put("data",list);
        return jsonObject;
    }
}

页面中的Controller全都无法访问
return true后也会被拦截吗?
图片说明

注销拦截器配置后,上面会显示拿到的Json数据。

特别,调试的时候preHandle() 和 query() 好像都能进断点!但是跑完了前台就404

2个回答

HandlerInterceptor 的 preHandle 的返回值为 false 的时候整个请求才会结束。
真正的原因是你把 login.jsp 给拦截了,需要把它放开,只拦截 Controller 就可以。

<mvc:exclude-mapping path="/Login.jsp" />
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问