为什么servlet映射中的url-pattern以正斜杠(/)开头

Avi*_*ddy 12 java servlets url-pattern servlet-mapping

我正在阅读Head First JSP和Servlets一书.我正在浏览servlet的映射.我怀疑的是

<servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>com.avinash.TestServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/ServletBeer.do</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
  1. 为什么要url-pattern以正斜杠(/)开头?
  2. 正斜杠(/)代表什么?它代表我们的webapp名称吗?
  3. 如果url-pattern不以正斜杠(/)开头会发生什么?
  4. 它是以正斜杠(/)开头的规范吗?

在书中明确提到:

不要忘记url-pattern中的正斜杠(/).

你可以解释吗?

shi*_*ari 7

/在url-图案是指使用本web.xml中的web应用程序的根.所以,当你付出时/ServletBeer.do.这意味着http://<yourhost>:<port>/<your context Root>/ServletBeer.do.当你点击这个url时,com.avinash.TestServlet将调用已映射到此ie的servlet .

您必须/在所有网址映射中使用它并非强制性- 这完全取决于您希望如何配置它./只是一个正则表达式.您还可以*.jsp在url-pattern中使用 - 每次在Web应用程序中请求任何jsp时,它都会实际调用此servlet.考虑**JSR-000315 Java Servlet 3.0最终版本中的12.2规范映射**

12.2映射规范在Web应用程序部署描述符中,以下语法用于定义映射:

■以"/"字符开头并以"/*"后缀结尾的字符串用于路径映射.

■以"*"开头的字符串 prefix用作扩展映射.

■空字符串("")是一种特殊的URL模式,它完全映射到应用程序的上下文根,即表单的请求 http://host:port/<contextroot>/.在这种情况下,路径信息是'/',servlet路径和上下文路径是空字符串("").

■仅包含"/"字符的字符串表示应用程序的"默认"servlet.在这种情况下,servlet路径是请求URI减去上下文路径,路径信息为null.

■所有其他字符串仅用于完全匹配