当前位置: 首页 > 知识库问答 >
问题:

为什么servlet映射中的url模式应该以正斜杠(/)开头

吴星汉
2023-03-14

我正在阅读Head First JSP和Servlet的书。我正在浏览servlet的映射。我在这里的疑问是

xml prettyprint-override"><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>
  1. 为什么url模式应该以正斜杠开始

书中明确提到:

不要忘记url模式中的正斜杠(/)。

你能解释一下吗?

共有2个答案

微生阳平
2023-03-14

关于上述问题,我可以找到其中一个问题的答案。

如果url模式不以正斜杠(/)开头,会发生什么情况。我查过了,但不记得了

当我通过删除url模式中的/来启动tomcat时,我收到了以下错误

Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> ServletBeer.do in servlet mapping
    at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3267)
    at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3242)
    at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1324)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1348)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:880)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:378)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5343)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

这表明如果我们没有强制使用扩展映射,那么url模式应该从/

楚帅
2023-03-14

url模式中的/表示使用此web.xml.的Web应用程序的根,因此当您给/ServletBeer.do时。这意味着超文本传输协议://

您必须在所有url映射中使用/并不是强制性的——这完全取决于您想要如何配置它。/只是一个正则表达式。您还可以在url模式中使用*. jsp-每次您在Web应用程序中请求任何jsp时,它实际上都会调用此servlet。考虑来自**JSR-000315JavaServlet 3.0最终版本的第12.2节映射**规范

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

■ 路径映射使用以“/”字符开头、以“/*”后缀结尾的字符串。

■以“*.”开头的字符串。前缀用作扩展映射。

■空字符串("")是一种特殊的URL模式,它精确地映射到应用程序的上下文根,即超文本传输协议://host: port/形式的请求

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

■ 所有其他字符串仅用于精确匹配

 类似资料:
  • 问题内容: 我最近开始学习html,而让我真正困惑的一件事是,为什么有些链接在路径之前有一个正斜杠(“ /”),而有些链接却没有呢? 即。 与 一个是相对路径,一个是绝对路径吗?以及href的工作原理如何?它只是在基本网址后面贴在路径名上吗? 问题答案: 一个是相对路径,一个是绝对路径吗? 是。 如果您的浏览器当前指向: 将链接到。 将链接到。 如果HTML文档的开头有一个base元素,则相对路径

  • 问题内容: 这样做的原因是“逃脱了”我。 JSON转义为正斜杠,因此哈希序列化为而不是。 为什么? 问题答案: JSON不需要您执行此操作,而是允许您执行此操作。它还允许您将“ \ u0061”用于“ A”,但这不是必需的。在将JSON嵌入标记中时允许帮助,该标记不允许内部字符串出现,如Seb指出的那样。 Microsoft的一些ASP.NET Ajax / JSON API使用此漏洞来添加额外的

  • 有效URL:http://localhost:8080/api/abc 无效URL: http://localhost:8080////api/abc http://localhost:8080/////api///abc http://api/////abc 问题:我的控制器接受以上所有URL。我想限制它,只接受有效的url,并在无效的url上抛出错误。 注意:我没有使用任何自定义路由。这是sp

  • 本文向大家介绍Python中的左斜杠、右斜杠(正斜杠和反斜杠),包括了Python中的左斜杠、右斜杠(正斜杠和反斜杠)的使用技巧和注意事项,需要的朋友参考一下 首先,"/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠,但是现在Windows (一)目录中的斜杠们 python读文件需要输入的目录参数,列出以下

  • 问题内容: 我不明白为什么会这样。 JSON转义为正斜杠,因此hash序列化为而不是。 为什么? 问题答案: JSON不需要您执行此操作,而是允许您执行此操作。它还允许您将“\u0061”用于“A”,但这不是必需的。在将JSON嵌入标记中时允许帮助,该标记不允许内部字符串出现,如Seb指出的那样。 Microsoft的一些ASP.NET Ajax/JSONAPI使用此漏洞来添加额外的信息,例如da

  • 我遇到了一些问题,无法理解URL映射是如何为servlet工作的。 我在网上看了很多教程和帖子,但没有运气。 所以,假设我有一个servlet(welcomeServlet.java)、一个索引页(index.html)和我的web.xml文件。 java文件在src目录中,而index.html在WebContent目录中。 我的索引页将由web.xml调用,并将显示一个按钮,一旦按下该按钮,将