用于访问Java / J2EE中的服务器端资源的URL行为

时间:2013-12-10 16:36:21

标签: java java-ee servlets web-applications

我的部署描述符如下

<servlet>
    <servlet-name>postServlet</servlet-name>
    <servlet-class>com.http.post.PostServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>postServlet</servlet-name>
    <url-pattern>/postServlet</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>postServlet</servlet-name>
    <servlet-class>com.http.post.PostServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>postServlet</servlet-name>
    <url-pattern/>
</servlet-mapping>

我可以通过点击以下网址来访问PostServlet

请假设/ url / to / my / server as

http://myserver:8080

/url/to/my/server/MyWebAppName
/url/to/my/server/MyWebAppName  (few white spaces at the end of context)
/url/to/my/server/HTTPMethods/
/url/to/my/server/HTTPMethods/////
/url/to/my/server/HTTPMethods///postServlet
/url/to/my/server/HTTPMethods///postServlet   (few white spaces here too)

有人可以通过概括来解释这种行为吗?

然而,如果两者之间存在任何空间,它就会失效     / url / to / my / server / HTTPMethods /// // 这是有道理的,因为浏览器使用%20

编码空格

是否有任何特定原因会忽略尾随空格

以下网址失败     / URL /到/我/服务器/ HTTPMethods ///// postServlet //

1 个答案:

答案 0 :(得分:0)

阅读可能会令人困惑,但URL spec

可以回答您的所有问题

基本上,前导和尾随空格被简单地剥离(如果你真的需要空格作为URL的一部分,你应该将它们编码为%20

关于HTTPMethods /// postServlet的表示法,多个斜杠简单地视为单个斜杠。