Tiles Framework

tiles framework 详解tiles framework 详解

就是一个页面模版引擎。可以渲染页面,属于视图层。

下面给你拷贝一份详细的tiles介绍,你可以初步了解一下。

Tiles框架特性和内容

Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离。它允许先创建模板,然后在运行时动态地将内容插入到模板中。Tiles 框架建立在JSP的include指令的基础上,但它提供了比JSP的 include指令更强大的功能。Tiles框架具有如下特性:    ·创建可重用的模板    ·动态构建和装载页面    ·定义可重用的Tiles组件    ·支持国际化

    Tiles框架包含以下内容:    ·Tiles标签库    ·Tiles组件的配置文件    ·TilesPlugIn插件

    在开发Web站点时,常常要求同一站点的所有Web页面保持一致的外观,比如有相同的布局、页头、页尾和菜单。

采用基本的JSP语句创建复合式网页

    创建动态Web页面的最基本的办法是为每个页面创建独立的JSP文件。如果网页的相同部分发生需求变更,必须手工修改所有的JSP文件。可见,采用基本的JSP语句来编写上述网页,会导致JSP代码的大量冗余,增加开发与维护成本。

    采用JSP的include指令创建复合式网页

    为了减少代码的冗余,可以把index.jsp和product.jsp中相同部分放在单独的JSP文件中,然后在index.jsp和 product.jsp文件中通过JSP include指令把其他JSP文件包含进来。这样提高了代码的可重用性。但是JSP include指令不能完全避免代码冗余,尽管这种方案减少了重复代码,但JSP文件的数量增加了,由原来的2个文件增加到7个文件,所以软件的复杂度也增加了。

    采用Tiles:Insert标签创建复合式网页

    Tiles标签库的tiles:insert标签和JSP include指令具有相同的功能,也能把其他的JSP页面插入到当前页面中。用tiles:insert标签取代JSP include指令来创建复合式页面,代码仅有稍微的差别,两者的利弊也很相似。单纯使用tiles:insert标签来创建复合式页面,还没有充分发挥 Tiles框架的优势。以下两条语句的作用是相同的:<jsp:include page="indexContent.jsp"/><tiles:insert page="indexContent.jsp"/>

    采用Tiles模板创建复合式网页

    尽管使用了tiles:insert标签,index.jsp和product.jsp文件还是存在很多的重复代码。为了提高Web页面的可重用性和可维护性,可以引入Tiles的模板机制。通俗的讲,Tiles模板是一种描述页面布局的JSP页面。Tiles模板仅仅定义Web页面的样式,而不指定内容。在Web应用运行时,才把特定内容插入到模板页面中。同一模板可以被多个Web页面共用。使用模板,可以轻松的实现Web应用的所有页面保持相同的外观和布局,无需为每个页面硬编码。在一个应用中,大多数页面使用同一模板,某些页面可能需要不同的外观,使用其他的模板,因此一个应用可能有一个以上模板。<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%><tiles:insert attribute="sidebar"/><tiles:insert attribute="header"/><tiles:insert attribute="content"/><tiles:insert attribute="footer"/>

<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %><tiles:insert page="layout.jsp" flush="true">       <tiles:put name="sidebar" value="sidebar.jsp"/>      <tiles:put name="header"  value="header.jsp"/>        <tiles:put name="content" value="indexContent.jsp"/>        <tiles:put name="footer"  value="footer.jsp"/>  </tiles:insert>

采用Tiles模板机制,大大提高了代码的可重用性和可维护性,模板中包含了网页共同的布局。如果布局发生变化,只需要修改模板文件,无需修改具体的网页文件。不过,从例程16-13和16-14可以看出,尽管 index.jsp和product.jsp文件的长度都缩短了,但是两者还是存在重复代码。

    Tiles组件的基本使用方法

    为了最大程度的提高代码的可重用性和灵活性,Tiles框架引入了Tiles组件的概念。Tiles组件可以代表一个完整的网页,也可以代表网页的一部分。简单的Tiles组件可以组合成复杂的Tiles组件,或被扩展为复杂的Tiles组件。    Tiles框架允许在专门的XML文件中配置Tiles组件。例如,以下代码定义了一个名为"index-definition"的Tiles组件,它描述整个index.jsp网页:<tiles-definitions>   <definition  name="index-definition"  path="/layout.jsp">      <put name="sidebar" value="sidebar.jsp"/>      <put name="header" value="header.jsp"/>        <put name="content" value="indexContent.jsp"/>        <put name="footer"  value="footer.jsp"/>     </definition></tiles-definitions>

    definition元素的name属性指定Tiles组件的名字,path属性指定Tiles组件使用的模板,definition元素的put子元素用于向模板中插入具体的网页内容。

例程16-15 tiles-defs.xml

<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"  "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">

<tiles-definitions>   <definition  name="index-definition"  path="/layout.jsp">      <put name="sidebar" value="sidebar.jsp"/>      <put name="header"  value="header.jsp"/>        <put name="content" value="indexContent.jsp"/>        <put name="footer"  value="footer.jsp"/>     </definition>

   <definition  name="product-definition"  path="/layout.jsp">      <put name="sidebar" value="sidebar.jsp"/>      <put name="header"  value="header.jsp"/>        <put name="content" value="productContent.jsp"/>        <put name="footer"  value="footer.jsp"/>     </definition>

</tiles-definitions>

    以上代码定义了两个Tiles组件,它们分别代表完整的index.jsp和product.jsp页面。

    (4)在Strut配置文件中配置TilesPlugin插件,代码如下:

<plug-in className="org.apache.struts.tiles.TilesPlugin" >  <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />  <set-property property="definitions-parser-validate" value="true" /></plug-in>

   TilesPlugin插件用于加载Tiles组件的配置文件。在plug-in元素中包含几个set-property子元素,用于向TilesPlugin插件传入附加的参数:    ·definitions-config参数:指定Tiles组件的配置文件,如果有多个配置文件,则它们之间用逗号分隔。    ·definitions-parser-validate参数:指定XML解析器是否验证Tiles配置文件,可选值包括true和false,默认值为true。

    (5)在web.xml文件中配置ActionServlet    为了保证在Web应用启动时加载TilesPlugin插件,应该加入ActionServlet控制器,ActionServlet控制器在初始化时能加载所有的插件。以下是在web.xml文件中配置ActionServlet的代码:

<servlet>    <servlet-name>action</servlet-name>    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>    <init-param>      <param-name>config</param-name>      <param-value>/WEB-INF/struts-config.xml</param-value>    </init-param>    <load-on-startup>3</load-on-startup></servlet>

<servlet-mapping>    <servlet-name>action</servlet-name>    <url-pattern>*.do</url-pattern></servlet-mapping>

    (6)在index.jsp和product.jsp中插入Tiles组件,参见例程16-16和例程16-17:    例程16-16 index.jsp

<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %><tiles:insert definition="index-definition"/>    例程16-17  product.jsp<ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr>    <td bgcolor="e6e6e6" class="code" style="font-size:9pt">    <pre><ccid_code> <%@ page contentType="text/html; charset=UTF-8" %><%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %><tiles:insert definition="product-definition"/>

    通过Struts Action来调用Tiles组件

    如果Tiles组件代表完整的网页,可以直接通过Struts Action来调用Tiles组件。例如,如果希望通过Struts Action来调用16.5.1节定义的名为"index-definition"的Tiles组件,可以在Struts配置文件中配置如下Action 映射:

<action-mappings><action   path="/index"          type="org.apache.struts.actions.ForwardAction"          parameter="index-definition"></action></action-mappings>

    接下来通过浏览器访问 http://localhost:8080/tilestaglibs/index.do,该请求先被转发到ForwardAction, ForwardAction再把请求转发给名为"index-definition"的Tiles组件,最后在浏览器端,用户将看到和index.jsp 相同的页面。

    通过Struts Action来调用Tiles组件,可以充分发挥Struts框架负责流程控制的功能。此外,可以减少JSP文件的数目。例如,如果直接通过Struts Action来调用名为"index-definition"的Tiles组件,就不必再创建index.jsp文件。

    解析Tiles组件的组合与扩展

    Tiles 组件是一种可重用的组件。可以象搭积木一样,把简单的Tiles组件组装成复杂的Tiles组件,例如,可以把名为"index-definition" 的Tiles组件的左边部分拆分为独立的Tiles组件,名为"sidebar-definition"。

<definition  name="index-definition" path="/layout.jsp"><put name="sidebar" value="sidebar-definition" type="definition"/>        ……</definition>

    以上put子元素的value属性指定被包含的Tiles组件的名字,type属性设为"definition",表示value属性指定的是Tiles组件,而不是JSP文件。

<definition  name="index-definition" extends="base-definition">
时间: 2024-10-20 16:28:59

Tiles Framework的相关文章

使用 Apache Tiles 3 构建页面布局(一)

参考博客:http://aiilive.blog.51cto.com/1925756/1596059Apache Tiles是一个JavaEE应用的页面布局框架.Tiles框架提供了一种模板机制,可以为某一类页面定义一个通用的模板,该模板定义了页面的整体布局.布局由可以复用的多个块组成,每个页面可以有选择性的重新定义块而达到组件的复用.Tiles最先作为Apache Struts框架的一个组件,后来被独立为Apache的一个独立项目.Tiles项目主页:http://tiles.apache.o

Spring Framework Ecosystem – Introduction to Spring Projects

来自于:http://springtutorials.com/spring-ecosystem/ Hello and Welcome to Spring Tutorials Blog! Is it fair to assume you have at least heard of Spring Framework official website – spring.io? If not, I would recommend that you check it out. There are som

Microsoft Win32 to Microsoft .NET Framework API Map

Microsoft Win32 to Microsoft .NET Framework API Map .NET Development (General) Technical Articles Microsoft .NET Framework and Microsoft Visual Studio User Education TeamsMicrosoft Corporation January 2004 Applies to:    Microsoft® .NET Framework ver

Spring Framework介绍

http://zh.wikipedia.org/wiki/Spring_Framework Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本.该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一书中的代码,最初由 Rod Johnson 和 Juergen Hoeller等

Spring 4 MVC+Apache Tiles 3 Example

In this post we will integrate Apache Tiles 3 with Spring MVC 4, using annotation-based configuration. Apache Tiles is a template based, composite view framework: it allows to reuse page pieces across the application, keeping consistent look and feel

tiles+springmvc 整合使用

整合步骤 1.增加tiles的jar包(包含tld文件) <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-extras</artifactId> <version>3.0.5</version> </dependency> 2.配置tiles的bean,貌似需要增加到web服务器创建时即创建的spring配置文件中,即需要配置

[自编号1-2]将spring framework源码导入Spring Tool Suite中

先讲基本步骤,如下: 去GitHub中下载spring framework的源码,https://github.com/spring-projects/spring-framework/releases 下载3.2.X其中的一个版本; 安装Gradle软件,官网下载,解压即可,设置GRADLE_HOME,和PATH. 命令行中运行gradle -v,检查一下是否正确安装配置: 命令行中运行spring framework根目录下的import-into-eclipse.bat 连续两次回车,就可

第6章—渲染web视图—使用Apache Tiles视图定义布局

使用Apache Tiles视图定义布局 Tiles是一个免费的开源模板Java应用程序的框架.基于复合模式简化的用户界面的构建.对于复杂的网站仍是最简单.最优雅的方式与任何MVC技术一起工作.Struts2对Tiles提供了支持,如今Tiles发展已有13个年头,成为Apache的一个独立项目,我们可以单独使用Tiles来构建用户界面布局. Tiles项目:http://tiles.apache.org/index.html Tiles的配置DTD定义:http://tiles.apache.

Spring Framework(框架)整体架构 变迁

Spring Framework(框架)整体架构 2018年04月24日 11:16:41 阅读数:1444 标签: Spring框架架构 更多 个人分类: Spring框架 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wd2014610/article/details/80061808 Spring 在这个Spring框架大行其道的软件开发世界里,尚有很多工程师天天在用,但是从来不会去思考下,Spring框架的整体架构到底是什么样子的啊.