1

我的 Servlet 映射如下所示:

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

所以我的 Servlet 响应请求,例如http://bla.com/myservlet/bla/bla/bla

我怎样才能让它响应http://bla.com/bla/bla/bla并摆脱myservlet路径的一部分。

此外,我想将 hello world servlet 剥离为 Jetty 附带的默认欢迎文件。

谢谢。

笔记:

  1. 我知道如何使用mod_rewrite/ Apache来做到这一点——我正在寻找不同的解决方案。
4

2 回答 2

3

如果您使用 Jetty 安装。有两种方法可以做到

  1. 您可以将您的战争文件重命名为root.war,使其上下文根为/
  2. 为你的 webapp 创建 context.xml

    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
    <!-- Required minimal context configuration :                        -->
    <!--  + contextPath                                                  -->
    <!--  + war OR resourceBase                                          -->
    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
    <Set name="contextPath">/</Set>
    <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/blawh.war</Set>
    

    context.xml 位于$JETTY_HOME/contexts. 正如你所看到的,这个目录已经有 test.war 的 context.xml。通过查看 test.xml,您可以很好地了解您的 webapp 的 context.xml 应该是什么样子。
    完成自己的创建后,继续删除contexts/test.xml,contexts/test.dwebapps/test.war. (只是为了清理测试的东西)。这也回答了你的第二个问题。

如果您使用的是 maven,只需执行以下操作:

<插件>
        <插件>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <配置>
              <webAppConfig>
                <上下文路径>/</上下文路径>
              </webAppConfig>
              <!-- 剪辑 -->

参考:Jetty/Howto/Deploy Web Applications

于 2012-10-19T05:26:51.550 回答
1

您可以添加多个 url 模式以映射到同一个 servlet

<servlet-mapping>
  <servlet-name>myservlet</servlet-name>
  <url-pattern>/bla</url-pattern>
</servlet-mapping>

<servlet-mapping>
  <servlet-name>myservlet</servlet-name>
  <url-pattern>/bla/bla</url-pattern>
</servlet-mapping>
于 2012-10-19T05:23:35.243 回答