在spring mvc中修改请求URI

2024-05-13

我有一个基于 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(使用前将#替换为@)

在spring mvc中修改请求URI 的相关文章

随机推荐