Struts 2 Tiles Framework集成教程示例

  1. Struts 2 Tiles集成
  2. Struts 2 Tiles集成的8个步骤
我们可以通过与tile框架集成来定制struts 2应用程序的布局。
网页可以包含许多部分(称为图块), 例如页眉, 左窗格, 右窗格, 主体部分, 页脚等。在图块框架中, 我们通过” 布局管理器” 页面管理所有图块。
瓷砖框架的优势
tile框架具有以下优点:
  • 通过集中页面自定义我们只能按单个页面(集中页面)自定义所有页面的布局。
  • 代码可重用性页眉或页脚可以在许多页面中使用。因此, 它节省了编码。
  • 易于修改如果修改了任何部分(平铺), 则无需更改很多页面。
  • 易于删除如果删除了页面的任何部分(平铺), 则无需从所有页面中删除代码。我们可以从布局管理器页面中删除图块。
Struts 2 Tiles Framework集成教程示例

文章图片
创建图块应用程序的步骤
步骤如下:
  1. 在应用程序中添加图块库
  2. 在web.xml文件中定义Struts2TilesListener
  3. 创建输入页面(index.jsp)
  4. 创建动作类
  5. 在包中扩展tile-default包, 并将所有结果类型定义为struts.xml文件中的tile
  6. 创建tile.xml文件并定义所有tile定义
  7. 创建LayoutManager页面
  8. 创建视图组件
1)在你的应用程序中添加图块库
如果你使用的是myeclipse IDE, 则可以通过右键单击项目-> 构建路径-> 添加库-> 添加Myeclipse库-> 选择Struts 2 Tiles库-> 确定来添加图块库。
如果使用的是eclipse或Netbeans IDE, 则需要在项目中添加所需的tile库。
下载struts2 jar文件
2)在web.xml文件中定义Struts2TilesListener
在web.xml文件中提供侦听器类Struts2TilesListener的条目。
web.xml
< ?xml version="1.0" encoding="UTF-8"?> < web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> < welcome-file-list> < welcome-file> index.jsp< /welcome-file> < /welcome-file-list> < filter> < filter-name> struts2< /filter-name> < filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter < /filter-class> < /filter> < filter-mapping> < filter-name> struts2< /filter-name> < url-pattern> /*< /url-pattern> < /filter-mapping> < listener> < listener-class> org.apache.struts2.tiles.StrutsTilesListener< /listener-class> < /listener> < /web-app>

3)创建输入页面(index.jsp)
index.jsp
< %@ taglib uri="/struts-tags" prefix="s" %> < s:form action="login"> < s:textfield name="name" label="Name"> < /s:textfield> < s:password name="password" label="Password"> < /s:password> < s:submit value="http://www.srcmini.com/login"> < /s:submit> < /s:form>

4)创建动作类
该动作类包含一个字段名称并定义了execute方法。
Login.java
package com.srcmini; public class Login { private String name, password; //getters and setterspublic String execute(){ if(password.equals("admin")){ return "success"; } else{ return "error"; } } }

5)继承tile-default包, 并在struts.xml中将所有结果类型定义为tile
该xml文件定义了一个包含一个动作和两个结果的程序包。
struts.xml
< ?xml version="1.0" encoding="UTF-8" ?> < !DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> < struts> < package name="abc" extends="tiles-default" > < action name="login" class="com.srcmini.Login"> < result name="success" type="tiles"> login-success< /result> < result name="error" type="tiles"> login-error< /result> < /action> < /package> < /struts>

6)创建Tiles.xml文件并定义所有tile定义
tile.xml文件必须位于WEB-INF目录内。
Tiles.xml
< ?xml version="1.0" encoding="UTF-8" ?> < !DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" "http://tiles.apache.org/dtds/tiles-config_2_0.dtd"> < tiles-definitions> < definition name="login-success" template="/layoutmanager.jsp"> < put-attribute name="title" value="http://www.srcmini.com/Welcome Page"/> < put-attribute name="body" value="http://www.srcmini.com/login-success.jsp"/> < /definition> < definition name="login-error" template="/layoutmanager.jsp"> < put-attribute name="title" value="http://www.srcmini.com/Login Error"/> < put-attribute name="body" value="http://www.srcmini.com/login-error.jsp"/> < /definition> < /tiles-definitions>

7)创建LayoutManager页面
这是布局管理器页面。它使用tile的getAsString标记包括字符串资源, 并使用tile的insertAttribute标记包括页面资源。
layoutmanager.jsp
< %@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %> < !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> < html> < head> < title> < tiles:getAsString name="title" /> < /title> < /head> < body> < %@include file="header.jsp" %> < tiles:insertAttribute name="body" /> < %@ include file="footer.jsp" %> < /body> < /html>

8)创建视图组件
视图组件很多, 例如header.jsp, footer.jsp, welcome.jsp等。
header.jsp
< h2 style="background-color:pink; text-align:center; "> It is header tile< /h2> < hr/>

footer.jsp
< hr> < h2 style="background-color:pink; text-align:center; "> It is footer tile< /h2>

login-success.jsp
< %@ taglib uri="/struts-tags" prefix="s" %> Welcome, < s:property value="http://www.srcmini.com/name"/> < /textrea> < /div> < hr/> < strong> login-error.jsp< /strong> < div class="codeblock"> < textarea name="code" class="xml" > Sorry, username or password error! < jsp:include page="index.jsp"> < /jsp:include>

下载此示例(由Eclipse IDE开发)
下载此示例(由myeclipse IDE开发)
输出
Struts 2 Tiles Framework集成教程示例

文章图片
密码不是管理员, 因此将显示错误页面。
Struts 2 Tiles Framework集成教程示例

文章图片
如果密码为admin, 将显示成功页面。
Struts 2 Tiles Framework集成教程示例

文章图片
如何在Struts 2应用程序中定义多个图块文件
【Struts 2 Tiles Framework集成教程示例】要定义多个图块, 你需要在web.xml文件中添加以下条目。
< context-param id="struts_tiles"> < param-name> org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG< /param-name> < param-value> /WEB-INF/tiles1.xml, /WEB-INF/tiles2.xml< /param-value> < /context-param>

    推荐阅读