`

struts1 tiles 模板

 
阅读更多

1 struts1 tiles 模板

就是一个jsp文件.里面使用了一些标签.

 

常用占位符标签,模板里面的占位符需要被具体的值替代,

 

1) 字符串:使用<tiles:getAsString>标签进行占位。如<tiles:getAsString name = "title" />。

<tiles:getAsString name = "title" /> 这个标签定义字符占位符,被字符值替代

 

2) Web资源(包括JSP、Servlet、HTML等):使用<tiles:insert>标签来占位,如<tiles:insert attribute="header" />。

<tiles:insert attribute="header" /> 这个提供属性占位符,定义了一个header属性

 

比如定义了一个模板 layout.jsp.

 

2. 在普通jsp页面里面使用上面的模板

 

 

 

 下面我们来使用这个模板。在Web根目录中建立一个mypage.jsp文件,代码如下:

 

  <%@ page contentType="text/html; charset=GBK"%>

  <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>

  <tiles:insert page="layout.jsp">

      <tiles:put name="title" value="我的页面" />

      <tiles:put name="border" value="${param.border}"/>

      <tiles:put name="header" value="header.jsp"/>

      <tiles:put name="body" value="body.jsp"/>

      <tiles:put name="footer" value="footer.jsp"/>

  </tiles:insert>

 

使用 <tiles:insert page="layout.jsp"> 定义要使用的模板,里面子元素

 

<tiles:put name="border" value="${param.border}"/> put是给模板里面占位符 赋值的.

 

3. 在普通页面要引入模板时,为了避免重复代码,可以在一个文件中定义,

这个文件一般为:WEB-INF目录中建立一个tiles-defs.xml文件

 <?xml version="1.0" encoding="GBK" ?>  

  <!DOCTYPE tiles-definitions PUBLIC

         "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"

         "http://struts.apache.org/dtds/tiles-config_1_1.dtd">

  <tiles-definitions>

      <definition name="myLayout" path="/layout.jsp">

          <put name="title" value="我的页面" />

          <put name="header" value="header.jsp" />

          <put name="body" value="body.jsp" />

          <put name="footer" value="footer.jsp" />

      </definition>

  </tiles-definitions>  

 

<definition name="myLayout" path="/layout.jsp"> 中的path中指定的是一个模板文件

下面的<put name="title" value="我的页面" />子元素,就是定义了所有引用layout.jsp

模板时都需要指定的属性,相当于为模板指定了公共的属性值.

 

4. 上面tiles-definitions如何使用

 

在一个普通的jsp页面中使用下面代码

<%@ page contentType="text/html; charset=GBK"%>

  <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>

  <tiles:insert definition="myLayout">

      <tiles:put name="border" value="${param.border}"/>

  </tiles:insert>

 

<tiles:insert definition="myLayout"> 这个标签就使用3中定义的

可以重复使用的Tiles标签.

 

----------详细说明:

转自 http://www.blogjava.net/nokiaguy/archive/2009/02/27/257067.html

 

Tiles提供的模板机制可以最大限度地避免重复编写代码。实际上,Tiles模板就是的JSP页面,只是在这种JSP页面中使用

 

Tiles标签代替确定不了的内容(相当于占位符),也就是需要在开发人员使用模板时来确定的内容。除了这一点,Tiles模板

 

页面和普通的JSP页面完全相同。

一般的模板页面可以有如下两种占位符:

 

1.        字符串:使用<tiles:getAsString>标签进行占位。如<tiles:getAsString name = "title" />。

 

2.        Web资源(包括JSP、Servlet、HTML等):使用<tiles:insert>标签来占位,如<tiles:insert 

 

attribute="header" />。

 

下面我们来看一下如何编写一个Tiles模板。在Web根目录中建立一个layout.jsp文件,代码如下:

 

  <%@ page pageEncoding="GBK"%>

  <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>

  <html>

      <head>

          <title><tiles:getAsString name="title" /></title>

      </head>

      <body>

          <table border=<tiles:getAsString name="border" />>

              <tr>

                  <td>

                      <tiles:insert attribute="header" />

                  </td>

              </tr>

              <tr>

                  <td>

                      <tiles:insert attribute="body" />

                  </td>

              </tr>

              <tr>

                  <td>

                      <tiles:insert attribute="footer" />

                  </td>

              </tr>

          </table>

      </body>

  </html>

从上例可以看出有五处占位符,这些内容将由开发人员在使用layout.jsp模板时指定。在编写完上述模板后,在Web根目录中

 

建立三个在模板中使用的JSP文件,代码如下:

 

header.jsp

 

<%@ page pageEncoding="GBK"%>

这是一个页头

body.jsp

 

<%@ page pageEncoding="GBK"%>

这是一个页体

 

footer.jsp

 

<%@ page pageEncoding="GBK"%>

这是一个页尾

 

    下面我们来使用这个模板。在Web根目录中建立一个mypage.jsp文件,代码如下:

 

  <%@ page contentType="text/html; charset=GBK"%>

  <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>

  <tiles:insert page="layout.jsp">

      <tiles:put name="title" value="我的页面" />

      <tiles:put name="border" value="${param.border}"/>

      <tiles:put name="header" value="header.jsp"/>

      <tiles:put name="body" value="body.jsp"/>

      <tiles:put name="footer" value="footer.jsp"/>

  </tiles:insert>

     从mypage.jsp页面中可以看出,在<tiles:insert>标 签中通过page属性插入了layout.jsp页面(也就是Tiles模板),并

 

且在<tiles:insert>标签中使用了< tiles:put>子标签为layout.jsp页面中的占位标签指定参数值。如果是

 

<tiles:getAsString>标签, 就会将<tiles:put>标签中的value属性值解释为字符串;如果是<tiles:insert>标签,就会将< 

 

tiles:put>标签中的value属性值解释为Web资源。大家可以看到,如果有多个使用layout.jsp模板的JSP页面,都可以按着 

 

mypage.jsp页面的方式使用这个layout.jsp模板,而无须再重复编写象table这样的HTML元素。

     在启动Tomcat后,我们可以使用如下两个URL来测试程序:

 

http://localhost:8080/samples/mypage.jsp?border=1

 

http://localhost:8080/samples/mypage.jsp?border=0

 

注意:由于<tiles:insert>和<jsp:include>标签类似,被插入或包含的Web资源都无法改面当前页面的字符集编码,因此,在

 

使用Tiles模板时,即使在当前页没有使用中文,也应该使用page指令设置相应的字符集编码。如果没有设置,当模板页面中

 

有中文字符时,即使模板页面使用了正确的字符集编码,在当前页面仍然无法正常显示中文字符。

    上面曾讲过,Tiles框架的目的就是最大限度地避免重复编写代码。而上面的例子虽然已经基本上避免了重复编码的工作

 

,但仍然可能会存在一些重复的代码。如在mypage.jsp页面中的<tiles:put>标签。如果有很多页面都需要插件页头、页尾,

 

那么就会有很多插入相同页面的<tiles:put>标签被分布在不同的JSP页面中。因此,Tiles框架又提供了一个定义文件,来定

 

义些重复使用的Tiles标签。在使用定义文件之前,需要首先安装Tiles插件(如果不使用定义文件,是不需要安装Tiles插件的

 

)。

    下面我们来将上面的部分代码放到定义文件中。在WEB-INF目录中建立一个tiles-defs.xml文件,代码如下:

 

  <?xml version="1.0" encoding="GBK" ?>  

  <!DOCTYPE tiles-definitions PUBLIC

         "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"

         "http://struts.apache.org/dtds/tiles-config_1_1.dtd">

  <tiles-definitions>

      <definition name="myLayout" path="/layout.jsp">

          <put name="title" value="我的页面" />

          <put name="header" value="header.jsp" />

          <put name="body" value="body.jsp" />

          <put name="footer" value="footer.jsp" />

      </definition>

  </tiles-definitions>  

 在上面的代码中定义了一个<definition>元素。并且使用< put>元素对四个属性:title、header、body和footer赋值。因此

 

,如果使用这个定义文件,就可以无需使用< tiles:put>标签再赋一遍值了。在Web根目录中建立一个newpage.jsp文件,代码

 

如下:

 

  <%@ page contentType="text/html; charset=GBK"%>

  <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>

  <tiles:insert definition="myLayout">

      <tiles:put name="border" value="${param.border}"/>

  </tiles:insert>

     newpage.jsp页面的功能和mypage.jsp页面完全一样,只是代码要简单 得多。由于只有border属性需要设置,因此,在

 

newpage.jsp页面中只要设置这一个属性即可。而在<tiles:insert> 标签中使用了definition属性指定了“myLayout”。这个

 

值就是在tiles-defs.xml中<definition>元 素的name属性值。

     在启动Tomcat后,我们可以使用如下的URL来测试newpage.jsp:

 

http://localhost:8080/samples/newpage.jsp?border=1

 

    为了更好的复用,在定义文件中的<definition>元素也可以继承其他的<definition>,如我们可以在tiles-defs.xml文件

 

中加一个<definition>元素,来继承myLayout,代码如下:

 

<definition name="myLayout.newLayout" extends="myLayout">

     <put name="title" value="新的页面" />

</definition>

    上面的代码覆盖了myLayout中的title属性,其他的属性值都继承了myLayout中相应的属性值。其中name属性的值中的“.

 

”是为了表明这个新的<definition>元素是从myLayout继承的,没有特殊的含义。

 

分享到:
评论

相关推荐

    struts2 tiles 模板搭建源码可运行

    - **Action类**:Struts2的Action类负责业务逻辑处理,并根据需要决定渲染哪个Tiles模板。 - **JSP或FreeMarker模板**:这些模板文件包含了实际的HTML和逻辑,它们与Tiles组件对应,由Tiles框架组装成最终的页面。 -...

    Struts2 tiles操作例子

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

    Struts1-tiles标签

    Struts1中的Tiles标签库是一种强大的布局管理...总的来说,Struts1的Tiles标签库是Web开发中一种高效且灵活的布局解决方案,它结合了布局管理器和模板机制的优点,使开发者能够更轻松地构建和维护复杂的Web应用程序。

    struts-tiles框架

    在Struts-Tiles中,"Tiles"指的是页面模板或布局定义,它描述了页面的结构和内容如何组合。这些模板可以包含静态HTML元素,也可以包含动态内容,如JSP片段。"Definitions"是Tiles的配置,它们定义了如何将不同的...

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

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

    struts中tiles标签简介

    这些Attributes将在Tiles内部作为局部变量存在,可用于填充特定的模板区域。 - 示例: ```xml &lt;tiles:put name="footer" value="/footer.jsp" /&gt; ``` **3. 获取Attributes** - `&lt;tiles:getAsString&gt;`:用于获取...

    struts_tiles.rar_Tiles_struts_struts til

    1. **添加依赖**:首先,你需要在项目的类路径中添加Struts Tiles库。这通常通过在构建工具(如Maven或Gradle)的配置文件中指定依赖来完成。 2. **配置Tiles**:在`struts-config.xml`或`struts-tiles.xml`文件中...

    struts2 tiles项目

    3. **结果类型**:Struts2支持多种结果类型,如dispatcher(用于转发到JSP页面),freemarker(用于FreeMarker模板),以及tiles(用于Tiles模板)。 4. **OGNL表达式语言**:Struts2使用OGNL(Object-Graph ...

    Struts2与tiles集成示例

    1. **Integration Setup**: 集成Struts2和Tiles需要添加相应的jar包到项目类路径中,包括struts2-core、struts2-tiles-plugin等。 2. **Tiles插件配置**: 在Struts2的配置文件中,需要启用Tiles插件,并指定Tiles的...

    struts2 tiles 框架实例

    1. **Tiles配置文件**:如`tiles-defs.xml`,在这个文件中,你可以看到各种页面布局的定义,每个定义都指定了一个或多个模板以及可能的数据源。 2. **JSP页面**:例如`header.jsp`, `footer.jsp`, `content.jsp`等,...

    struts2.0 整合tiles 配置

    ### Struts2.0 整合 Tiles 配置详解 #### 一、概述 Struts2框架是基于Java的企业级Web应用开发框架之一,而Tiles则是一个用来组织页面布局的强大工具。将Struts2与Tiles结合使用,可以更加灵活地管理页面结构,实现...

    struts2 tiles2 配置例子

    Struts2和Tiles2是两种在Java Web开发中常用的框架,它们可以协同工作,帮助开发者构建复杂的、可重用的页面结构。以下是对Struts2整合Tiles2进行配置的详细步骤和相关知识点的说明。 首先,`tiles2`是Apache Tiles...

    Struts2+Tiles

    1. **定义模板(Definition)**:Tiles定义了一个页面布局,可以包含多个区域(或称为部分),每个区域可以填充不同的内容。 2. **组件(Component)**:组件是Tiles中的基本元素,可以是一个简单的HTML片段,也...

    struts2 tiles实例 eclipse下运行

    Tiles是Struts2的一个插件,它提供了页面布局和组合的功能,使得开发者可以将一个网页拆分成多个组件,每个组件作为一个独立的瓷砖(tile),然后按照预定义的模板进行组装,极大地提高了页面设计的灵活性和重用性。...

    struts1 tiles

    Tiles是Struts1的一个扩展,用于构建复杂的Web页面布局。Tiles允许开发者定义可重用的页面组件,并通过模板来组合这些组件,从而创建出动态、结构化的网页。 在Struts1中,Tiles的核心概念包括定义(definition)、...

    first_struts_tiles_tutorial.pdf

    - **Template**:使用 Tiles 定义来创建的实际页面模板。 - **Page**:由一个或多个 Tiles 定义组成的完整页面。 #### 四、Struts Tiles 的配置与使用 - **配置文件**:通常使用一个名为 `tiles-defs.xml` 的 XML ...

    struts2 tiles的使用(小实例)

    Struts2 Tiles是一个强大的页面布局和组合框架,用于构建可重用、模块化的Web应用程序界面。这个框架允许开发者将一个Web页面分解成多个组件(或称为“片段”),然后在多个页面中复用这些组件,提高了开发效率和...

    Struts2 Tiles 配置篇 转载

    1. 添加依赖:确保项目包含Struts2-Tiles插件的JAR文件。这通常包括struts2-tiles-plugin-x.x.x.jar以及tiles-api、tiles-compat和tiles-core等相关的Tiles库。 2. 配置Struts2核心:在struts.xml配置文件中启用...

    struts-tiles和validator-strut2教程pdf

    Struts 1中引入了Tiles框架,这是一个视图管理工具,允许开发者将页面布局分解为多个可重用的部分,称为“tiles”,便于设计和维护复杂的用户界面。 **Struts Tiles**: Struts Tiles框架提供了一种组织和组合Web...

    tiles+struts2

    1. **添加依赖**:在项目构建文件(如pom.xml,如果是Maven项目)中添加Tiles和Struts2的依赖。确保版本兼容,因为不兼容的版本可能会导致运行时问题。 2. **配置Tiles插件**:在Struts2的配置文件(通常为struts....

Global site tag (gtag.js) - Google Analytics