- Struts 2 Tiles集成
- Struts 2 Tiles集成的8个步骤
我们可以通过与tile框架集成来定制struts 2应用程序的布局。
网页可以包含许多部分(称为图块), 例如页眉, 左窗格, 右窗格, 主体部分, 页脚等。在图块框架中, 我们通过”布局管理器”页面管理所有图块。
瓷砖框架的优势
tile框架具有以下优点:
- 通过集中页面自定义我们只能按单个页面(集中页面)自定义所有页面的布局。
- 代码可重用性页眉或页脚可以在许多页面中使用。因此, 它节省了编码。
- 易于修改如果修改了任何部分(平铺), 则无需更改很多页面。
- 易于删除如果删除了页面的任何部分(平铺), 则无需从所有页面中删除代码。我们可以从布局管理器页面中删除图块。
创建图块应用程序的步骤
步骤如下:
- 在应用程序中添加图块库
- 在web.xml文件中定义Struts2TilesListener
- 创建输入页面(index.jsp)
- 创建动作类
- 在包中扩展tile-default包, 并将所有结果类型定义为struts.xml文件中的tile
- 创建tile.xml文件并定义所有tile定义
- 创建LayoutManager页面
- 创建视图组件
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="login"></s:submit>
</s:form>
4)创建动作类
该动作类包含一个字段名称并定义了execute方法。
Login.java
package com.srcmini;
public class Login {
private String name, password;
//getters and setters
public 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="Welcome Page"/>
<put-attribute name="body" value="/login-success.jsp"/>
</definition>
<definition name="login-error" template="/layoutmanager.jsp">
<put-attribute name="title" value="Login Error"/>
<put-attribute name="body" value="/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="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开发)
输出
密码不是管理员, 因此将显示错误页面。
如果密码为admin, 将显示成功页面。
如何在Struts 2应用程序中定义多个图块文件
要定义多个图块, 你需要在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>
评论前必须登录!
注册