为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用SpringMVC拦截器的preHandle方法获取当前执行的目标方法

如访问http://localhost:8080/courses/testEncoding在拦截器中可以获取到testEncoding方法

ps:可以使用HandlerMethod获取到该方法,但是原本正常运行的程序会报错:

java.lang.ClassCastException: org.springframework.web.servlet.resource.ResourceHttpRequestHandler cannot be cast to org.springframework.web.method.HandlerMethod

页面可以显示,但是并无CSS样式。。删除HandlerMethod语句就可以正常运行


@Override

public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {

     System.out.println("执行preHandle");

     HandlerMethod hm = (HandlerMethod) arg2;

     System.out.println("当前执行的对象是"+hm.getMethod());

     return true;

}


正在回答

2 回答

if (o instanceof HandlerMethod) 

强转之前加个判断

1 回复 有任何疑惑可以回复我~

自问自答。。

决定不钻牛角尖了,直接使用request.getRequestURI()获取到了。。。

附上代码:

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse arg1, Object arg2) throws Exception {

     System.out.println("执行preHandle");

     System.out.println("getRequestURI"+request.getRequestURI());

     return true;

}

以及SpringMVC配置文件中的拦截器配置

<!-- 拦截来自所有的请求 -->

<mvc:interceptors>

    <mvc:interceptor>

        <mvc:mapping path="/**"/>

        <mvc:exclude-mapping path="/**/fonts/*"/>

         <mvc:exclude-mapping path="/**/*.css"/>

         <mvc:exclude-mapping path="/**/*.js"/>

         <mvc:exclude-mapping path="/**/*.png"/>

         <mvc:exclude-mapping path="/**/*.gif"/>

         <mvc:exclude-mapping path="/**/*.jpg"/>

         <mvc:exclude-mapping path="/**/*.jpeg"/>

        <bean class="com.springmvc.demo.interceptor.TestInterceptor" />

    </mvc:interceptor>

</mvc:interceptors>

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Spring MVC拦截器
  • 参与学习       73576    人
  • 解答问题       59    个

Spring MVC拦截器的工作原理及配置,介绍拦截器与过滤器的区别

进入课程

如何使用SpringMVC拦截器的preHandle方法获取当前执行的目标方法

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号