struts2官方 中文教程 系列四:Action
先贴个本帖的地址,免得其它网站被爬去了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的更多相关文章
- struts2官方 中文教程 系列十四:主题Theme
介绍 当您使用一个Struts 2标签时,例如 <s:select ..../> 在您的web页面中,Struts 2框架会生成HTML,它会显示外观并控制select控件的布局.样式和 ...
- struts2官方 中文教程 系列十三:利用通配符选择方法
介绍 在本教程中,我们将介绍如何在struts.xml中配置action节点以达到仅使用一个action节点将几个不同的url关联到特定action类的特定方法.这样做的目的是减少struts.xml ...
- struts2官方 中文教程 系列十二:控制标签
介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项 ...
- struts2官方 中文教程 系列十一:使用XML进行表单验证
在本教程中,我们将讨论如何使用Struts 2的XML验证方法来验证表单字段中用户的输入.在前面的教程中,我们讨论了在Action类中使用validate方法验证用户的输入.使用单独的XML验证文件让 ...
- struts2官方 中文教程 系列十:Form标签
介绍 在本教程中,我们将探索其他Struts 2表单控件.在前面的教程中,我们介绍了如何使用Struts 2表单(处理表单.表单验证和消息资源文件),我们介绍了如何使用Struts 2 head, f ...
- struts2官方 中文教程 系列九:Debugging Struts
介绍 在Struts 2 web应用程序的开发过程中,您可能希望查看由Struts 2框架管理的信息.本教程将介绍两种工具,您可以使用它们来查看.一个工具是Struts 2的配置插件,另一个是调试拦截 ...
- struts2官方 中文教程 系列八:异常处理
在本教程中,我们将探讨如何启用Struts 2框架处理web应用程序生成的任何未捕获的异常.Struts 2提供了健壮的异常处理,包括能够自动记录任何未捕获的异常,并将用户重定向到错误web页面. 贴 ...
- struts2官方 中文教程 系列七:消息资源文件
介绍 在本教程中,我们将探索使用Struts 2消息资源功能(也称为 resource bundles 资源绑定).消息资源提供了一种简单的方法,可以将文本放在一个视图页面中,通过应用程序,创建表单字 ...
- struts2官方 中文教程 系列五:处理表单
先贴个本帖的地址,免得其它网站被爬去了struts2教程 官方系列五:处理表单 即 http://www.cnblogs.com/linghaoxinpian/p/6906298.html 下载本章 ...
随机推荐
- less使用总结
15年自学了 less ,可是一直没用,就忘记了.后来抱着提高 css 开发速度的目的,又去学习了 less ,学完马上用,效果立竿见影,记得也牢了.刚开始学习前,我们总会问自己一个问题,学习它有什么 ...
- Input and Output-The input is all the sources of action for your app
Programs take input and produce output. The output is the result of doing something with the input. ...
- Counting swaps
Counting swaps 给你一个1-n的排列,问用最少的交换次数使之变为递增排列的方案数\(mod\ 10^9+7\),1 ≤ n ≤ 10^5. 解 显然最少的交换次数不定,还得需要找到最小交 ...
- 巧用DNSlog实现无回显注入
测试一些网站的时候,一些注入都是无回显的,我们可以写脚本来进行盲注,但有些网站会ban掉我们的ip,这样我们可以通过设置ip代理池解决, 但是盲注往往效率很低,所以产生了DNSlog注入.具体原理如下 ...
- gdbt与adboost(或者说boosting)区别
boosting 是一种将弱分类器转化为强分类器的方法统称,而adaboost是其中的一种,或者说AdaBoost是Boosting算法框架中的一种实现 https://www.zhihu.com/q ...
- Spring(十二)之JDBC框架
JDBC 框架概述 在使用普通的 JDBC 数据库时,就会很麻烦的写不必要的代码来处理异常,打开和关闭数据库连接等.但 Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQ ...
- vue每次请求加头部(shiro+vue)
前后台分离,全局请求加头部 设置全局请求为ajax请求 _axios.interceptors.request.use( function(config) { var accessToken = lo ...
- 指纹协查统计sql
select dic.name, NVL(zc.zc_djzs,0),NVL(zc.zc_shzs,0),NVL(zc.zc_bzzs,0), NVL(zt.zt_djzs,0),NVL(zt.zt ...
- Spring coud微服务框架具体实现关键说明
搭建一个微服务,考虑的问题涉及到运维,数据管理,性能,并发等方方面面.项目中使用Spring coud 搭建微服务,从技术选型,到技术实现都要全方面考虑服务化的问题.下面简单总结下搭建过程用的技术说明 ...
- 菜鸟程序猿之IDEA快捷键
Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ ...