web 中的  /  到底代表什么?
绝对路径-以Web站点根目录为参考基础的目录路径。之所以称为绝对,意指当所有网页引用同一个文件时,所使用的路径都是一样的。
相对路径-以引用文件之网页所在位置为参考基础,而建立出的目录路径。因此,当保存于不同目录的网页引用同一个文件时,所使用的路径将不相同,故称之为相对
 
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的路径。而写绝对路径就没问题,顾名思义,绝对定位,不是相对的。

WEB下面路径的问题的更多相关文章

  1. java ,js获取web工程路径

    一.java获取web工程路径 1),在servlet可以用一下方法取得: request.getRealPath(“/”) 例如:filepach = request.getRealPath(“/” ...

  2. web开发路径问题

    1. web开发路径问题总结: http://www.cnblogs.com/tianguook/archive/2012/08/31/2665755.html 2. JSP/SERVLET 路径问题 ...

  3. 使用监听器解决路径问题,例如在jsp页面引入js,css的web应用路径

    使用监听器解决路径问题,例如在jsp页面引入js,css的web应用路径 经常地,我们要在jsp等页面引入像js,css这样的文件,但是在服务器来访问的时候,这时间就有关到相对路径与绝对路径了.像网页 ...

  4. Servlet之ServletContext获取web上下文路径、全局参数、和Attribute(域)

    1)获取web上下文路径 public void doGet(HttpServletRequest request, HttpServletResponse response) throws Serv ...

  5. 获取web应用路径 // "/" 表示class 根目录

    /** * 获取web应用路径 * @Description : 方法描述 * @Method_Name : getRootPath * @return * @return : String * @C ...

  6. servlet得到web应用路径

    package context; import java.io.IOException; import javax.servlet.ServletContext; import javax.servl ...

  7. SpringMVC Web 相对路径与绝对路径

    基本概念 绝对路径 绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径) 例如: C:\xyz\test.txt 代表了 test.txt 文件的绝对路径. http://www ...

  8. 【转】Spring 获取web根目录 (Spring线程获取web目录/路径/根目录,普通类获取web目录)

    不使用Spring,怎样能在Listener启动的Thread中获取web目录,还真不完全确定.其实我觉得实际代码也很简单.就是基于普通的listener,然后在listener中获取web目录并放到 ...

  9. eclipse中的web项目路径和发布好的项目路径

    现在企业开发中,我们都会创建一个javaWeb工程,在eclipse中指的是新建一个dynamic web project,创建完工程之后,我们在IDE中大体看到如下的工程目录: 我们主要关心的文件夹 ...

  10. web项目路径问题

    路径    相对路径        URL中第一个字符不为“/”        request.getRequestDispatcher("b");        相对于该代码所在 ...

随机推荐

  1. shutil模块详解

    python常用模块目录 注意:shutil经常遇到路径需要转义一下才能执行,在字符串前面加 r转义  r" " 1.shutil常用方法 import shutil# 删除目录 ...

  2. Python基础系列讲解——继承派生和组合的概念剖析

    Python作为一门面向对象的语言,它的面向对象体系中主要存在这么两种关系,一个是“类”和“实例”的关系,另一个是“父类”和“子类”的关系. 所谓“类”是从一堆对象中以抽象的方式把相同的特征归类得到的 ...

  3. 图片人脸检测(OpenCV版)

    图片人脸检测 人脸检测使用到的技术是OpenCV,上一节已经介绍了OpenCV的环境安装,点击查看. 功能展示 识别一种图上的所有人的脸,并且标出人脸的位置,画出人眼以及嘴的位置,展示效果图如下: 多 ...

  4. JSBridge实现示例

    前言 参考来源 前人栽树,后台乘凉,本文参考了以下来源 Hybrid APP架构设计思路 marcuswestin/WebViewJavascriptBridge 楔子 本文介绍JSBridge的完整 ...

  5. 慢吞吞的pip切换源

    http://blog.csdn.net/gz_liuyun/article/details/52778198

  6. bash登录过程 其实还不太了解,先码后看

    在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile. ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序 ...

  7. Team Member Introduction and Division of Work

    Team leader Name:宋天舒 Student Number:12061166 Interested In: Information safety. Responsible For: Des ...

  8. TeamWork#3,Week5,Performance Test of Crawlers

    爬虫总体性能不错,能完成基本的网络数据爬取,没有功能上的缺陷.下图为饿了么网站商户信息爬取结果及原网站信息. 大部分信息是正确的,但也有一些错误.比如下图,小渝馆家常菜和渝码头川菜位置爬取错了. 再比 ...

  9. 20162314 《Program Design & Data Structures》Learning Summary Of The Ninth Week

    20162314 2017-2018-1 <Program Design & Data Structures>Learning Summary Of The Ninth Week ...

  10. 3、第一个Python程序

    现在,了解了如何启动和退出Python的交互式环境,我们就可以正式开始编写Python代码了. 在写代码之前,请千万不要用“复制”-“粘贴”把代码从页面粘贴到你自己的电脑上.写程序也讲究一个感觉,你需 ...