- 浏览: 4363 次
最新评论
之前使用Struts2只知道setter和getter就可以了,并没有明白其中数据之间传递的道理。今日学习才明白了其中的奥妙。这里说的数据标签指的是property、set、push这3种标签的用法。在说这几个标签让我们先了解一下 ActionContext和值栈(ValueStack)。
●ActionContext是一个全局性存贮区域,拥有与所有请求过程相关联的数据;
●ActionContext是一个本地线程,使Struts2的action是线程安全的;
●值栈是ActionContext的一部分,而Struts2的action都驻留在值栈中进行。
下面来详细说说这3个标签的用法。
一.Property标签
Property标签一般被用来接收来自ActionContext的值栈或者其他一些对象的数据,比如说application或者session。下面来看看具体用法。
建一个Action类DataAction.java,代码如下:
- <SPAN style="FONT-SIZE: 18px">packagecom.iman.action;
- importcom.iman.model.User;
- importcom.opensymphony.xwork2.ActionSupport;
- publicclass DataAction extends ActionSupport {
- /**
- *
- */
- private static final longserialVersionUID = 1L;
- private String title;
- private User user;
- public String useProperty(){
- title="Property的用法";
- user=new User("张三",22);
- return"propertity";
- }
- public String useSet(){
- title="Set的用法";
- user=new User("李四",20);
- return "set";
- }
- public String usePush(){
- title="Push的用法";
- user=new User("王五",21);
- return "push";
- }
- public String getTitle() {
- return title;
- }
- public void setTitle(String title) {
- this.title = title;
- }
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- }</SPAN>
packagecom.iman.action;
importcom.iman.model.User;
importcom.opensymphony.xwork2.ActionSupport;
publicclass DataAction extends ActionSupport {
/**
*
*/
private static final longserialVersionUID = 1L;
private String title;
private User user;
public String useProperty(){
title="Property的用法";
user=new User("张三",22);
return"propertity";
}
public String useSet(){
title="Set的用法";
user=new User("李四",20);
return "set";
}
public String usePush(){
title="Push的用法";
user=new User("王五",21);
return "push";
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
这个Action类包含了使用Property,set,push的3种方法。
接着请看一个model类User.java,代码如下:
- package com.iman.model;
- public class User {
- private String username;
- private int age;
- public User(String username, int age) {
- super();
- this.username = username;
- this.age = age;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- }
package com.iman.model; public class User { private String username; private int age; public User(String username, int age) { super(); this.username = username; this.age = age; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
下面让我们看看在jsp页面中怎么用property标签接收action类中的属性,请看我的useProperty.jsp,代码如下所示:
- <SPAN style="FONT-SIZE: 18px"><%@ page language="java"contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@ taglib prefix="s"uri="/struts-tags" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
- <title>property用法</title>
- </head>
- <body>
- title:<s:property value="title"/><br>
- name:<s:property value="user.username"/><br>
- age:<s:property value="user.age"/>
- </body>
- </html></SPAN>
<%@ page language="java"contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s"uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
<title>property用法</title>
</head>
<body>
title:<s:property value="title"/><br>
name:<s:property value="user.username"/><br>
age:<s:property value="user.age"/>
</body>
</html>
可以看出title这个属性可以直接访问。而name和age是user的那个属性,如果想要访问的话就要使用OGNL的二级表达式去访问这样额属性,好了,打开服务器并部署完项目,在浏览器地址栏输入:http://localhost:8000/Struts2Tutorial/useProperty,得到如下结果:
下面我们用set标签去访问action中的属性
二.Set的用法
Set标签用来指定一个属性值到另一个名称,这样有助于更快更简单的方法访问属性。请看我的useSet.jsp页面,代码如下:
- <%@ page language="java"contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@ taglib prefix="s" uri="/struts-tags"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
- <title>set用法</title>
- </head>
- <body>
- <s:set name="username" value="user.username"></s:set>
- <s:set name="age" value="user.age"></s:set>
- title:<s:property value="title"/><br>
- name:<s:property value="#username"/><br>
- age:<s:property value="#age"/>
- </body>
- </html>
<%@ page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <title>set用法</title> </head> <body> <s:set name="username" value="user.username"></s:set> <s:set name="age" value="user.age"></s:set> title:<s:property value="title"/><br> name:<s:property value="#username"/><br> age:<s:property value="#age"/> </body> </html>
通过用set标签,将user的username和age属性都存贮在ActionContext中了。我们用“#objectName”的形式就可以取到这个属性值了。同样输入地址:http://localhost:8000/Struts2Tutorial/useSet,得到如下所示结果:
当然我们也可以将user的username和age存贮在session中,例如:
<s:set name="username"value="user.username" scope=”session”></s:set>
如果我们想要取session中的值,可以这样取:
name:<s:property value="#session[‘username’]"/><br>
这个你可以自己试试,下面来说说Push标签的用法
三.Push标签
与前两个标签不同的是,Push标签是将值存在值栈中,在设置push标签时应将标签放在使用属性之前,形成“包围”之势,你一定很困惑,请看我的usePush.jsp页面,代码如下所示:
- <%@ page language="java"contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@ taglib prefix="s" uri="/struts-tags"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
- <title>Push用法</title>
- </head>
- <body>
- title:<s:property value="title"/><br>
- <s:push value="user">
- name:<s:property value="username"/><br>
- age:<s:property value="age"/>
- </s:push>
- </body>
- </html>
<%@ page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type"content="text/html; charset=UTF-8"> <title>Push用法</title> </head> <body> title:<s:property value="title"/><br> <s:push value="user"> name:<s:property value="username"/><br> age:<s:property value="age"/> </s:push> </body> </html>
在浏览器地址栏输入:http://localhost:8000/Struts2Tutorial/usePush,页面如下所示:
得到的是一样的结果。
可以看出property,set,push标签得到的都是一样的结果,只是表达不同而已。其中一定要理解ActionContext和值栈之间的关系,好了,附上struts.xml中代码:
- <action name="useProperty" class="com.iman.action.DataAction" method="useProperty">
- <result name="propertity">/data/useProperty.jsp</result>
- </action>
- <action name="useSet" class="com.iman.action.DataAction"method="useSet">
- <result name="set">/data/useSet.jsp</result>
- </action>
- <action name="usePush" class="com.iman.action.DataAction"method="usePush">
- <result name="push">/data/usePush.jsp</result>
- </action>
<action name="useProperty" class="com.iman.action.DataAction" method="useProperty"> <result name="propertity">/data/useProperty.jsp</result> </action> <action name="useSet" class="com.iman.action.DataAction"method="useSet"> <result name="set">/data/useSet.jsp</result> </action> <action name="usePush" class="com.iman.action.DataAction"method="usePush"> <result name="push">/data/usePush.jsp</result> </action>
这是本人学习的结果,欢迎转载,欢迎交流,但转载务必给出本文章的链接地址:http://blog.csdn.net/youqishini/article/details/7061909,谢谢~
相关推荐
数据标签包括property、set、push、param、bean、action、include 和date 等标签。 * property 标签:用于获取或设置JavaBean 的属性。 * set 标签:用于设置变量的值。 * push 标签:用于将数据push 到栈中。 * ...
Struts2是一个流行的MVC框架,它的标签库极大地方便了开发者在JSP页面上的工作。下面将详细介绍Struts2中的部分核心标签及其用法。 A. `<s:a>` 和 `<s:action>`: - `<s:a href="">` 标签用于创建超链接,它可以绑定...
常用的数据标签包括property、set、push、param、bean、date、include等。这些标签可以帮助开发者访问和操作ActionContext和值栈中的数据。 表单标签是 Struts2 中用于构建表单的标签库。常用的表单标签包括form、...
### Struts2 S 标签库详解 #### 引言 Struts2 是一款流行的 Java Web 开发框架,它提供了一系列强大的功能来帮助开发者构建健壮的 Web 应用程序。其中,Struts2 的标签库是其核心特性之一,为开发者提供了丰富的 ...
Struts 2标签库包含了大量预定义的标签,这些标签封装了常见的Web页面元素和交互逻辑,如表单控件、数据绑定、条件判断等,可以显著提高开发效率和代码质量。以下是对部分标签的详细介绍: #### `<s:a>` 标签 该...
数据标签: action:直接调用一个Action,根据executeResult参数,可以将Action的处理结果包含到页面中。 bean:创建一个JavaBean实例。。 date:格式化输出一个日期属性。 debug:生成一个调试链接,当单击该链接时...
### Struts2标签详解及具体实例解析 #### 一、概述 Struts2是一个基于MVC模式的开源框架,它提供了丰富的标签库来简化Web应用的开发过程。这些标签不仅功能强大,而且易于使用,可以帮助开发者快速构建动态网页。...
Struts2是一个强大的MVC框架,它提供了丰富的标签库,使得开发者可以更加便捷地构建动态网页。以下是对Struts2中一些常用标签的详细说明: 1. `<s:a>`:这是一个超链接标签,用于创建HTML的`<a>`标签。通过指定`...
5.4 Struts2数据标签简介 88 5.4.1 action标签使用介绍 88 5.4.2 bean标签使用介绍 89 5.4.3 date标签使用介绍 91 5.4.4 debug标签使用介绍 94 5.4.5 include标签使用介绍 95 5.4.6 push标签使用介绍 97 5.4.7 set...
### Struts2常用标签详解 #### 一、概述 Struts2框架作为一款成熟的Web应用开发框架,在Java Web开发领域有着广泛的应用。Struts2框架提供了丰富的标签库,这些标签可以极大地方便开发者进行Web页面的开发工作。...
Struts2提供了丰富的标签库,其中“S标签”(S-tags)是一种特殊的标签集合,用于简化页面上的数据绑定以及页面逻辑处理。S标签的设计目标是减少对脚本语言(如JSP EL表达式或脚本let)的依赖,并且提高页面的可读性...
6.3 数据标签 117 6.3.1 property标签 117 6.3.2 set标签 118 6.3.3 push标签 119 6.3.4 bean标签 120 6.3.5 action标签 122 6.4 控制标签 124 6.4.1 iterator标签 124 6.4.2 if和else标签 125 6.5 其他标签 126 ...
Struts2提供了丰富的标签库(Tag Library),使得开发人员能够更方便地在JSP页面上进行动态内容展示和数据绑定等操作。 #### 二、标签库介绍 Struts2的标签库主要包括表单标签、条件判断标签、循环标签、国际化标签...
Struts2是一个强大的MVC框架,它提供了丰富的标签库,简化了JSP页面的编写,提高了开发效率。在Struts2中,不再像Struts1.x那样将标签库分为html、bean、logic和tiles等类别,而是统一使用一个`<s>`前缀的标签库,只...
Struts2是一个强大的MVC框架,它提供了丰富的标签库,使得开发者可以更加便捷地构建动态网页。以下是对Struts2标签的详细解释: A部分: 1. `<s:a>`:创建一个链接,与HTML的`<a>`标签相似,允许传递参数。 2. `...
`set`标签在Struts2框架中用于在Value Stack上下文中设置值,它可以将变量绑定到ActionContext,从而在视图层(如JSP)中可以直接访问。例如: ```jsp <s:set var="myVariable" value="Hello, World!" /> ``` 这将在...
Struts2标签库大致分为四类:数据标签、控制流标签、UI标签以及杂项标签。 - **数据标签**:主要负责处理从值栈中提取数据和将数据设置到值栈中。 - **控制流标签**:用于控制程序的执行流程,例如循环和条件判断。...