有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java上下文根、虚拟路径到实际文件路径的映射,以及Servlet中前导斜杠的含义

在阅读了大量其他SO答案和一些在线文章之后,我试图总结一下上下文根、虚拟路径到实际文件路径映射的概念,以及前导斜杠的含义

  1. 基于servlet规范的Context root对应于URI http://host:port/<context-root>/。一旦部署了web应用程序,这个上下文根目录总是映射到实际文件系统中web应用程序的基本目录(例如,分解的war),它总是web-INF文件夹的父目录

  2. 每当我们在web应用程序(例如web.xml、servlet、过滤器)中使用前导斜杠“/”时,前导斜杠总是指向上下文根,而不是绝对根http://host:port/ 所以无论什么时候

    request.getRequestDispatcher("/foo/bar/baz.jsp").forward(...)
    

    从servlet容器的角度来看,我们需要一个位于 http://host:port/<context-path>/foo/bar/baz.jsp,它映射到以下路径 在文件系统中

    file:///<$CATALINA_HOME>/webapps/our-application/foo/bar/baz.jsp
    
  3. 每次我们在仅对客户端(即浏览器)有意义的上下文中使用前导斜杠“/”时,前导斜杠总是指向绝对根http://host:port/。我能想到的例子是JSP文件中html元素的srchref属性,或者HttpServletResponse#sendRedirect中的重定向URL,或者cookie中的路径Cookie#setPath

编辑:如果不够清楚,请道歉:我正在寻找一个人来纠正我的理解,如果其中任何一个不正确或遗漏了什么


共 (0) 个答案