如何在没有上下文路径的情况下运行我的servelt(Jetty)

时间:2012-10-19 05:02:13

标签: java servlets

我的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 执行此操作 - 我正在寻找其他解决方案。

2 个答案:

答案 0 :(得分:2)

如果您正在使用Jetty安装。有两种方法可以做到这一点

  1. 您可以将war文件重命名为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.xmlcontexts/test.dwebapps/test.war。 (只是为了清理测试的东西)。这也回答了你的第二个问题。

  3. 如果您使用的是maven,请执行以下操作:

     <plugins>
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <configuration>
                  <webAppConfig>
                    <contextPath>/</contextPath>
                  </webAppConfig>
                  <!-- snip -->
    

    参考:Jetty/Howto/Deploy Web Applications

答案 1 :(得分:1)

您可以添加多个网址格式以映射到同一个小程序

<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>