要在/jsp/index.jsp文件使用图片,如何计算相对路径? 经过Servlet,struts转发后又如何计算相对路径?
目录结构:在附件中
第一种情况 :直接访问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/
- 大小: 11.1 KB
分享到:
相关推荐
本篇文章将详细探讨“mysql+jsp路径设置”这一主题,以及与之相关的知识点。 首先,我们从MySQL的安装开始。`mysql安装.txt`可能包含了MySQL的安装步骤和配置信息。在Windows系统中,通常会将MySQL安装在"C:\...
jsp根路径解决方法,可以解决相对路径与绝对路径之间混淆的问题。
在本篇文章中,我们将探讨如何进行JSP路径映射操作,以便能够正确访问放置在`WEB-INF`文件夹下的JSP页面。 首先,`WEB-INF`目录是一个特殊目录,它的设计目的是为了保护应用的敏感资源,比如类文件、配置文件等,...
jsp页面路径问题,request.getcontentType.;request.getscheme;request.getServerName
- 为了提高用户体验和SEO优化,开发者可能会采用URL重写技术,如使用Tuckey的UrlRewriteFilter,来隐藏实际的JSP路径,提供更加直观的URL结构。 8. **Spring框架中的路径管理** - 如果使用Spring框架,`@...
### JSP虚拟路径的配置 #### 一、老版本Tomcat中的虚拟路径配置方法 在较早版本的Tomcat(例如Tomcat 4.1)中,虚拟路径的配置主要是在`server.xml`文件中进行的。具体步骤如下: 1. **定位到`server.xml`文件**...
### JSP中绝对路径与相对路径的理解与应用 #### 一、引言 在Web开发中,路径的选择对于页面间的跳转以及资源的加载至关重要。本文将深入探讨JSP(JavaServer Pages)环境中绝对路径与相对路径的区别及其应用场景,...
在JSP中使用绝对路径显示图片,可以确保无论用户如何浏览网站,图片都能正确加载。这种方法尤其适用于静态资源管理,比如在多个页面中重复使用的背景图片或者logo。 首先,了解JSP的基本结构。JSP是由HTML、CSS、...
在JavaServer Pages (JSP) 开发中,理解并熟练运用相对路径是非常关键的技能,尤其是在处理页面间的链接、资源引用以及文件操作时。相对路径是相对于当前文档位置的路径,与之相对的是绝对路径,它是从文件系统根...
### JSP中使用Struts2 File属性选择文件夹路径 #### 背景与问题描述 在实际开发过程中,我们可能会遇到这样的需求:用户需要上传一个文件夹而非单个文件。然而,在使用Struts2框架时,其内置的`file`属性只允许...
### JSP路径问题解决方案 #### 一、引言 在Java Server Pages (JSP) 开发过程中,路径问题一直是困扰开发者的一大难题。错误的路径设置不仅会导致资源加载失败,还可能引发一系列连锁反应,严重影响应用的功能性和...
JSP相对路径深入研究 JSP相对路径深入研究是指在JSP文件中使用图片、CSS、JavaScript等资源时,如何正确地计算相对路径,以便正确地加载资源。下面我们将深入研究JSP相对路径的计算规则。 第一种情况:直接访问JSP...
在Java Server Pages(JSP)开发中,获取各种路径是构建动态网页和处理请求的关键步骤之一。本文将深入探讨在JSP中获取不同路径的方法,包括它们的应用场景、实现方式以及可能的影响,帮助开发者更好地理解和掌握JSP...
2. **jsp路径问题.txt** JSP中的路径问题常常涉及到相对路径和绝对路径的使用。开发者需要理解`()%>`获取应用的根路径,以及如何正确引用静态资源如CSS、JavaScript文件和图片。 3. **jdbc连接sqlserver2005.txt**...
如果在实际开发中遇到问题,如404错误,可能需要检查JSP路径配置、Tomcat版本或Maven依赖是否正确。同时,考虑到JSP在现代Web开发中的局限性,如动态标签支持不足,以及编译和加载速度较慢,建议在新的项目中优先...
使用时,开发者可能需要配置源JSP路径、目标HTML路径以及可能的参数,例如是否包含特定的JSP标签库等。 4. **注意事项** - 静态化可能导致缓存问题,因为静态HTML无法实时反映数据库的更新。因此,需要在更新数据...
这里需要注意的是,路径中的`//.jsp`实际上是错误的写法,正确的应该是具体的JSP路径,例如`"/index.jsp"`。此外,`request.getRequestDispatcher()`方法支持两种类型的路径: 1. 通过`request....
在这个例子中,`hello`方法返回的字符串就是视图名称,Spring Boot会自动将其与`spring.mvc.view.prefix`和`spring.mvc.view.suffix`组合成完整的JSP路径`/WEB-INF/jsp/hello.jsp`。 现在,在`src/main/webapp/WEB-...