【问题标题】:web.xml URL pattern matching question for TomcatTomcat 的 web.xml URL 模式匹配问题
【发布时间】:2010-12-20 06:03:43
【问题描述】:

我想在我的 Java Web 应用程序中使用这种模式:

<url-pattern>/*/test.html</url-pattern>

然后解析 servlet 中的 URL 以获取星号的值,并使用该值查询数据库中的不同表。

然而,这似乎是 Tomcat 的非法模式。 有什么方法可以实现这一点,而不必对斜线之间的位进行硬编码?

(如果您想知道上下文是什么,示例使用:/vancouver-hotel/rooms.html/seattle-hotel/rooms.html

【问题讨论】:

    标签: tomcat web.xml url-pattern


    【解决方案1】:

    最好的方法是将您的 URL 结构重新排列为 /hotels/&lt;cityname&gt; 并让 HotelServlet 监听 /hotels/* 并使用 request.getPathInfo() 获取 &lt;cityname&gt; 作为路径信息。您可以使用通常的java.lang.String 方法进一步解析路径信息。例如split("/"),然后将这些部分存储为请求属性或其他可由业务/域对象访问的东西。

    【讨论】:

      【解决方案2】:

      您可以使用 url 重写过滤器:

      http://tuckey.org/urlrewrite/

      【讨论】:

        【解决方案3】:

        使用 GET 参数轻松完成:

        http://localhost:8080/rooms?city=vancouver
        

        【讨论】:

        • 对 SEO 不友好。查询参数被忽略。
        • 将所有内容映射到房间,并在从查询参数中获取城市后让 servlet 进行排序。
        猜你喜欢
        • 1970-01-01
        • 2012-04-04
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 2010-12-02
        • 2011-11-24
        • 1970-01-01
        • 2011-08-09
        相关资源
        最近更新 更多