先贴个本帖的地址,免得其它网站被爬去了struts2教程 官方系列四:Action  即 http://www.cnblogs.com/linghaoxinpian/p/6905521.html

下载本章节代码

介绍

写一个struts2 Action涉及到以下几部分:

  1.映射一个action到一个指定的类

  2.映射一个result到指定视图

  3.在action中编写控制器逻辑

在先前的教程中,我们了解到如何映射一个URL到一个Action,并且指定调用的方法。

struts2 Action类通常继承ActionSupport类,这个类由struts2 framework提供。ActionSupport提供了常见的行为的默认实现(如 execute、input),也实现了一些有用的接口。当我们的Action类继承自它的话,我们可以重写默认的实现,也可以直接继承使用。在先前的章节中,我们的HelloWorldAction就重写了execute方法。

public class HelloWorldAction extends ActionSupport {
private MessageStore messageStore; public String execute() {
//每次调用helloCount++
helloCount++;
messageStore = new MessageStore() ; return SUCCESS;
}

在Action类中处理表单输入

Action类最常见的职责之一是处理表单上的用户输入,在这里有一个有趣的自动填充机制。

<s:form action="hello">
<s:textfield name="userName" label="Your name" />
<s:submit value="Submit" />
</s:form>

请注意textfield标签的name属性的值userName。当用户单击上述表单的submit按钮时,表单字段的值将被送到Struts 2 Action类(HelloWorldAction)中。如果有一个与表单字段名值相匹配的公共设置方法,Action类可以自动接收并填充这些表单字段值。

为了演示用法,让我们在HelloWorldAction类中添加如下代码:

package action;

import com.opensymphony.xwork2.ActionSupport;

import model.MessageStore;

public class HelloWorldAction extends ActionSupport {
private MessageStore messageStore; public String execute() {
//每次调用helloCount++
helloCount++;
messageStore = new MessageStore() ;

      if (userName != null) {
        messageStore.setMessage( messageStore.getMessage() + " " + userName);
      }

return SUCCESS;
} public MessageStore getMessageStore() {
return messageStore;
}
//添加一个static int变量
private static int helloCount = ; public int getHelloCount() {
return helloCount;
} //自动填充
private String userName; public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
}
}

运行:

由于查询字符串参数是用户名,Struts将该参数的值传递给HelloWorldAction的setUserName方法。

本教程向您介绍了如何编写Action类,以便它可以处理表单中用户输入的值。如果表单有多个字段,那么要有多个与表单字段匹配的set方法是很麻烦的。因此,我们的下一篇教程将介绍如何集成一个模型类将之简化。

struts2官方 中文教程 系列四:Action的更多相关文章

  1. struts2官方 中文教程 系列十四:主题Theme

    介绍 当您使用一个Struts 2标签时,例如 <s:select ..../>  在您的web页面中,Struts 2框架会生成HTML,它会显示外观并控制select控件的布局.样式和 ...

  2. struts2官方 中文教程 系列十三:利用通配符选择方法

    介绍 在本教程中,我们将介绍如何在struts.xml中配置action节点以达到仅使用一个action节点将几个不同的url关联到特定action类的特定方法.这样做的目的是减少struts.xml ...

  3. struts2官方 中文教程 系列十二:控制标签

    介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项 ...

  4. struts2官方 中文教程 系列十一:使用XML进行表单验证

    在本教程中,我们将讨论如何使用Struts 2的XML验证方法来验证表单字段中用户的输入.在前面的教程中,我们讨论了在Action类中使用validate方法验证用户的输入.使用单独的XML验证文件让 ...

  5. struts2官方 中文教程 系列十:Form标签

    介绍 在本教程中,我们将探索其他Struts 2表单控件.在前面的教程中,我们介绍了如何使用Struts 2表单(处理表单.表单验证和消息资源文件),我们介绍了如何使用Struts 2 head, f ...

  6. struts2官方 中文教程 系列九:Debugging Struts

    介绍 在Struts 2 web应用程序的开发过程中,您可能希望查看由Struts 2框架管理的信息.本教程将介绍两种工具,您可以使用它们来查看.一个工具是Struts 2的配置插件,另一个是调试拦截 ...

  7. struts2官方 中文教程 系列八:异常处理

    在本教程中,我们将探讨如何启用Struts 2框架处理web应用程序生成的任何未捕获的异常.Struts 2提供了健壮的异常处理,包括能够自动记录任何未捕获的异常,并将用户重定向到错误web页面. 贴 ...

  8. struts2官方 中文教程 系列七:消息资源文件

    介绍 在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定).消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字 ...

  9. struts2官方 中文教程 系列五:处理表单

    先贴个本帖的地址,免得其它网站被爬去了struts2教程 官方系列五:处理表单  即 http://www.cnblogs.com/linghaoxinpian/p/6906298.html 下载本章 ...

随机推荐

  1. c++ 一般虚函数

    类图: 代码: #include <iostream> using namespace std; class CFather //父类 { public: virtual void dis ...

  2. swift中的"类型擦除"

    代理模式.或者协议模式 因为swift泛型还不支持逆变和协变也就不会有真的类型擦除,而这里说的"类型擦除"是指:利用一个具体实现的通用泛型类(参看系统库的AnySequence), ...

  3. 【YY的GCD】

    设 \[f(n)=\sum_{i=1}^N\sum_{j=1}^M[(i,j)=n]\] 我们的答案显然是 \[ans=\sum_{p\in prime}f(p)\] 设 \[F(n)=\sum_{i ...

  4. Hadoop学习之路(二十二)MapReduce的输入和输出

    MapReduce的输入 作为一个会编写MR程序的人来说,知道map方法的参数是默认的数据读取组件读取到的一行数据 1.是谁在读取? 是谁在调用这个map方法? 查看源码Mapper.java知道是r ...

  5. 查看mysql中所有表的数据记录

    select table_name,table_rows from tables where TABLE_SCHEMA = 'database name' order by table_rows de ...

  6. Gradle Goodness: Add Incremental Build Support to Custom Tasks with Annotations

    In a previous post we learned how we can use the inputs and outputs properties to set properties or ...

  7. 与MySQL的零距离接触

    存储引擎 查看数据表的创建命令:show create table tbl_name

  8. Oracle下通过EXPDP导出某用户下的所有表,实例

    一开始在所数据库表导入,导出的时候,经常发现含有BLOB等大数据类型文件无法简单正常的导入导出(imp/dmp),然后在网上得知oracle 10以后有了(impdp/dmpdp)命令,数据导入导出的 ...

  9. Linux Centos平台下安装Nginx

    以home下安装为例,切换到home目录下 cd /home 安装依赖 nginx相关依赖 yum -y install make gcc gcc-c++ openssl openssl-devel ...

  10. MySQL----MySQL数据库入门----第一章 数据库入门

    第一章 数据库入门 1.1 数据库基础知识 1.1.1 数据库概述 数据不仅包括普通意义上的数字,还包括文字.图像.声音等.也就是说,凡是在计算机中用来描述事物的记录都可称作数据. 数据库的基本特点: ...