servlet中的“/”代表当前项目,html中的“/”代表当前服务器
servlet中重定向或请求转发的路径如果用“/”开头,代表当前项目下的路径,浏览器转发这条路径时会自动加上当前项目的路径前缀,如果这个路径不是以“/”开头,那么代表这个路径和当前所在servlet的路径前缀是同一个,浏览器访问该网址时会自动加上当前servlet的路径前缀。
html中href或src网址如果用“/”开头,代表当前服务器下的路径,浏览器转发这条路径时会自动加上当前服务器的路径前缀,如果这个路径不是以“/”开头,那么代表这个路径和当前所在html的路径前缀是同一个,浏览器访问该网址时会自动加上当前html的路径前缀。
那么问题来了:为什么 servlet中的“/”代表当前项目,html中的“/”代表当前服务器?
因为servlet是后台代码,只针对某个应用有效,想想也知道,自己应用的后台处理肯定不能控制别人应用(亲测自己的servlet不能把请求转发到百度),所以不需要给后台转发或重定向路径太大的范围,最大范围设置为当前项目就是最佳的,如果设置成是当前服务器下,那就没必要了,这个编程语言经过长时间的发展改进肯定已经达到一个性能很优的程度,
而html是属于前端代码,前端页面是可以随意访问别人的的应用网页的,所以前端的访问路径必须至少是可以跨应用访问的,所以至少是服务器级别的,所以把默认当前路径设置为当前服务器下还是很合理的。
不禁感慨这个模块的设计者怎么能把细节考虑得这么周到。
所以当我们遇到一个机制,我们应该想想为什么设计者要这样设置,这样设计有什么优势,了解这个层面的话,对这个机制的原理应该就比较透彻了,以后再使用这个机制的话就更不会出错了。
为什么html页面中的跳转到servlet中的src中要加项目名${pageContext.request.contextPath}?
因为前端的页面是可以跳转到当前服务器下的其他项目的后台servlet的,所以如果其他项目也有一个通相对路径相同且同名的servlet的话,那么html就很难判断应该跳到哪去,所以为了明确要求跳转到本项目下的servlet中,要在路径前加一个项目名前缀
为什么有的时候html下面的src资源路径要加“../”前缀?
因为你的html可能是在当前项目的某个文件夹下,这样你的hmtl里的相对路径就是服务器名加这个问件夹名,必须退回到和要访问的资源文件夹同一级才可以访问这个资源。每加一个“../”前缀就往上退一级
servlet中的“/”代表当前项目,html中的“/”代表当前服务器的更多相关文章
- 如何在java代码中调用一个web项目jsp或者servlet
有时候需要调用一个web项目的jsp或者servlet,但是执行内部的代码,并不是打开jsp,例如需要在一段java代码中清除一个web项目中的缓存,那么可以把清除缓存的代码放在该web项目的一个se ...
- 如何将其它javaweb项目变成可以成功在自己eclipse环境中运行的javaweb项目?
说明:此文档仅适用于以下两种情况 (1)myeclipse项目需要在eclipse环境中运行 (2)eclipse项目,但是无法在自己的电脑eclipse环境中运行 注意:以下 ...
- 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)
WPF中Style的使用 Styel在英文中解释为”样式“,在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外观更加美化同时减少了 ...
- iOS项目开发中的知识点与问题收集整理①(Part 一)
前言部分 注:本文并非绝对原创 大部分内容摘自 http://blog.csdn.net/hengshujiyi/article/details/20943045 文中有些方法可能已过时并不适用于现在 ...
- J2EE项目开发中常用到的公共方法
在项目IDCM中涉及到多种工单,包括有:服务器|网络设备上下架工单.服务器|网络设备重启工单.服务器光纤网线更换工单.网络设备撤线布线工单.服务器|网络设备替换工单.服务器|网络设备RMA工单.通用原 ...
- step6----->往工程中添加spring boot项目------->修改pom.xml使得我的project是基于spring boot的,而非直接基于spring framework
文章内容概述: spring项目组其实有多个projects,如spring IO platform用于管理external dependencies的版本,通过定义BOM(bill of mater ...
- JavaWeb 项目开发中的技术总结
前言: 在项目开发过程中的一点点指导思想 1.环境准备 win系统 Eclipse 开发平台 maven tomcat Mysql 数据库,mysql5.6 操作数据库的jar 包 JDBC 连接数据 ...
- android大项目运行中出现问题汇总
Android 项目中,特别是当项目文件和规模达到一定的程度后,会引发一些平常不常见的问题. 下面对遇到的一些问题做一个汇总和总结. scenario 1: 在项目中,我们采用了chromimum内核 ...
- Maven入门1-在Eclipse中新建Maven Web项目
在eclipse中新建Maven Web项目 很多时候开发效率低下,大部分原因是IDE环境不熟悉.配置不会配置:因此在学习一项技能之前,有必要对基本的环境配置有所了解,正所谓磨刀不误砍柴工.这篇文章主 ...
随机推荐
- react 项目 测试
Enzyme 来自 airbnb 公司,是一个用于 React 的 JavaScript 测试工具,方便你判断.操纵和历遍 React Components 输出.Enzyme 的 API 通过模仿 ...
- rownum按某字段排序查询
特点:rownum伪列,查询结果按顺序从1递增排列 用途:按某字段排序查询第几名到第几名的数据 但加上按字段排序条件后,rownum并不会从1递增 需把按字段排序查询的数据作为一张表,再次查询,row ...
- a++ 和 ++a
//a++ 先赋值,后加 var a = 1 console.log(a++);//1 console.log(a) //2 //++a 先赋值,后加 var a = 1 console.log(++ ...
- 4.Docker Compose 部署 Nexus
什么是 Nexus Nexus 是一个强大的 Maven 仓库管理器,极大地简化了内部仓库的维护和外部仓库的访问.2016 年 4 月 6 日 Nexus 3.0 版本发布,相较 2.x 版本有了很大 ...
- thinkphp3.2短信群发项目实例
项目功能是企业给客户群发短信,我就写这么多,也不知道你能不能运行成功,如果有问题可以在QQ上问我:605114821 项目文件SMS_V2.zip下载地址,百度云:http://yun.baidu.c ...
- CSS-使用CSS样式的方式
1.HTML<!DOCTYPE>声明标签 (1)定义和用法 <!DOCTYPE>声明必须是HTML文档的第一行,位于<html>标签之前. <!DOCTYPE ...
- [Python]python去除两个txt文件的重复词汇 python 2020.2.10
两个txt文件词汇,用换行符分隔.可以用代码将要处理的文件去掉另一个文件所包含的重复内容. 如: a.txt内容为: 衡山 泰山 西湖 紫禁城 b.txt内容为: 泰山 衡山 长白山 张三丰 将a.t ...
- springboot项目集成activity
1.按照上一篇博客,新建好springboot项目后,在项目pom.xml文件中添加activity依赖 <dependency> <groupId>org.activiti& ...
- 题解【AcWing95】费解的开关
题面 一道非常好的递推练习题. 我们考虑每次枚举第一行的操作,由上一行的状态递推出下一行的状态,最后判断最后一行是否全部为 \(1\) 即可. 实现代码时要注意一些细节问题. #include < ...
- 关于Oracle的使用
1.查看数据库 在sqlplus / as sysdba执行后,再执行select name from v$database; 2.执行1后继续查看该数据库下的表 select table_name ...