【问题标题】:Path mapping of <url-pattern> tag<url-pattern> 标签的路径映射
【发布时间】:2014-03-08 19:15:39
【问题描述】:

根据中给出的路径有什么规则

标签被映射到servlet?

【问题讨论】:

标签: java jsp jakarta-ee servlets


【解决方案1】:

通俗地说,您在 url 模式中指定的内容将被重定向到指定的 servlet。例如:

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>com.blah.blah.ActionDispatcher</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.z</url-pattern>
</servlet-mapping>

所以当你的 url 是 localhost:8080/app/test.z 时,ActionDispatcher servlet 会处理它。

【讨论】:

    【解决方案2】:

    Web 容器如何将客户端请求映射到 servlet?

    在收到客户端请求后,Web 容器确定 Web 应用程序 转发给哪个。所选的 Web 应用程序必须具有最长的 与请求 URL 的开头匹配的上下文路径。 URL 的匹配部分 是映射到 servlet 时的上下文路径。

    接下来,Web 容器必须找到 servlet 以使用以下方法处理请求 路径映射过程如下所述。

    用于映射到 servlet 的路径是来自请求的请求 URL 对象减去上下文路径和路径参数。 URL 路径映射 以下规则按顺序使用。第一个成功的匹配被使用,无需进一步 尝试匹配:

    1. 容器将尝试找到与请求路径完全匹配的 servlet 的路径。成功匹配选择 servlet。
    2. 容器将递归地尝试匹配最长的路径前缀。这个做完了 通过一次下级路径树一个目录,使用“/”字符作为 路径分隔符。最长的匹配决定了选择的 servlet。
    3. 如果 URL 路径中的最后一段包含扩展名(例如 .jsp),则 servlet 容器将尝试匹配处理扩展请求的 servlet。 扩展名被定义为最后一个“。”之后的最后一段的一部分。字符。
    4. 如果前三个规则都不匹配 servlet,容器将 尝试提供适合所请求资源的内容。如果“默认” servlet 是为应用程序定义的,它将被使用。 容器必须使用区分大小写的字符串比较进行匹配。

    来源

    【讨论】:

      【解决方案3】:

      我将通过以下示例代码向您解释。

       <servlet>
         <description></description>            // enter description of servlet
         <display-name>GetCascadParamServlet</display-name>  // the name which display in url
         <servlet-name>GetCascadParamServlet</servlet-name>   // Actual servlet name
         <servlet-class>com.agileinfotech.bsviewer.servlet.GetCascadParamServlet</servlet-class> // this is package name , where exactly your servlet locate 
       </servlet>
       <servlet-mapping>
         <servlet-name>GetCascadParamServlet</servlet-name>  // servlet name which exact declare same as your servlet name
         <url-pattern>/GetCascadParamServlet</url-pattern>  // if we want to call another servlet or class we can declare it here when it will see that url redirect it to the that configuration.
       </servlet-mapping>
      

      希望你能理解整个servlet的映射。

      【讨论】:

        【解决方案4】:
        <servlet>
        <servlet-name>WAP Callback Servlet</servlet-name>
        <servlet-class>
        com.ism.integeration.WAPBilldeskCallbackServlet</servlet-class>
        </servlet>
        <servlet-mapping>
        <servlet-name>WAP Callback Servlet</servlet-name>
        <url-pattern>/jsp/wapcallback/*</url-pattern>
        </servlet-mapping>
        

        当任何包含“wapcallback”的响应 url 时,它将为相应的 servlet 做前言。

        【讨论】:

          【解决方案5】:

          &lt;url-pattern&gt; 指定应调用 servlet-name 中给出的 servlet 的 url 类型。根据 servlet 规范 SRV.11.2 用于 url 模式中的字符串或路径:

          1. 以“/”字符开头并以“/*”后缀结尾的字符串用于路径映射。
          2. 以“*.”前缀开头的字符串用作扩展映射。
          3. 仅包含“/”字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet 路径是请求 URI 减去上下文路径,并且路径信息为空。
          4. 所有其他字符串仅用于完全匹配。

          参考:How to configure Servlet.

          【讨论】:

            猜你喜欢
            • 2010-09-06
            • 2011-05-21
            • 2011-09-21
            • 2017-07-18
            • 2015-10-04
            • 1970-01-01
            • 1970-01-01
            • 2015-09-14
            • 2011-02-05
            相关资源
            最近更新 更多