在Spring MVC中修改请求URI

我有一个基于Spring MVC的应用程序。我想在到达控制器之前修改请求URI。例如,控制器的RequestMapping为“ abc /

xyz”,但即将到来的请求为“ abc / 1 / xyz”。我想修改传入请求以将其映射到控制器。

解决方案1:实现拦截器并修改传入的请求URI。但是这里的问题是,因为没有控制器与URI模式“ abc / 1 /

xyz”匹配,所以它甚至都没有进入拦截器。(如果有的话,我可能会缺少启用它的功能)将两个URI都作为控制器的请求映射。

还有什么其他解决方案?有没有办法在春天之前处理这个请求。正如在web.xml的过滤器中处理它一样,我只是在弥补它。

回答:

您可以编写一个servlet Filter,该servlet

包装HttpServletRequest并为该方法返回不同的值getRequestURI。像这样:

public class RequestURIOverriderServletFilter implements Filter {

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

chain.doFilter(new HttpServletRequestWrapper((HttpServletRequest) request) {

@Override

public String getRequestURI() {

// return what you want

}

}, response);

}

// ...

}

Servlet过滤器配置必须添加到中web.xml

但真诚的是,可能还有其他方法可以解决您的问题,除非您有充分的理由,否则不应该这样做。

以上是 在Spring MVC中修改请求URI 的全部内容, 来源链接: utcz.com/qa/425975.html

回到顶部