页面路径搜索问题

最近在编辑JSP页面时,遇到页面上图片无法显示和包含的页面找不到的问题。后来研究了一下,得出一些结论。下面以web应用myWeb为例进行说明。假设其下有common和test两个目录其目录结构大致如下:

myWeb

  | -- index.jsp

  | -- test

  |       | -- test.jsp

  | -- common

  |         | -- taglibs.jsp

  |         | -- background.jpg

编译期路径:主要是在jsp页面编译成html之前的一些页面指令,如<@ page>、<@ taglig>等,其搜索路径的根目录是web应用目录,也就是myWeb。假如test/test.jsp需要包含common/taglibs.jsp,则在test.jsp中可以这样写:<%@ include file="/common/taglibs.jsp"%>,表示要包含根目录下common目录下的taglibs.jsp,也可以这样:<%@ include file="../common/taglibs.jsp"%>表示包含父目录下common目录下taglibs.jsp,推算如下:test的父目录为myWeb,也就是myWeb/common/taglibs。taglibs.jsp的内容大致如下:

编译期路径:主要是在jsp页面编译成html之前的一些页面指令,如<@ page>、<@ taglig>等,其搜索路径的根目录是web应用目录,也就是myWeb。假如test/test.jsp需要包含common/taglibs.jsp,则在test.jsp中可以这样写:<%@ include file="/common/taglibs.jsp"%>,表示要包含根目录下common目录下的taglibs.jsp,也可以这样:<%@ include file="../common/taglibs.jsp"%>表示包含父目录下common目录下taglibs.jsp,推算如下:test的父目录为myWeb,也就是myWeb/common/taglibs。taglibs.jsp的内容大致如下:

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/page.tld" prefix="page" %>
<%

String background="/common/background.jpg ";

%>

  1. 运行期路径:主要是指在jsp被编译成html后的搜索路径。这时其搜索路径的根路径为web应用的父目录。如果使用jboss为web服务器,则这时的根路径为<jboss安装目录>/server/default/deploy

test.jsp内容大致如下:

<%@ include file="/common/taglibs.jsp"%>
<img src="<%=background%>" width="717" height="42">

如果在浏览器中敲入test.jsp所在路径,则图片显示不出来,这是因为被转成html后上面的代码会别翻译成<img src="/common/background.jpg" width="717" height="42"> ,这时图片的搜索路径是<jboss安装目录>/server/default/deploy/common/background.jpg,而实际这个文件是不存在的,所以图片无法显示。而如果将taglibs.jsp中background定义为:<%String background="../common/background.jpg ";%><%String background="/myWeb/common/background.jpg ";%>则可以正确显示。前一种根据相对路径会搜索/myWeb/test/../common/taglibs.jsp,后一种是绝对路径为/myWeb/common/taglibs.jsp都能找到文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值