Struts2 - Controll Tag的使用(从零开始学习Strust2_06)

开发环境:

Eclipse IDE for Java EE Developers(下载地址

struts-2.3.1.2(下载地址

apache-tomcat-6.0.35(下载地址


效果图:


(以下注释:来自《Struts2权威指南》)
struts2把所有的标签都定义在了一个s的标签库(prefix="s")
struts2可以将所有标签分成三类:

UI标签:主要用于生产HTML元素的标签
非UI标签:主要用于数据访问、逻辑控制等的标签
Ajax标签:用于Ajax支持的标签
UI标签又分为两类:
表单标签:主要用于生成HTML页面的form元素,以及普通表单元素的标签
非表单标签:用于生成页面上的树、Tab页等标签
非UI标签也可分为两类:
数据控制标签:主要包含用于实现分支、循环等流程控制的标签
数据访问标签:主要包含用于输出ValueStack中的值,完成国际化等功能的标签。

控制标签可以完成输出流程控制,例如分支、循环等操作,也可完成对集合的合并、排序等操作。
if:用于控制选择输出的标签;
elseif:与if标签结合使用,用于控制选择输出的标签;
else:与if标签结合使用,用于控制选择输出的标签;
append:用于将多个集合拼接成一个新的集合;
generator:它是一个字符串解析器,用于将一个字符串解析成一个集合;
iterator:迭代器,用于将集合迭代输出;
merge:用于将多个集合拼接成一个新的集合。但与append的拼接方式有所不同;
sort:这个标签用于对集合进行排序;
subset:这个标签用于截取集合的部分元素,形成新的子集合;

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>struts2_20120313_02</display-name>
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

struts.xml 本例是展示一个项目的列表,使用了一个ProjectsAction
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<constant name="struts.devMode" value="true" />
	<package name="default" extends="struts-default">
		<action name="ProjectsAction" class="com.zeph.struts2.action.ProjectsAction">
			<result name="success">/myProjects.jsp</result>
		</action>
	</package>
</struts>

本例中讲了两个Control Tag,iterator和if else。iterator的作用是将集合迭代输出,if的作用和Java中的If相同,条件选择判断。
ProjectsAction.java
package com.zeph.struts2.action;

import java.util.ArrayList;
import java.util.List;

import com.opensymphony.xwork2.ActionSupport;
import com.zeph.struts2.bean.Project;

public class ProjectsAction extends ActionSupport {

	private static final long serialVersionUID = 1L;

	private List<Project> projects = new ArrayList<Project>();

	public List<Project> getProjects() {
		return projects;
	}

	public void setProjects(List<Project> projects) {
		this.projects = projects;
	}

	@Override
	public String execute() throws Exception {
		projects.add(new Project("WebSite", "SSH", "A Java Web Project"));
		projects.add(new Project("QR Decoder", "Android", "2D Code Decoder"));
		projects.add(new Project("Rss Reader", "Android", "A News Reader"));
		return SUCCESS;
	}

}

Project.java  JavaBean

package com.zeph.struts2.bean;

public class Project {
	private String name;
	private String type;
	private String description;

	public Project(String name, String type, String description) {
		this.name = name;
		this.type = type;
		this.description = description;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}
}

index.jsp 使用了一个链接来调用Action
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>A link to my projects list</title>
</head>
<body>
	<s:url action="ProjectsAction" var="ProjectsActionLink"></s:url>
	<a href="${ProjectsActionLink}">My Projects List</a>
</body>
</html>

在myProjects.jsp中通过iterator和if 标签实现 List的迭代输出和条件选择

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>My Projects List</title>
</head>
<body>
	<table border="1">
		<tr>
			<th>Number</th>
			<th>Project</th>
			<th>Type</th>
			<th>Description</th>
		</tr>
		<s:iterator value="projects" status="projectStatus">
			<tr bgcolor='<s:if test="#projectStatus.first">Yellow</s:if>'>
				<td><s:property value="#projectStatus.count" /></td>
				<td><s:property value="name" /></td>
				<td><s:property value="type" /></td>
				<td><s:property value="description" /></td>
			</tr>
		</s:iterator>
	</table>
</body>
</html>






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值