Filter里面 拦截了所有的请求,
可以获取到请求的uri
例如 login.do
这个login.do 是写在UserAction.class里面的。 项目用的是SpringMVC
我现在就想通过请求 获取到他对应的类,就是UserAction.class
谢谢。
------解决思路----------------------
调试了一下源代码,还没发现怎么知道,思路大致如下
1.查看Spring ApplicationContext里面有没有相关Web Controller的管理器,至于如何获取Spring ApplicationContext可以百度。
2.我看源代码发现DispatcherServlet下面有一个handlerMappings集合,第一个参数是RequestMappingHandlerAdapter里面有相关跳转的Controller内容;你可以顺藤摸瓜来调试。
------解决思路----------------------
1楼 思路不错
看看这几个重点类
ControllerClassNameHandlerMapping
BeanNameUrlHandlerMapping
SimpleUrlHandlerMapping
应该能找到
------解决思路----------------------
只要你知道相关的Handler在哪里了,你自然可以在Filter获取到;主要看他存放的地方,我觉得应该可以通过静态的ApplicationContext获取到的。你多调试的跟踪一下,我看到源码里面他也是从ApplicationContext有获取过数据。
------解决思路----------------------
1. 先到拦截器 (父Context)
2. 然后才到 Spring Servlet (子Context)
父Context 不能访问子Context 的内容。
但是可以看Spring的源码是怎么映射的,Spring4后是在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
一级一级的找