url模式在web.xml中有什么意义,如何配置servlet?

我已为我的应用程序手动配置。现在,我在运行应用程序时遇到了问题。我正在尝试从我的页面访问我的页面。但是,它抛出错误为.web.xmlservletjsppage not found

servlet 放置在文件夹位置下方

<application folder>/WEB-INF/classes/<package>

那么,和 中的 servlet 的条目应该是什么。因此,可以通过URL访问。url-patternservlet-mappingservlet


答案 1

url-pattern用于将您映射到特定 URL。请参阅下面的 xml 代码,您可以在配置文件中找到类似的代码。web.xmlservletweb.xml

<servlet>
    <servlet-name>AddPhotoServlet</servlet-name>  //servlet name
    <servlet-class>upload.AddPhotoServlet</servlet-class>  //servlet class
</servlet>
 <servlet-mapping>
    <servlet-name>AddPhotoServlet</servlet-name>   //servlet name
    <url-pattern>/AddPhotoServlet</url-pattern>  //how it should appear
</servlet-mapping>

如果将 更改为 。然后,可以使用 servlet 进行访问。出于安全原因,您希望隐藏实际的页面URL。url-patternAddPhotoServlet/AddPhotoServlet/MyUrlAddPhotoServlet/MyUrl

Java Servlet url-pattern Specification:

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

参考 : Java Servlet Specification

您也可以阅读 Java Servlet 的基础知识


答案 2

Servlet 映射有两个子标签,url-pattern 和 servlet-name。url-pattern 指定了应该调用 servlet-name 中给出的 servlet 的 url 类型。请注意,容器将使用区分大小写的字符串比较进行 servlet 匹配。

在服务器.com的 servlet 容器上的服务器上下文文件的第一个规范与以下模式匹配:url-patternweb.xml<url-pattern>/status/*</url-pattern>

http://server.com/server/status/synopsis               = Matches
http://server.com/server/status/complete?date=today    = Matches
http://server.com/server/status                        = Matches
http://server.com/server/server1/status                = Does not match

第二规范 位于代理位置的路径 /examples 的上下文 example.com 与以下模式匹配:url-pattern<url-pattern>*.map</url-pattern>

 http://server.com/server/US/Oregon/Portland.map    = Matches
 http://server.com/server/US/server/Seattle.map     = Matches
 http://server.com/server/Paris.France.map          = Matches
 http://server.com/server/US/Oregon/Portland.MAP    = Does not match, the extension is uppercase
 http://example.com/examples/interface/description/mail.mapi  =Does not match, the extension is mapi rather than map`

的第三个规范,包含该模式的映射在没有其他模式匹配时与请求匹配。这是默认映射。映射到此模式的 servlet 称为缺省 servlet。url-mapping<url-pattern>/</url-pattern>

默认映射通常定向到应用程序的第一页。显式提供默认映射还可以确保应用程序返回中格式错误的 URL 请求由应用程序处理,而不是返回错误。

下面的 servlet 映射元素将 servlet 实例映射到缺省映射。server

<servlet-mapping>
  <servlet-name>server</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

对于包含此元素的上下文,任何未由其他映射处理的请求都将转发到 servlet。server

最重要的是,我们应该了解URL路径映射的规则

  1. 容器将尝试查找请求路径与 servlet 路径的完全匹配。成功的匹配将选择 servlet。
  2. 容器将以递归方式尝试匹配最长的路径前缀。这是通过一次在路径树中单步执行一个目录,使用“/”字符作为路径分隔符来完成的。最长的匹配项决定了所选的 servlet。
  3. 如果 URL 路径中的最后一个段包含扩展(例如.jsp),则 servlet 容器将尝试匹配处理扩展请求的 servlet。扩展被定义为最后一个“.”字符之后的最后一个段的一部分。
  4. 如果前三个规则都没有导致 servlet 匹配,容器将尝试提供适合所请求资源的内容。如果为应用程序定义了“默认”servlet,则将使用它。

引用网址模式


推荐