简介:
1.映射一个Action到一个类上面
2.把结果返回到view展示
3.编写Action对应的控制逻辑
1. Action Mapping
<
action
name="hello" class="org.apache.struts.helloworld.action.HelloWorldAction" method="execute">
<
result
name="success">/HelloWorld.jsp</
result
>
</
action
>
上面的Action,类HelloWorldAction将会返回HelloWorld.jsp到浏览器
2. Struts 2 Action Classes
Action类在MVC中是作为控制器,负责的是响应用户的操作,执行业务逻辑(调用其他的类做一些其他的事情),然后返回结果告诉Struct应该响应哪一个页面。
Struct2 的Action类常常扩展自ActionSupport,这个类是有Struct2框架提供的。ActionSupport提供大多数动作的默认的实现,并且实现了Struct2 的接口。自定义的类扩展自ActionSupport,可以重装默认的实现,也可以继承它们。
我们在显示的页面中加上:
<
s:form
action="hello">
<
s:textfield
name="userName" label="Your name" />
<
s:submit
value="Submit" />
</
s:form
>
希望在展示的时候能够展示欢迎输入人的名称。
我们在HelloWorldAction 加上:
private
String userName;
public
String getUserName() {
return
userName;
}
public
void
setUserName(String userName) {
this
.userName = userName;
}
来记录输入人的名称,并且填入欢迎的信息中。
if
(userName !=
null
) {
messageStore.setMessage( messageStore.getMessage() + " " + userName);
}
最后HelloWorldAction为:
import org.apache.struts.helloworld.model.MessageStore; import com.opensymphony.xwork2.ActionSupport; public class HelloWorldAction extends ActionSupport { private static final long serialVersionUID = 1L; private MessageStore messageStore; private static int helloCount = 0; private String userName; @Override public String execute() throws Exception { messageStore = new MessageStore() ; if(this.getUserName() != null){ messageStore.setMessage( messageStore.getMessage() + " " + userName); } //记录执行的次数 helloCount++; return SUCCESS; } public MessageStore getMessageStore() { return messageStore; } public void setMessageStore(MessageStore messageStore) { this.messageStore = messageStore; } public int getHelloCount() { return helloCount; } public void setHelloCount(int helloCount) { HelloWorldAction.helloCount = helloCount; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } }
测试:http://127.0.0.1:12345/struct2test/index.action
提交: