猿教程 Logo

Struts 2 + Tiles框架集成教程示例

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

网页可以包含许多部分(称为Tiles),如标题,左窗格,右窗格,正文部分,页脚等。在Tiles框架中,我们通过布局管理器页面管理所有的Tiles。


Tiles框架的优势

Tiles框架有以下优点:

  • 集中式页面定制:我们可以通过单页(集中式页面)自定义所有页面的布局。

  • 代码可重用性: 页眉或页脚可以在许多页面中使用。 所以它可以节省编码。

  • 易于修改:如果修改了任何零件(Tile),我们不需要更改许多页面。

  • 易于删除:如果页面的任何部分(Tile)被删除,我们不需要从所有页面中删除代码。 我们可以从布局管理器页面中删除该图块。



创建Tiles应用程序的步骤

步骤如下:

  1. 在应用程序中添加Tiles库

  2. 在web.xml文件中定义Struts2TilesListener

  3. 创建输入页面(index.jsp)

  4. 创建Action类

  5. 扩展包中的tiles-default包,并将所有结果类型定义为struts.xml文件中的tile

  6. 创建tiles.xml文件并定义所有的tile定义

  7. 创建LayoutManager页面

  8. 创建View组件


1)在应用程序中添加Tiles库

如果使用myeclipse IDE,您可以通过右键单击项目 - >构建路径 - >添加库 - >添加Myeclipse库 - >选择Struts 2Tiles库 - >确定来添加Tiles库。

如果您使用eclipse或Netbeans IDE,则需要在项目中添加所需的Tiles库。


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

<%@ 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)创建action类

此操作类包含一个字段名称并定义了execute方法。

Login.java

package com.javatpoint;

public class Login {
private String name,password;

//getters and setters

public String execute(){
if(password.equals("admin")){
	return "success";
}
else{
	return "error";
}
}
}

5)继承tiles-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.javatpoint.Login">  
<result name="success" type="tiles">login-success</result>  
<result name="error" type="tiles">login-error</result>  
</action>  
   
</package>  
</struts>



6)创建tiles.xml文件并定义所有的tile定义

tiles.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)创建View组件

有很多视图组件,如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>

输出:


密码不是管理员,所以会显示错误页面。


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



如何在struts2应用程序中定义多个tile文件

要定义多个tile,您需要在web.xml文件中添加以下条目。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Struts/struts-2-tiles-framework-integration.html