当前位置: 代码迷 >> J2EE >> 关于获取请求的url对应的类的名字的有关问题
  详细解决方案

关于获取请求的url对应的类的名字的有关问题

热度:87   发布时间:2016-04-17 23:31:58.0
关于获取请求的url对应的类的名字的问题。
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

应该能找到
------解决思路----------------------
引用:
Quote: 引用:

1楼 思路不错

看看这几个重点类
ControllerClassNameHandlerMapping
BeanNameUrlHandlerMapping
SimpleUrlHandlerMapping

应该能找到


Spring有个拦截器里面可以获取到

但是我就是想到Filter里面获取到,

只要你知道相关的Handler在哪里了,你自然可以在Filter获取到;主要看他存放的地方,我觉得应该可以通过静态的ApplicationContext获取到的。你多调试的跟踪一下,我看到源码里面他也是从ApplicationContext有获取过数据。
------解决思路----------------------
1. 先到拦截器 (父Context)
2. 然后才到 Spring Servlet (子Context)

父Context 不能访问子Context 的内容。
但是可以看Spring的源码是怎么映射的,Spring4后是在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
一级一级的找
  相关解决方案