作者:赵磊
博客:http://elf8848.iteye.com
要在/jsp/index.jsp文件使用图片,如何计算相对路径? 经过Servlet,struts转发后又如何计算相对路径
?
相对路径是由浏览器通过地址栏分析出来的,与服务器端文件的存放路径没有关系,由其是使用
Servlet,struts转发到某jsp文件后,某jsp在服务器端存放的位置是/a/b/c/d/f/g.jsp ,
但经过Servlet,struts转发后,浏览器的地址栏可不一定是/a/b/c/d/f/这样的层次。所以相对路径的计算以浏览器地址栏为准
。原创地址:http://elf8848.iteye.com/
目录结构如下图:
--------------------第一种情况
:直接访问JSP文件
---------------------------------------
URL是 http://localhost/Context path
/jsp/index.jsp
要在index.jsp引用go.gif文件:
1、使用决对路径
<img src='<%=request.getContextPath() %>/images/go.gif'/>
浏览器寻找方式: 域名+/Context path/images/go.gif ,可找到。
2、使用相对路径
<img src='../images/go.gif'/>
浏览器寻找方式:通过地址栏分析,index.jsp所在目录(jsp
)的上一层目录(WebRoot)下的images/go.gif文件
。
3、使用base href
写<%=request.getContextPath()
%>太麻烦,可以在每一个jsp文件顶部加入以下代码
<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <base href="<%=basePath%>">
<img src='images/go.gif'/>
浏览器寻找方式: basePath的值http://localhost/Context
path/
再加上images/go.gif,可找到。
-----------------------
第二种情况: servlet转发到jsp
---------------------------------------
1、使用相对路径
URL是http://localhost/Context path
/servlet_2 (转发到/jsp/index.jsp)
错误:
根据/jsp/index.jsp路径计算,得到
<img src='../images/go.gif'/>
正确:
<img src='images/go.gif'/>
原因:
index.jsp是保存在服务器端的/jsp/index.jsp目录下面,但通过转发后浏览器并不知道/jsp/目录的存在,因为地址栏中没有体现出来。所以服务器端/jsp/目录并不会对相对路径产生影响
浏览器寻找方式:通过地址栏分析http://localhost/Context path
/servlet_2 ,相对于servlet_2所在目录(/)下面找到images/go.gif文件
2、使用相对路径
URL是http://localhost/Context path
/servlet
/ser/ser/servlet_1 (转发到/jsp/index.jsp)
“/servlet
/ser/ser/servlet_1 是在web.xml文件配置的
错误:
根据/jsp/index.jsp路径计算,得到 <img src='../images/go.gif'/>
正确:
<img src='../../../images/go.gif'/>
原因:
index.jsp是保存在服务器端的/jsp/index.jsp目录下面,但通过转发后浏览器并不知道/jsp/目录的存在,因为地址栏中没有体现出来。所以服务器端/jsp/目录并不会对相对路径产生影响
浏览器寻找方式:通过地址栏分析http://localhost/Context path
/
servlet
/ser/ser/servlet_1,相对于servlet_1所在目录(ser)的上一层目录的上一层目录的上一层目录(/)下的images/go.gif文件
3、使用决对路径
<img src='<%=request.getContextPath() %>/images/go.gif'/>
-------------------------------
总结
-----------------------------------------------
相对路径是由浏览器通过地址栏分析出来的,与服务器端文件的存放路径没有关系,由其是使用Servlet,struts转发到某jsp文件后,某jsp在服务器端存放的位置是/a/b/c/d/f/g.jsp , 但经过Servlet,struts转发后,浏览器的地址栏可不一定是/a/b/c/d/f/这样的层次。所以相对路径的计算以浏览器地址栏为准
。原创地址:http://elf8848.iteye.com/
struts2中可以使用命名空间,来保证浏览器地址栏中的目录层次与服务器端目录层次的一致性,这样程序员通过服务器端的目录层次计算相对路径,在浏览器中也是正常的。
但我们理解了原理,就算不使用命名空间,自己也有强大的控制力。
转载入注明出处:JAVA应用与开发办公室 http://elf8848.iteye.com/
- 大小: 19.2 KB
分享到:
相关推荐
JSP相对路径深入研究 JSP相对路径深入研究是指在JSP文件中使用图片、CSS、JavaScript等资源时,如何正确地计算相对路径,以便正确地加载资源。下面我们将深入研究JSP相对路径的计算规则。 第一种情况:直接访问JSP...
本文将深入探讨在不同场景下,如何在JSP中正确计算和使用相对路径。 首先,我们来看直接访问JSP文件的情况。假设应用名为"Demo",其目录结构如下: ``` Demo └── demo └── webroot ├── images │ └─...
- **建议**:避免深入研究Swing或Java图形界面编程,因为这些内容在JSP中很少使用。可以通过编写小型应用程序来练习。 ##### 4. 学习JavaScript - **目标**:掌握如何在HTML页面中使用JavaScript进行表单验证,...
这里的`page`属性指定要包含的资源路径,可以是相对URL或者绝对URL。`flush`属性默认为`false`,设置为`true`时,会清空响应缓冲区,确保被包含页面的内容立即写入响应。`jsp:include`在执行时是动态包含,这意味着...
- 文件路径管理,包括相对路径和绝对路径的处理,以及目录的创建和删除。 5. **多线程处理**: - 对于大量图片的下载,可能需要使用多线程来提高效率,避免阻塞用户界面。 - Java的`Thread`类或`ExecutorService...
本文详细介绍了基于JSP的学生选课排课系统的开发过程,从需求分析到系统设计,再到详细设计和测试,每一环节都进行了深入探讨。通过该系统的实现,不仅提升了学校教学管理的自动化水平,也极大地改善了师生的教学...
综上所述,通过对页面静态化、缓存技术、数据源管理、SSI技术以及权限模块等方面的深入研究和实践,我们可以有效地提升网站的整体性能和用户体验。在实际开发过程中,还需要根据具体的业务需求和技术架构,选择最...
本书既适合初学者阅读,也适合具有一定JSP基础的开发人员深入研究使用。 前 言 JSP是SUN公司推出的一种新型的Internet/Intranet开发语言,和前一代Internet/Intranet开发语言(ASP、PHP)相比,JSP在以下几个方面...
5. **资源提取**:将找到的JavaScript、CSS和图片文件从原始位置复制到新的目录结构中,保持相对路径的正确性。 标签中提到的“源码”意味着这个工具可能是开源的,用户可以查看和修改源代码以满足特定需求。“工具...
9. **ActionForward**:定义了Action执行后如何跳转到其他页面或Action,可以是相对路径或绝对路径,也可以指向一个Tiles定义的定义。 10. **Interceptor(拦截器)**:尽管Struts 1.2.9版本没有正式引入拦截器概念...
本文首先介绍了课题背景及研究意义,接着对所采用的技术进行概述,包括S2SH框架、JSP、MySQL数据库等。然后,详细阐述了需求分析,包括功能需求和非功能需求,以及可行性分析。接下来,通过业务流程分析和功能分析,...
随着信息技术的飞速发展,网络已经深入到人们的日常生活之中,而音乐作为人类精神生活的重要组成部分,其在线传播和分享也变得越来越普遍。音乐网站的出现,满足了用户随时随地欣赏音乐的需求,同时为音乐爱好者提供...
随着信息技术的飞速进步,网络已经深入到人们生活的各个角落,教育领域也不例外。在线考试系统作为现代教育信息化的重要组成部分,为教学活动提供了极大的便利。传统的考试模式往往受限于时间和地点,而基于JSP的...
通过研究这个源码包级文档,开发者不仅能深入理解Struts 1.3.5的工作原理,还能提升对MVC设计模式的理解,为后续使用更新的Web框架如Struts 2或Spring MVC打下基础。同时,对于维护旧系统的开发者来说,这将是一份...
开发者需要理解相对路径和绝对路径的概念,以及如何进行目录操作,如创建、删除、读取目录。在SSH框架中,可能涉及到动态构建资源路径,例如加载配置文件或静态资源,这时可以使用Spring的Resource对象,它支持类...
通过深入研究Struts的源代码,开发者可以学习到如何组织和设计Web应用的架构,理解MVC模式的实现,以及如何利用框架来简化开发工作。此外,源代码中的注释和设计模式也对提升编程技能非常有帮助。总之,对Struts源...
学习J2EE需要遵循一定的步骤和方法,以下是一个逐步深入的学习路径。 首先,要从基础的Java语法入手,推荐阅读《Thinking in Java》来理解和掌握面向对象编程的基本概念,包括封装、继承和多态。在这个阶段,理解...