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环境不熟悉.配置不会配置:因此在学习一项技能之前,有必要对基本的环境配置有所了解,正所谓磨刀不误砍柴工.这篇文章主 ...
随机推荐
- simon effect (psychology experiment ) : build the function of wait4key()
## #the real experiment for simon effect #load the library which is our need import pygame import sy ...
- 《操作系统真象还原》BIOS
以下是读本书第二章的收获. 记得我大学学习操作系统的时候会遇到一些奇奇怪怪的问题,因为觉得问题太奇怪了,所以羞于问老师.诸如ROM到底是个什么东西:如果用内存映射的方式访问外部设备,是不是内存条里专门 ...
- json转dataset的另外一种解析方式自动生成guid强关联
/// <summary> /// 将json字符串自动转成dataset,并且自动补全主子关联关系, /// Guid,FKGuid /// Author:lijia /// date: ...
- ASP.NET MVC5 的请求管道和运行生命周期
https://www.jianshu.com/p/848fda7f79e0 请求处理管道 请求管道是一些用于处理HTTP请求的模块组合,在ASP.NET中,请求管道有两个核心组件:IHttpModu ...
- 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(4.12-加-6.2-加-7.2.5.2)Fused_Operations
4.12 Fused Operations 融合操作 融合操作通过“fusing”把两个简单的命令融合一起来支持一个更复杂的命令.协议规定这个特性是可选的:如果支持此特性,需要在Figure 247 ...
- Wannafly Camp 2020 Day 2I 堡堡的宝藏 - 费用流
感谢这道题告诉我KM求的是 完备 最大权匹配 :( #include <bits/stdc++.h> using namespace std; #define reset(x) memse ...
- 静态区间第k小 - 整体二分
蒟蒻终于学会整体二分啦! 思路 实现 丑陋无比的代码 #include <bits/stdc++.h> using namespace std; const int N = 200005; ...
- 最近公共祖先 Lowest Common Ancestors
基于深度的LCA算法: 对于两个结点u.v,它们的深度分别为depth(u).depth(v),对于其公共祖先w,深度为depth(w),u需要向上回溯depth(u)-depth(w)步,v需要d ...
- 一步步教你如何在ubuntu虚拟机中安装QEMU并模拟arm 开发环境(二)rootfs制作
过了,一天,周又到了,博主终于可以拿出时间来把上一次没有给大家展示完了的内容今天在这里一并展示给大家,希望和大家共同进步,共同学习,同时我也虔诚的希望各位业界的朋友把自己的工作经验拿出来大家一起分享, ...
- Python爬虫连载4-Error模块、Useragent详解
一.error 1.URLError产生的原因:(1)没有网络:(2)服务器连接失败:(3)不知道指定服务器:(4)是OSError的子类 from urllib import request,err ...