【问题标题】:servlet mapping how Tomcat does it actually?servlet 映射 Tomcat 究竟是怎么做的呢?
【发布时间】:2014-09-26 17:24:04
【问题描述】:

我已经安装了 Tomcat 并浏览到他们的示例 http://mylocalhost.com:8080/examples/servlets/servlet/HelloWorldExample

但是当我在这里查看 web.xml 中的 servlet 映射时,它是针对 HelloWorldExample 的

<servlet-mapping>
    <servlet-name>HelloWorldExample</servlet-name>
    <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern>
</servlet-mapping>

为什么缺少 examples,不应该是这样吗:

<url-pattern>/examples/servlets/servlet/HelloWorldExample</url-pattern>

【问题讨论】:

    标签: java tomcat servlets


    【解决方案1】:

    访问web项目的url是

    http://yourHost:yourPort/yourProjectName

    由此您可以看出examples 是您的项目名称或您的项目的context root

    所以当你提供像http://mylocalhost.com:8080/examples这样的网址时

    首先容器读取deployment descriptor&lt;welcome-file-list&gt;标签并显示&lt;welcome-file&gt;下指定的文件(如果存在)。

    当你指定这个 url http://mylocalhost.com:8080/examples/servlets/servlet/HelloWorldExample 容器再次在 deployment descriptor 中搜索指定的 url /servlets/servlet/HelloWorldExample,如果找到,则加载指定的相应类。

    【讨论】:

      【解决方案2】:

      “examples”是项目的文件夹名称。它的名称将包含在应用程序路径中。

      【讨论】:

      • 这意味着我有这部分 url 必须与我的应用程序的 PHYSICAL 文件夹相同?这是强制性的:如果我想为该应用程序名称提供另一个网址怎么办?
      • /servlets/servlet/HelloWorldExample 从应用程序的 src 文件夹开始,一直到 servlet。
      • 好的,但是如何使用“MyOwnApp”而不是“examples”mylocalhost.com:8080/MyOwnApp/servlets/servlet/… 指定此 url
      猜你喜欢
      • 2013-01-30
      • 2020-09-29
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      相关资源
      最近更新 更多