在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