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="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

你可能感兴趣的:(action)