【发布时间】:2014-03-08 19:15:39
【问题描述】:
根据中给出的路径有什么规则
的
标签被映射到servlet?
【问题讨论】:
-
您想知道映射是如何发生的吗?或者
/、/*等不同的url格式有什么区别? -
我想知道映射是如何发生的。
标签: java jsp jakarta-ee servlets
根据中给出的路径有什么规则
的
标签被映射到servlet?
【问题讨论】:
/、/*等不同的url格式有什么区别?
标签: java jsp jakarta-ee servlets
通俗地说,您在 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 会处理它。
【讨论】:
在收到客户端请求后,Web 容器确定 Web 应用程序 转发给哪个。所选的 Web 应用程序必须具有最长的 与请求 URL 的开头匹配的上下文路径。 URL 的匹配部分 是映射到 servlet 时的上下文路径。
接下来,Web 容器必须找到 servlet 以使用以下方法处理请求 路径映射过程如下所述。
用于映射到 servlet 的路径是来自请求的请求 URL 对象减去上下文路径和路径参数。 URL 路径映射 以下规则按顺序使用。第一个成功的匹配被使用,无需进一步 尝试匹配:
- 容器将尝试找到与请求路径完全匹配的 servlet 的路径。成功匹配选择 servlet。
- 容器将递归地尝试匹配最长的路径前缀。这个做完了 通过一次下级路径树一个目录,使用“/”字符作为 路径分隔符。最长的匹配决定了选择的 servlet。
- 如果 URL 路径中的最后一段包含扩展名(例如 .jsp),则 servlet 容器将尝试匹配处理扩展请求的 servlet。 扩展名被定义为最后一个“。”之后的最后一段的一部分。字符。
- 如果前三个规则都不匹配 servlet,容器将 尝试提供适合所请求资源的内容。如果“默认” servlet 是为应用程序定义的,它将被使用。 容器必须使用区分大小写的字符串比较进行匹配。
【讨论】:
我将通过以下示例代码向您解释。
<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的映射。
【讨论】:
<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 做前言。
【讨论】:
<url-pattern> 指定应调用 servlet-name 中给出的 servlet 的 url 类型。根据 servlet 规范 SRV.11.2 用于 url 模式中的字符串或路径:
【讨论】: