gpt4 book ai didi

spring - 使用Spring的@RequestMapping和通配符

转载 作者:行者123 更新时间:2023-12-04 03:46:10 25 4
gpt4 key购买 nike

这类似于this question,但是我对自己的情况仍然感到困惑。我想将此 Ant 风格的模式映射到 Controller 方法:

/results/**

也就是说,我希望像 www.hostname.com/MyServlet/results/123/abc/456/def/这样的任何URL都可以使用此方法。我有:
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/results/*</url-pattern>
</servlet-mapping>

和:
@RequestMapping(value="/**", method=RequestMethod.GET)
public ModelAndView handleRequest() {...}

这可以将请求引导到我的方法,但会导致我遇到几个问题:
  • 如果我添加另一个servlet映射,例如<url-pattern>/another-mapping/*</url-pattern>,该怎么办?它将也映射到该方法!如何将两者分开?
  • 为什么url模式/results/*有效,而/results/**无效?根据 Ant 路径样式,**意味着包括嵌套的/字符,而*在下一个/处停止。因此,它仅应成功映射URL,例如/results/123,而不是bot /results/123/abc/。正确的?
  • 最佳答案

    也许在您的servlet映射中,您希望将所有流量定向到“/*”。这样,您可以在 Controller 中区分对不同的@RequestMapping使用哪种方法。

    <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/*</url-pattern>
    </servlet-mapping>


    @RequestMapping(value="/results/**", method=RequestMethod.GET)
    public ModelAndView handleResults() {...}

    @RequestMapping(value="/another-mapping/**", method=RequestMethod.GET)
    public ModelAndView handleAnotherMapping() {...}

    希望以上内容对数字1有所帮助。就数字2而言,我认为您不能在web.xml域描述符中使用“ Ant 风格”模式匹配器(特别是**)。

    关于spring - 使用Spring的@RequestMapping和通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5954793/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com