1.若/交由浏览器来解析,代表当前web站点的根路径;例:http://localhost:8080/  
   
     >超链接:<a href="/TestServlet">Java Web</a><br><br>     此时相当于:http://localhost:8080/TestServlet  此时是不能连接到servlet的,因为servlet不是直接部署tomcat的webapps目录下,正确的方式应该加上工程路径,即为:http://localhost:8080/shipin/TestServlet   。
    >表单中的action:<form action="/login.jsp" >   此时相当于:http://localhost:8080/longin.jsp  此时也是不能连接到servlet的,,同上。
    
    >请求重定向: request.sendRedirect("/login.jsp") 此时相当于: http://localhost:8080/longin.jsp 原理同上,浏览器直接更换网址
2.若/交由web服务器来解析代表当前web工程的根路径。例:/shipin/    (shipin即工程名)
    >请求转发时:request.getRequestDispatcher("/chapter.jsp").forward(request, response);  此时相当于:
     http://localhost/shipin/chapter.jsp  
若此时chapter.jsp在webContent或webRoot根目录下,可以连接,服务器内部转发
   
    >web.xml 中映射servlet的访问路径时
         <servlet-mapping>
                <servlet-name>getinRegisterServlet</servlet-name>
                <url-pattern>/getinRegister</url-pattern>
         </servlet-mapping>
    此时的getinRegisterServlet经过映射,实际路径为 http://localhost:8080/shipin/getinRegister 
可以连接。
 
    >其他定制标签
 
 
web应用中的“绝对路径”是指相对于工程根目录的路径 request.getContextPath()可获得
此时的路径在工程目录下,例:/shipin
路径应该怎么写 ?
上面的/代表的是被解析完成后路径的第一个/
把所有非字符串的的东西全部转化为字符串后,才开始解析第一个/
例如:<a href="<%=request.getContextPath()%>/Test3Servlet">
  里面有方法,全部转化为字符串后为"/shipin/Test3Servlet" 然后开始解析/
如上,这里/应该被解析为web站点的跟目录即http://localhost:8080/ 
,解析完后即为完整的url,http://localhost:8080/shipin/Test3Servlet,
 
 
正确理解web各个场景路径的/的含义后
该怎么判断写的路径对不对:
步骤:1.把你写的路径当中所有非字符串(例如函数)的东西都转化为字符串
            2.按照上文中,/到底代表什么,把第一个/解析替换出来
            3.判断最终的解
析结果是不是一个完整正确的工程目录,完整正确的工程目录应该是:htttp://localhost:8080/工程名/文件的完整目录(包括文件夹)
例:若目标jsp文件在webContent目录下的Get文件夹下,则正确路径为:htttp://localhost:8080/ship/Get
/login.jsp
web应用中的“绝对路径”是指相对于工程根目录的路径 request.getContextPath()可获得
此时的路径在工程目录下,例:/shipin
 
相对路径是指,相对于一个文件或文件夹的路径
设当前文件(即代码执行到哪个文件)为a.jsp,相对路径的作用范围:
若c.jsp处于与当前文件同一级目录:c.jsp
若c.jsp处于与当前文件同一级目录的文件夹下:/文件夹名/c.jsp
若c.jsp处于与当前文件上一级目录:../c.jsp
最好写绝对路径getContextPath() + 具体文件相对于工程的文件夹路径,不容易出错。
绝对路径的反例:

所有非字符串的的东西全部转化为字符串后,才开始解析第一个/,,非常重要,举个反
例,request.getRequestDispatcher(request.getContextPath()+"/Test3Servlet").forward(request,response);

例咋一看没啥问题,但是,先来看,把非字符串转化字符串后:/shipin/Test3Servlet,然后解析/,这是转发,/应该被解析为:
/shipin/,然后最终路径就变成了:/shipin/shipin/Test3Servlet,只要/还可以解析,就会向上解析,最终变成了
http://localhost/8080/shipin/shipin/Test3Servlet,显然这是错误的。这里就不能加上request.getContextPath(),只要request.getRequestDispatcher("/Test3Servlet").forward(request,response);
则/Test3Servlet被解析为/shipin/Test3Servlet,然后/shipin/Test3Servlet又被解析为http://localhost/8080/shipin/Test3Servlet.

 
相对路径的反例:
从一个a.jsp提交请求到
personServlet再转发到b.jsp,当到了personServlet时,此时的当前文件就是personServlet,所以要以
personServlet为当前目录去定位b.jsp,即便a.jsp和b.jsp在同一目录下,也不能就写:b.jsp,而要写相对于
personServlet的路径。而写绝对路径就没问题,顾名思义,绝对定位,不是相对的。
src下文件的路径问题
  1. Web工程的根目录指的是WebRoot/WEB-INF/classes开始的。javaclass文件只能读到这个目录的的文件。如果想读取其他地方的文件,可以用绝对路径
  1. 如果是通过javaclass读文件,比如xxx.properties,只能放到WebRoot/WEB-INF/classes目录下。也就是放到工程src下,会自动编译到WebRoot/WEB-INF/classes目录下的

web工程的路径问题详解的更多相关文章

  1. web工程常用路径的获取方法

    此文章是基于 搭建SpringMVC+Spring+Hibernate平台 一. 利用 Spring 取得web工程根路径 1. web.xml 中添加如下: <context-param> ...

  2. 自学Zabbix4.2 web监控项创建+item详解

    自学Zabbix4.2 web监控项创建+item详解 1. web监控项创建 1.1  Scenario 选项卡 Name: 监控项的名称 Application: 放到哪个应用中 Authenti ...

  3. nginx高性能WEB服务器系列之四配置文件详解

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  4. eclipse中的项目Java build path (Java创建路径)详解

    1.Source标签页,指定本工程的源码目录和输出目录.Projects标签页,指定本工程所依赖的其他工程.Libraries标签页,指定本工程所需的jar包和class目录等.Order And E ...

  5. ASP.net 路径问题 详解

    各位有没有碰到在日常工作中经常在路径设置的时候把 "~/ ../ .../ . / .http://www.cnblogs.com/"这些符号搞混搞乱了?偶尔还会因路径的问题郁闷了 ...

  6. web端自动化——selenium3用法详解

    selenium中文学习文档链接:https://selenium-python-zh.readthedocs.io/en/latest/getting-started.html selenium3+ ...

  7. Visual Studio的Web Performance Test提取规则详解(3)

    总结 Visual Studio的Web Performance Test是基于HTTP协议层的,它不依赖于浏览器,通过直接接收,发送HTTP包来和Web服务器交互.Web Performance T ...

  8. ASP.NET中的路径(path) 详解

    一 ASP.NET常用路径(path)获取方法与格式对照表 假设我们的网址为http://localhost:1897/ News/Press/Content.aspx?id=1019 跟 Brows ...

  9. web.xml配置以及一些详解

    web.xml的根元素定义如下所示(代表当前使用哪个模版): <?xml version="1.0" encoding="UTF-8"?> < ...

随机推荐

  1. gentoo Cataclysm - Dark Days Ahead

    gentoo 中安装 Cataclysm - Dark Days Ahead,使用web 下载稳定版的安装包,使用 tar 进行解压. 安装需要共享库:sdl2-mixer, 未完待续

  2. 2101244 - FAQ: SAP HANA Multitenant Database Containers (MDC)

    Symptom You face issues or have questions related to multitenant database containers in SAP HANA env ...

  3. Open SuSE中自定义的环境变量

    针对与其它发行版本的Linux,网络上给出的添加环境变量的位置都是在/etc/profile文件中添加.在Open SuSE中也有/etc/profile文件,不过从该文件的前几行注释可以看出,官方建 ...

  4. virtual 函数只有在用指针或引用的方式访问,才会导致多态。

    只有用指针和引用,才会动态绑定.才会在运行时候从虚表中找对应的成员函数. 如果只是用.访问成员函数,是静态绑定,在编译时刻就固定好的. 另外,父类的虚函数,子类不管加不加virtual关键字,都是虚函 ...

  5. java MD5/AES/DES加解密汇总

    package com.test.test1.util; import java.security.MessageDigest; import java.security.SecureRandom; ...

  6. cdnbest日志分析显示404的原因

    日志分析报404原因 报这个提示一般是日志没有开启或还没有日志 检查下面几点: 开启和关闭站点日志在节点3311中显示如下图nolog是关闭  日志翻转目前默认是1个小时以后会默认改成20分钟,翻转时 ...

  7. matplotlib坐标轴的一些操作

  8. C++中的inline用法

     

  9. 创建第一次C语言程序

    在这里我以VS2015为例,做演示.为什么要去演示怎样创建项目尼,因为我写第一个程序时,不知道该怎样用VS创建我的第一个应用程序. 第一步:打开VS环境如下 第二步:在开始出点击“新建项目”或在右上角 ...

  10. js的一些总结

    函数 函数是一等公民 函数可以有属性,并且能连接到它的构造方法 函数可以像一个变量一样存在内存中 函数可以当做参数传给其他函数 函数可以返回其他函数 加法操作表 Number + Number -&g ...