Servlet中context root、虚拟路径映射及前导斜杠含义咨询
Servlet核心路径概念梳理&校验请求
我查阅了大量Stack Overflow回答及网络技术文章,尝试梳理Servlet领域中context root、虚拟路径到实际文件路径的映射规则、路径前导斜杠的含义三类核心概念,目前总结要点如下,希望各位技术从业者帮忙校验我的理解是否存在错误或遗漏:
- context root映射规则:根据Servlet规范定义,context root对应URI格式为
http://host:port/<context-root>/。Web应用部署完成后,该context root始终映射到文件系统中Web应用的根目录(例如解压后的war包目录),也就是WEB-INF文件夹的父目录。 - 服务端场景前导斜杠含义:在Web应用内部(例如web.xml、Servlet、Filter等场景)使用前导斜杠
/时,该斜杠始终指向当前应用的context root,而非服务器根路径http://host:port/。
示例代码:
从Servlet容器视角来看,请求的资源路径为request.getRequestDispatcher("/foo/bar/baz.jsp").forward(...)http://host:port/<context-path>/foo/bar/baz.jsp,对应文件系统中的路径为:file:///<$CATALINA_HOME>/webapps/our-application/foo/bar/baz.jsp - 客户端场景前导斜杠含义:若在仅对客户端(即浏览器)生效的场景下使用前导斜杠
/,该斜杠始终指向服务器绝对根路径http://host:port/。这类场景包括JSP文件中HTML元素的src、href属性,HttpServletResponse#sendRedirect的重定向URL,以及Cookie#setPath的路径配置等。
内容的提问来源于stack exchange,提问作者torez233
相关产品推荐
相关产品推荐

