-->

什么是的url-pattern web.xml和如何配置Servlet中的意义是什么?(What i

2019-07-17 13:00发布

我已经手动配置web.xml我的应用程序。 现在,当运行我的应用我所面对的问题。 我试图访问我servlet从我的jsp页面。 但是,它抛出错误的page not found

该小服务程序都放置在下面的文件夹位置

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

那么,究竟应该是在Servlet中条目url-patternservlet-mapping 。 这样, servlet可以通过URL访问。

Answer 1:

url-pattern是使用web.xml映射你servlet特定的URL。 请参阅下面的XML代码,类似的代码你会发现在你web.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>

如果你改变url-patternAddPhotoServlet/AddPhotoServlet/MyUrl 。 然后, AddPhotoServlet的servlet可以通过访问/MyUrl 。 适合安全原因,要隐藏自己的实际网页的网址。

Java Servlet的url-pattern规格:

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

参考: Java Servlet规范

你也可以看一下这Java Servlet的基础知识



Answer 2:

Servlet的映射有两个子标签的url-pattern和servlet名。 url-pattern的指定为其在servlet的名字给这个servlet应该被称为URL的类型。 要注意的是,容器将使用区分大小写为servlet的匹配字符串比较。

的第一规格 url-pattern一个web.xml在服务器.COM servlet容器上的服务器上下文文件匹配图案中的<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

的第二规格 url-pattern位于路径A上下文/在example.com在代理实例在模式匹配<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`

的第三个规范 url-mapping ,包含图案的映射<url-pattern>/</url-pattern>的请求如果没有其他的模式相匹配相匹配。 这是默认的映射。 映射到这个模式该servlet调用默认的servlet。

默认映射经常针对应用程序的第一页。 显式提供一个默认映射也确保了错误的URL请求到应用程序返回的应用程序处理,而不是返回一个错误。

下面这个servlet-mapping元素映射server的servlet实例的默认映射。

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

包含此元素的上下文,即没有被另一个映射处理的任何请求被转发到server的servlet。

而且最重要的是我们应该知道的规则对URL路径映射

  1. 容器将尝试找到请求到Servlet的路径的路径的精确匹配。 一个成功的匹配选择的servlet。
  2. 容器将递归地尝试匹配最长的路径前缀。 这是通过在同一时间,降压路径树目录中的“/”字符作为路径分隔符来完成。 最长匹配确定所选择的小服务程序。
  3. 如果在URL路径的最后一段包含扩展名(如.JSP),Servlet容器将尝试匹配一个处理的延期请求的servlet。 的延伸被定义为在最后的最后一个段的部分“” 字符。
  4. 如果没有以前的三个规则导致一个servlet匹配,容器将尝试提供内容适用于请求的资源。 如果“默认”的servlet为应用程序定义的,它会被使用。

参考URL模式



文章来源: What is the significance of url-pattern in web.xml and how to configure servlet?