`
JAVAPOWER
  • 浏览: 47509 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

在 struts 引用中使用 tiles 模板时,JSP 文件引用外部文件需注意路径问题!

阅读更多
先给出工程的目录结构:

webproject
  |
  |-css
  |  |-head.css
  |  |-body.css
  |  |-foot.css
  |
  |-img
  |  |-head_bg.jpg
  |  |-body_gb.jpg
  |
  |-WEB-INF
  |   |-pages
  |      |-head.jsp
  |      |-body1.jsp
  |      |-body2.jsp
  |      |-body3.jsp
  |      |-layout.jsp
  |      |-foot.jsp
  |
  |-index1.jsp
  |-index2.jsp
  |-index3.jsp

其中 layout.jsp 是模板,index1.jsp 、index2.jsp 和 index3.jsp 的代码如下:

index1.jsp 如下-------------------------------------------------

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<tiles:insert page="/WEB-INF/pages/layout.jsp" flush="true">
  <tiles:put name="head" value="head.jsp"></tiles:put>
  <tiles:put name="body" value="body1.jsp"></tiles:put>
  <tiles:put name="foot" value="foot.jsp"></tiles:put>
</tiles:insert>


index2.jsp 如下-------------------------------------------------

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<tiles:insert page="/WEB-INF/pages/layout.jsp" flush="true">
  <tiles:put name="head" value="head.jsp"></tiles:put>
  <tiles:put name="body" value="body2.jsp"></tiles:put>
  <tiles:put name="foot" value="foot.jsp"></tiles:put>
</tiles:insert>
 
 
index2.jsp 如下-------------------------------------------------

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<tiles:insert page="/WEB-INF/pages/layout.jsp" flush="true">
  <tiles:put name="head" value="head.jsp"></tiles:put>
  <tiles:put name="body" value="body3.jsp"></tiles:put>
  <tiles:put name="foot" value="foot.jsp"></tiles:put>
</tiles:insert>

下面给出 layout.jsp 和 head.jsp 的源码

layout.jsp -----------------------------------------
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>head.jsp</title>
</head>
<body>
    <tiles:insert attribute="head"></tiles:insert>
    <tiles:insert attribute="body"></tiles:insert>
            <tiles:insert attribute="foot"></tiles:insert>
 
        </body>
</html>

head.jsp ---------------------------------------------------------

<%@ page language="java" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>head.jsp</title>
  <link href="css/header.css"[/color] rel="stylesheet" type="text/css" />
  </head>
 
  <body>
    <img src="img/head_bg.gif"/>[color=red]

    <div class="head">
       <ul>
         <li><a href="#">##</a></li>
         <li><a href="#">##</a></li>
         <li><a href="#">##</a></li>
         <li><a href="#">##</a></li>
      </ul>
    </div>
  </body>
</html>

我们注意到,在上面的两个路径中,如果相对于当前的 head.jsp 文件,那么 CSS 的link 路径应该为:
<link href="../../css/header.css"[/color] rel="stylesheet" type="text/css" />

同样,引用背景图片的路径也应该为:
<img src="../../img/head_bg.gif"/>[color=blue]


但是,这样是错的!
当工程运行的时,用户请求 index1.jsp 时,用 tiles:insert 来的 head.jsp 将找不到它想引用的 CSS 和背景图片。
因为当用户请求 index1.jsp 时,这时 URL 地址是:http://localhost:8080/webproject/( 在WEB.XML 中配了 index1.jsp 为 welcome-file)
而此时 head.jsp 的路径也在此 (试验出来,没完全确定),故此时 head.jsp 引用的 CSS 和背景图片路径应该从此路径开始。所以 head.jsp 引用它们的路径分别应该为:
<link href="css/header.css"[/color] rel="stylesheet" type="text/css" />

<img src="img/head_bg.gif"/>[color=red]


不知是否如此,望高人指正!
分享到:
评论

相关推荐

    在struts中的tiles模板使用的jar包

    在Struts中使用Tiles模板,可以有效地组织和重用页面组件,提高开发效率。 在使用Tiles模板时,必须引入相应的jar包。这些jar包包含了Tiles框架的核心类库和依赖,它们是运行Tiles功能的基础。下面将详细介绍这些...

    Struts2中使用Tiles组件

    在Struts2中使用Tiles组件,可以更有效地管理和构建动态Web应用的用户界面。 首先,我们需要理解Tiles的基本概念。Tiles是一个视图框架,它的核心思想是页面模板和组合。通过定义模板,我们可以创建一个基本的布局...

    struts2 tiles 模板搭建源码可运行

    学习这个源码,你可以深入理解Struts2和Tiles如何协同工作,如何定义和使用模板,以及如何在实际项目中实现动态页面组装。这将有助于提升你在Java Web开发中的技能,尤其是对于那些需要构建大型、结构复杂的Web应用...

    tiles+struts2配置文件

    5. **创建JSP页面**:在JSP页面中,我们可以使用Tiles的标签来引用定义好的页面。例如,在`homePage.jsp`中: ```jsp &lt;%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %&gt; &lt;tiles:...

    struts2.0 整合tiles 配置

    接着,需要在`struts.xml`文件中配置Tiles插件,并指定默认包。示例如下: ```xml &lt;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ...

    Struts1-tiles标签

    Tiles框架是Apache Software Foundation发起的一个开源项目,它为开发者提供了创建复合式网页的能力,允许在运行时动态地将内容插入预定义的页面布局中。 在J2SE中,AWT和Swing提供了多种布局管理器,如FlowLayout...

    Struts2与tiles集成示例

    2. **Tiles插件配置**: 在Struts2的配置文件中,需要启用Tiles插件,并指定Tiles的配置文件位置。 3. **Tiles配置文件**: 在这里定义页面模板和组件,比如定义一个主页面,其中包含头部、内容和底部三个部分。 4. ...

    tiles+struts2

    3. **创建Tiles定义**:在项目的`tiles-defs.xml`(或者在Struts2配置文件中直接定义)中定义tiles。每个定义包含一个模板,即页面的基本布局,以及一系列组件(或称为属性),它们会被插入到模板的相应位置。 ```...

    Struts2 tiles操作例子

    在探讨“Struts2 tiles操作例子”这一主题时,我们首先需要理解Struts2框架以及tiles插件在其中扮演的角色。Struts2是Apache软件基金会赞助的一个开源Web应用框架,它基于MVC(Model-View-Controller)设计模式,...

    Struts2+Tiles

    通过阅读和学习《Struts2+Tiles》相关的博客文章(如博文链接所示),你可以深入理解这两者的集成方式,如何配置Struts2的struts.xml和tiles.xml文件,以及如何在Action中使用Tiles API来决定页面内容。此外,你还能...

    struts资料\Tiles框架--页面布局

    要在Struts应用中使用Tiles,需要添加相应的依赖库,并在Struts的配置文件(struts-config.xml)中配置Tiles插件。然后,可以使用Tiles的标签库来引用定义,将定义插入到JSP页面中。 以上就是关于Struts Tiles框架...

    struts-tiles框架

    5. **在JSP中使用Tiles**:在视图层,JSP页面可以包含Tiles,使用`&lt;tiles:insert&gt;`标签插入定义的Tiles。 Struts-Tiles的特性包括: - **复用性**:由于页面被分解为独立的部分,可以方便地在多个页面中重用。 - **...

    struts中tiles标签简介

    在Web开发领域,尤其在使用Struts框架时,为了提高代码复用性及页面布局的灵活性,开发者经常使用到一个非常有用的工具——Tiles框架。Tiles框架允许我们通过组合可复用的组件来构建网页。这种组件化的思想不仅使得...

    struts_tiles.rar_Tiles_struts_struts til

    2. **配置Tiles**:在`struts-config.xml`或`struts-tiles.xml`文件中配置Tiles定义。每个定义代表一个Tile,包括其名称、模板路径以及可能的属性。例如: ```xml ...

    struts2标签+ tiles lib

    在Struts2中集成Tiles,需要在`struts.xml`配置文件中添加Tiles插件,然后在`tiles.xml`中定义页面模板。配置完成后,Action可以通过返回一个特定的结果代码来调用对应的Tiles定义。 6. **最佳实践** - 尽量将...

    Struts-2.1.6整合Tiles2全攻略

    **注意**:在某些老版本(如2.0)的配置中,监听器类可能为`org.apache.struts2.tiles.web.startup.TilesListener`,而2.1版本中使用的是`org.apache.struts2.tiles.StrutsTilesListener`,这是2.0版本监听器类的一...

    struts2 tiles 框架实例

    通过使用Tiles插件,我们可以创建一个Tiles配置文件,该文件定义了页面的各个部分,如头部、主体和底部,然后在Action中根据需要引用这些定义。 在提供的"TestTiles"压缩包文件中,可能包含了以下内容: 1. **...

    tiles配置文件

    在JSP页面中,可以通过Tiles标签库中的`tiles:insert`标签来引用Tiles组件。 ##### 示例代码: ```jsp &lt;%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %&gt; &lt;tiles:insert page="layout.jsp" flush=...

    Tiles使用(Struts2)

    要在Struts2项目中使用Tiles,首先需要添加Tiles和Struts2-Tiles插件的依赖到项目构建文件(如pom.xml)。接着,在Struts2的配置文件(struts.xml)中配置Tiles插件,指定tiles的配置文件位置。 3. **Tiles配置...

    struts2 mvc tiles

    在Struts2中使用Tiles的主要步骤包括: 1. **配置Tiles**:在struts.xml配置文件中添加Tiles插件的配置,以及定义页面模板。 2. **定义Tiles定义**:创建一个或多个tiles-defs.xml文件,定义每个页面模板及其组成...

Global site tag (gtag.js) - Google Analytics