我有一个基于 spring mvc 的应用程序。我想在请求 URI 到达控制器之前修改它。例如,控制器的 RequestMapping 是“abc/xyz”,但传入的请求是“abc/1/xyz”。我想修改传入请求以将其映射到控制器。
解决方案1:实现拦截器并修改传入的请求URI。但这里的问题是,由于没有与 URI 模式“abc/1/xyz”匹配的控制器,它甚至不会进入拦截器。(如果存在的话,我可能会缺少启用它的东西)
解决办法可能是将两个 URI 作为控制器的请求映射。
还有哪些其他解决方案?有没有办法在春天到来之前处理这个请求。正如在 web.xml 中的过滤器中处理它一样,我只是在编造它。
你可以写一个servletFilter
它包裹着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
.
但说实话,可能还有其他方法可以解决您的问题,除非您有充分的理由,否则您不应该这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)