JSP、Servlet中的相对路径和绝对路径
JSP和Servlet中的绝对路径和相对路径问题困扰了我好几天,经过努力之后将其部分心得和大家共享。
前提:假设你的Http地址为http://192.168.0.1/你的web应用为webapp,那么你的web应用URL为http://192.168.0.1/webapp/
web应用的目录结构:
webapp/
web-inf/
classes/
lib/
web.xml
<servlet-mapping>
<servlet-name>handleservlet</servlet-name>
<url-pattern>/handleservlet</url-pattern>此映射是相对于当前web应用的
</servlet-mapping>
user/
a.jsp
b.jsp
images/
css/
js/
所有相对路径都是由“/”开头的。如:/image/a.gif,/user/main.jsp,大家知道在html中的相对路径是这样的:
有个html文件:a.html,其中有<link href="one.css" rel="stylesheet" type="text/css">,其中href属性表示引用的css文件的路径。
one.css:表示one.css和a.hmtl处于同一个目录
user/one.css:表示one.css处于a.html所在目录的子目录user中。
../one.css:表示one.css位于a.hmtl上一级目录下,
../../one.css:表示one.css位于a.hmtl上一级目录的上一级目录下,
./:表示和a.hmtl同一目录
我们称上述相对路径为html相对路径
1、服务器端的地址
服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候在jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http://192.168.0.1/webapp/的。
其用到的地方有:
forwarder:servlet中的request.getRequestDispatcher(address);这个address是在服务器端解析的,所以,你要forwarder到a.jsp应该这么写:request.getRequestDispatcher(“/user/a.jsp”)这个/相对于当前的web应用webapp,其绝对地址就是:http://192.168.0.1/webapp/user/a.jsp。
sendRedirect:在jsp中<%response.sendRedirect("/rtccp/user/a.jsp");%>
2、客户端的地址
所有的html中的相对地址都是相对于http://192.168.0.1/的,而不是http://192.168.0.1/webapp/的。
Html中的form表单的action属性的地址应该是相对于http://192.168.0.1/的,所以,如果提交到a.jsp为:action=”/webapp/user/a.jsp”;提交到servlet为action=”/webapp/handleservlet”
Javascript也是在客户端解析的,所以其相对路径和form表单一样。
3、站点根目录和css路径问题
我们称类似这样的相对路径/webapp/….为相对于站点根目录的相对路径。
当在jsp中引入css时,如果其相对路径相对于当前jsp文件的,而在一个和这个jsp的路径不一样的servlet中forwarder这个jsp时,就会发现这个css样式根本没有起作用。这是因为在servlet中转发时css的路径就是相对于这个servlet的相对路径而非jsp的路径了。所以这时候不能在jsp中用这样的路径:<link href="one.css" rel="stylesheet" type="text/css">或者<link href="../../one.css" rel="stylesheet" type="text/css">类似href="one.css"和../../one.css的html相对路径是相对于引用这个css的文件的相对路径。而在servlet中转发时就是相对于这个servlet的相对路径了,因为jsp路径和servlet路径是不一样的,所以这样的引用肯定是出错的。
所以这个时候,要用站点根目录,就是相对于http://192.168.0.1/的目录,以“/”开头。
因此上述错误应更正为href=”/webapp/one.css”类似的站点根目录的相对目录。这样在servlet转发后和jsp中都是相对于站点根目录的相对路径,就能正确使用所定义的css样式了。
分享到:
相关推荐
用贪心算法解单源最短路径问题 在计算机科学和信息技术领域中,单源最短路径问题是指从一个源点到其他顶点的最短路径问题。它是一种典型的图论问题,广泛应用于交通网络、通信网络、计算机网络等领域。贪心算法是...
#### 二、常见路径问题及解决方案 在实际开发过程中,经常会遇到一些与路径相关的常见问题。以下是一些典型示例及其解决方法: **2.1 错误的相对路径** **问题描述**: 当使用相对路径时,如果路径设置错误,...
根据给定的信息,本文将详细解释Java实现的最短路径问题动态规划算法。该程序的主要目的是寻找图中各个节点到指定终点的最短路径,并输出每个节点到终点的最短距离以及达到这些最短距离时的决策路径。 ### 1. 问题...
在图论领域,寻找最短路径问题是其中的一个经典问题,其核心是找到从图中某个顶点到另一个顶点的最短路径。传统的方法如Dijkstra算法和Bellman-Ford算法在小规模或特定类型的图上效果较好,但在大型、复杂或动态变化...
最短路径问题在计算机科学和运筹学中是一项核心任务,尤其在图论与网络分析领域,它旨在找出网络中的最短路径,以便优化资源分配、提高效率或解决其他相关问题。Floyd算法,又称为Floyd-Warshall算法,是解决这一...
在计算机科学和图论中,"多段图的最短路径问题"是一个经典的问题,它涉及到寻找在具有多个阶段或段的图中从一个源节点到一个目标节点的最经济路径。多段图通常用于模拟复杂的网络,如交通网络、通信网络或者任务调度...
WPF 中 Image 控件 Source 属性的相对路径和绝对路径问题总结 在 WPF 中,Image 控件的 Source 属性可以指定为相对路径或绝对路径,但这两种路径有不同的使用场景和注意事项。本文将总结 WPF 中 Image 控件 Source ...
在IT行业中,尤其是在Java开发和Web服务器管理中,Bootstrap路径问题常常是开发者遇到的一个常见问题。Bootstrap是一个流行的前端框架,用于快速构建响应式和移动优先的网站,而这里提到的问题实际上与Bootstrap框架...
【单源点最短路径问题】是指在图论中,给定一个有向图G=(V,E),其中V是顶点集合,E是边集合,每个边e上有权重c(e),我们想要找到从一个特定顶点V0出发到图中其他所有顶点的最短路径。这个问题通常出现在网络优化、...
《数据结构课程设计》最短路径问题实验报告主要围绕如何设计和实现一个交通咨询系统,该系统能够解决从一个城市到另一个城市的最短路径、最低花费或最少时间的问题。在这个实验报告中,我们重点关注以下几个核心知识...
### HTML5中视频路径问题解决 #### 背景与问题描述 在使用HTML5的`<video>`或`<audio>`元素时,经常会遇到如何正确设置媒体文件(如视频、音频)路径的问题。特别是在使用绝对路径和相对路径之间进行转换时,可能...
在IT领域,路径问题是一个常见的挑战,特别是在软件开发过程中,如使用集成开发环境(IDE)如Eclipse。路径问题通常涉及到文件或项目的定位,以及如何有效地访问这些资源。以下是一些关于Eclipse中处理路径问题的详细...
在“分支定界算法求解带约束的最短路径问题”中,我们聚焦于如何利用这种算法来解决一个特定类型的网络流问题,即在满足特定约束条件下找出从起点到终点的最短路径。 最短路径问题是一个经典的图论问题,Dijkstra...
在计算机科学领域,解决最短路径问题是一项基本任务,它广泛应用于网络路由、地图导航、物流优化等场景。本主题关注的是多段图的最短路径问题,通过动态规划法来求解。动态规划是一种利用子问题的最优解来构建全局最...
"基于贪心法求解单源最短路径问题" 本资源是关于基于贪心法求解单源最短路径问题的实验报告,包括实验内容、算法设计、算法描述、算法正确性证明、算法分析、算法实现与测试等部分。 实验目的:理解贪心法的核心...
在IT领域,尤其是在图论和算法设计中,解决“最短路径问题”是一个经典而重要的任务。本案例中,我们关注的是美国硅谷城镇地图上的最短路径问题,它涉及到网络中的节点(城镇)和边(连接城镇的路径),以及边上的...
有向图的路径问题在计算机科学中是一个基础且重要的议题,尤其在算法设计与分析领域。本实验报告将深入探讨有向图中的路径查找问题,并提供相应的源代码实现。有向图是由节点(顶点)和有方向的边构成的图,其中的...
下面我们将详细讨论如何在Java中通过文件操作来解决最短路径问题。 首先,我们需要了解最短路径算法。其中,Dijkstra算法和Floyd-Warshall算法是两种常用的方法。Dijkstra算法适用于单源最短路径问题,而Floyd-...
【车辆路径问题(Vehicle Routing Problem, VRP)】是指在一定的约束条件下,寻找一组最优的车辆路径,使得这些车辆能够从一个或多个出发点出发,按照特定的路线到达多个目的地,同时满足货物配送需求,最小化总行驶...