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

原理:

1.我们开发时候在浏览器中输入“http://localhost:端口号/项目名/xxx文件”请求需要的资源,并且根据tomcat的项目都是在%tomcat根目录%/webapps文件夹下,可得知,此时由浏览器发起的请求,代码中的“/”表示的当前路径就应该表示的是webapps的根目录

2、由服务器发起的路径,“/”表示项目中的WebRoot根目录

路径应该怎么写 ?

上面的/代表的是被解析完成后路径的第一个/

把所有非字符串的的东西全部转化为字符串后,才开始解析第一个/

例如:<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的路径。而写绝对路径就没问题,顾名思义,绝对定位,不是相对的。

原文地址:https://www.cnblogs.com/wzdnwyyu/p/11169128.html

时间: 2024-10-17 11:09:34

web中“/”写在不同地方时的值不同的相关文章

requestAnimationFrame,Web中写动画的另一种选择

HTML5/CSS3时代,我们要在web里做动画选择其实已经很多了: 你可以用CSS3的animattion+keyframes; 你也可以用css3的transition; 你还可以用通过在canvas上作图来实现动画,也可以借助jQuery动画相关的API方便地实现; 当然最原始的你还可以使用window.setTimout()或者window.setInterval()通过不断更新元素的状态位置等来实现动画,前提是画面的更新频率要达到每秒60次才能让肉眼看到流畅的动画效果. 现在又多了一种

转: requestAnimationFrame,Web中写动画的另一种选择

HTML5/CSS3时代,我们要在web里做动画选择其实已经很多了: 你可以用CSS3的animattion+keyframes; 你也可以用css3的transition; 你还可以用通过在canvas上作图来实现动画,也可以借助jQuery动画相关的API方便地实现; 当然最原始的你还可以使用window.setTimout()或者window.setInterval()通过不断更新元素的状态位置等来实现动画,前提是画面的更新频率要达到每秒60次才能让肉眼看到流畅的动画效果. 现在又多了一种

python学习之web中的html

Web概述web起源web特点1.易导航和图形化界面2.与平台无关3.分布式结构4.动态性5.交互性 html 网页结构 HTML(Hyper Text Mark-up Language )即是超文本标记语言, 通过使用标记标签来描述页面文档结构和表现形式的一种语言,再由浏览器进行解析,然后把结果展示在网页上.?超文本指的是超链接?标记指的是标签1).HTML文件用编辑器打开显示的是文本,可以用文 本的方式编辑.2). HTML文件用浏览器打开,浏览器会按照标签描述内容将文件渲染成网页,显示的网

CKEditor4 在java web中的应用说明(详细可行)

按照官方的说明书就可,这里主要注意一点!! 就是<script src="../ckeditor.js"></script>中js文件的路径问题,我的ckeditor文件夹是在WebContent文件夹下,jsp文件是同一层目录的,所以最后的代码应该是 <script type="text/javascript"src="./ckeditor/ckeditor.js"></script> 注意斜杆号

CSS3 生成内容(在Web中插入内容)

在Web中插入内容,在CSS2.1时代依靠的是JavaScript来实现.但进入CSS3进代之后我们可以通 过CSS3的伪类“:before”,“:after”和CSS3的伪元素“::before”.“::after”来实现,其关键是依靠CSS3中的 “content”属性来实现.不过这个属性对于img和input元素不起作用. content配合CSS的伪类或者伪元素,一般可以做以下四件事情: 功能 功能说明 none 不生成任何内容 attr 插入标签属性值 url 使用指定的绝对或相对地址

今天学习了在一般处理程序中写一个计算器

今天看了看前面的javascript以及学习的jquery,感觉刚开始学习时间就赶得比较紧,练习是做啦,基础的知识都是知道的,但是在写一些小小的程序时间还是陌生,感觉练习的还是很不够的,其实怎么说那,想好好的学习还是把他们使用到项目中练习就会学习的更快些吧,然后我又做啦一个增删改查的一般处理程序,但是还没有总结好,现在就简单的先总结一个小小的计算器使用html和ashx来实现一下其功能,如下所示: 一.html样式 <script> //@Script; </script> <

java web中servlet、jsp、html 互相访问的路径问题。

在java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对. java web中的路径使用按我的分法可以分两种情况,当然啦两者使用相对路径是一致,本文只说绝对路径. 情况一.指向外部的web组件和本身关系不大的,这一类的有:html中使用路径的标签,比如<a>标签中的href;servlet和jsp中的重定向sendRedirect(path); 情况二.指向内部的web组件和本身有关系的,这一类我暂时看到的有:servlet或者jsp的转发 假设在myapp项目下有

java web 中的转发和重定向

假设应用程序的 contextPath 为 /ctx,在 http://localhost:8080/ctx/a/b 资源中,我们转发和重定向到 http://localhost:8080/ctx/x/y 资源,分别应该怎么写? 转发,是在同一个应用程序中,请求从由资源 A 处理,到由资源 B 处理.资源 A 和资源 B 属于同一个应用程序的资源,它们总是相对于该应用程序的 contextPath 而言的.转发的资源可以使用相对路径(不以 "/" 开头)和绝对路径(以 "/&

Vue 2.x 在 Weex 和 Web 中的差异

平台差异 Vue.js 最初是为 Web 平台设计的,虽然可以基于 Weex 开发原生应用,但是 Web 开发和原生开发毕竟不同,在功能和开发体验上都有一些差异,这些差异从本质上讲是原生开发平台和 Web 平台之间的差异,可以通过<Weex 和 Web 平台的差异>了解更多细节和原因. 由于运行平台存在差异,Weex 不支持 Vue 中与 DOM 相关的功能: 不支持事件冒泡和捕获机制,.prevent ..capture ..stop ..self 等事件修饰符在原生环境中无意义. 键盘事件