个性化阅读
专注于IT技术分析

Struts 2 Tiles Framework集成教程示例

  1. Struts 2 Tiles集成
  2. Struts 2 Tiles集成的8个步骤

我们可以通过与tile框架集成来定制struts 2应用程序的布局。

网页可以包含许多部分(称为图块), 例如页眉, 左窗格, 右窗格, 主体部分, 页脚等。在图块框架中, 我们通过”布局管理器”页面管理所有图块。


瓷砖框架的优势

tile框架具有以下优点:

  • 通过集中页面自定义我们只能按单个页面(集中页面)自定义所有页面的布局。
  • 代码可重用性页眉或页脚可以在许多页面中使用。因此, 它节省了编码。
  • 易于修改如果修改了任何部分(平铺), 则无需更改很多页面。
  • 易于删除如果删除了页面的任何部分(平铺), 则无需从所有页面中删除代码。我们可以从布局管理器页面中删除图块。
带Tiles的Struts2

创建图块应用程序的步骤

步骤如下:

  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="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开发)


输出

Struts2和tile框架输出2

密码不是管理员, 因此将显示错误页面。


Struts2和tile框架输出3

如果密码为admin, 将显示成功页面。

Struts2和tile框架输出4

如何在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>
赞(0)
未经允许不得转载:srcmini » Struts 2 Tiles Framework集成教程示例

评论 抢沙发

评论前必须登录!