为什么写路径这事有点复杂?动态Web工程内编写路径【JavaWeb】

文章目录

    • 一、为什么要写路径?
    • 二、为什么写路径这事有点复杂?
    • 三、准则
    • 四、写路径的步骤
    • 五、动态获取上下文路径


一、为什么要写路径?

为什么写路径这事有点复杂?动态Web工程内编写路径【JavaWeb】_第1张图片

  • 整个系统要根据功能拆分成许许多多独立的资源
  • 资源之间既要完成自身的功能又要和其他资源配合
  • 写路径就是为了从一个资源跳转到下一个资源

二、为什么写路径这事有点复杂?

1、先开发再部署

为什么写路径这事有点复杂?动态Web工程内编写路径【JavaWeb】_第2张图片

  • 工程目录:我们写代码的地方,但是在服务器上运行的不是这个。
  • 部署目录:经过Java源文件编译和目录重组后,IDEA就替我们准备好了可以在服务器上运行的部署目录。
  • 区别:因为从工程目录到部署目录经过了目录重组,所以它们的目录结构是不同的。
  • 基准:用户通过浏览器访问服务器,而服务器上运行的是部署目录,所以写路径的时候参考部署目录而不是工程目录。
  • 对应关系:工程目录下的web目录对应部署目录的根目录,同时部署目录的根目录也是路径中的Web应用根目录。

为什么写路径这事有点复杂?动态Web工程内编写路径【JavaWeb】_第3张图片

2、路径的各个组成部分

从最前面一直到Web应用名称这里都是固定写法,到资源名这里要看具体是什么资源。

为什么写路径这事有点复杂?动态Web工程内编写路径【JavaWeb】_第4张图片

①具体文件
我们写代码的时候都是在工程目录下操作,所以参照工程目录来说最方便。按照工程目录的目录结构来说,从web目录开始按照实际目录结构写就好了(不包括web目录本身)。

为什么写路径这事有点复杂?动态Web工程内编写路径【JavaWeb】_第5张图片

②Servlet
访问Servlet的路径是我们在web.xml中配置的,大家可能注意到了,url-pattern里面的路径我们也是斜杠开头的,但是这个开头的斜杠代表Web应用根目录。

为什么写路径这事有点复杂?动态Web工程内编写路径【JavaWeb】_第6张图片

同样是开头的斜杠,超链接路径中的开头斜杠代表服务器根目录,Servlet地址开头的斜杠,代表Web应用根目录,怎么记呢?请看下面的准则。


三、准则

用通俗的大白话来解释:一个路径由谁来解析,其实就是这个路径是谁来用。

为什么写路径这事有点复杂?动态Web工程内编写路径【JavaWeb】_第7张图片

那么具体来说,哪些路径是浏览器解析的,哪些路径是服务器解析的呢?

浏览器解析的路径举例:

  • 所有HTML标签中的路径
  • 重定向过程中指定的路径

服务器解析的路径举例:

  • 所有web.xml中配置的路径
  • 请求转发过程中指定的路径

四、写路径的步骤

为什么写路径这事有点复杂?动态Web工程内编写路径【JavaWeb】_第8张图片


五、动态获取上下文路径

1、上下文路径的概念

上下文路径(context path)=/Web应用名称

2、动态获取

由于项目部署的时候,上下文路径是可以变化的,所以写死有可能发生错误。此时我们通过request对象动态获取上下文路径就不用担心这个问题了。调用下面这个方法,每一次获取的都是当前环境下实际的上下文路径的值。

request.getContextPath()

你可能感兴趣的:(JavaWeb,前端,javaweb,java,web,tomcat)