首页 > 代码库 > struct2(四)编写Struct2 的Action

struct2(四)编写Struct2 的Action

简介:

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="http://www.mamicode.com/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

image

image

提交:

image

struct2(四)编写Struct2 的Action