0
我需要以某种方式访问带有Web过滤器中的反射的处理程序方法,并获取requestPattern
值,而无需将控件传递到调度程序servlet。我怎样才能做到这一点? 我只为那HttpServletRequest
对象,不知何故我也可以@Autowire
那里ApplicationContext
对象。如何知道指定的HttpServletRequest对象的处理程序弹簧控制器类和处理程序方法
谢谢。
我需要以某种方式访问带有Web过滤器中的反射的处理程序方法,并获取requestPattern
值,而无需将控件传递到调度程序servlet。我怎样才能做到这一点? 我只为那HttpServletRequest
对象,不知何故我也可以@Autowire
那里ApplicationContext
对象。如何知道指定的HttpServletRequest对象的处理程序弹簧控制器类和处理程序方法
谢谢。
我已经开始了解DispatcherServlet本身是如何决定使用这种方式来实现控制和实现的处理程序方法的。 这里是代码:
//Initialization in filter constructor
....
final HandlerMapping handlerMappings = BeanFactoryUtils.beansOfTypeIncludingAncestors(applicationContext, HandlerMapping.class, true, false).get("requestMappingHandlerMapping");
....
@Override
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
.....
Method mappingMethod = null;
try {
mappingMethod = ((HandlerMethod)handlerMappings.getHandler(request).getHandler()).getMethod();
RequestMapping requestMapping = mappingMethod.getAnnotation(RequestMapping.class);
final String requestPattern = requestMapping.value();
}
catch(Exception ex){
logger.error("Error getting the mapping bean for the request URL " + request.getRequestURI(), ex);
return;
}
....
}