web工程servlet中的路径问题
web工程反斜杠(/)表示的意义:
反斜杠(/)在web工程中表示的是绝对路径。
web工程servlet中反斜杠两种情况下的表示含义:
(1)被html浏览器解析
如果路径是在html浏览器中被执行的,则反斜杠(/)表示的是:http://ip:port/。
举例:
启动tomcat,访问demo.html页面
点击超链接,查看跳转地址:
发现跳转后的地址缺少工程名称。
说明:因为反斜杠(/)在html浏览器被解析,所以反斜杠表示的是:http://ip:port/。
所以跳转后的地址就是:http://ip:port/demo02.html。所以出现404错误。
(2)在服务器端被解析
如果路径是在服务器端被解析的,则反斜杠(/)表示的是:http://ip:port/工程名称/。
举例:
- web.xml配置文件中的<url-pattern>的反斜杠(/)表示的就是http://ip:port/工程名称/。
- ServletContext对象中的getRealPath("/")方法中的反斜杠表示的也是http://ip:port/工程名称/。
- request.getRequestDispatcher("/")方法中的反斜杠表示的也是http://ip:port/工程名称/。
注意:重定向时候的反斜杠比较特殊。
response.sendRedirect("/")方法中的反斜杠表示的是http://ip:port/。
这是由于重定向是服务器告诉浏览器,再次发送一次请求给服务器。路径是在html浏览器被解析的,所以反斜杠(/)表示的是http://ip:port/。
启动tomcat,访问如下:
所以重定向时候,需要注意的是,首先要获取工程名称,然后在拼接上相应的路径。
以上就是个人对servlet中路径的简单理解。