【问题标题】:Spring MVC map controller with trailing string of urlSpring MVC 地图控制器,带有 url 的尾随字符串
【发布时间】:2016-05-04 09:19:53
【问题描述】:

是否可以通过 url 的尾随关键字映射 spring mvc 控制器。例如,假设我有以下网址:

  1. example.com/{cityName}
  2. example.com/{cityName}/{categoryName}
  3. example.com/{cityName}/ping
  4. example.com/{cityName}/{categoryName}/ping

我想要 3 个控制器方法。第一个 url 应由控制器“X”处理,第二个 url 应由方法“Y”处理,第三、第四个 url 应由单个方法“Z”处理。这意味着任何以/ping 结尾的url 都应该只由方法“Z”处理。无论该网址的主要内容是什么。

这在 Spring MVC 中可行吗?

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    是否可以通过a的尾随关键字映射spring mvc控制器 网址?

    是的,您可以使用 Ant 风格的路径模式。以下控制器将处理对以 /ping 结尾的 URL 的任何请求,具有任意数量的级别:

    @RequestMapping(path = "**/ping")
    public String Z(HttpServletRequest request) {
        return request.getRequestURI();
    }
    

    为了提取那些路径变量,例如cityNamecategoryName,您应该将 HttpServletRequest 注入方法处理程序。

    除了 URI 模板,@RequestMapping 注解还支持 Ant 风格的路径模式。您可以在Spring Documentation 上阅读更多内容。

    【讨论】:

    • 谢谢,这就是我要找的
    【解决方案2】:

    您似乎要求匹配斜杠作为控制器映射的一部分。这在 Spring MVC and the maintainers have no plans to add it 中不受支持。作为一种特殊情况,如果您仅限于两个级别的“目录”,您可以像上面那样显式指定映射。

    【讨论】:

    • 感谢您的信息。我不限于两级目录。可能是 3 或 4,那么有什么解决方法吗
    • @Abhi 不简单,不。您可以评论该 JIRA 问题并表达您需要能够进行多级匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 2017-01-16
    • 2020-08-24
    • 1970-01-01
    相关资源
    最近更新 更多