本文是依照参考文档学习时的总结,参考文档原文:Hello World Using Struts 2

Create The Action Class HelloWorldAction

在Struts 2应用中,表单中输入的数据不是被提交给新的服务页面,而是提交给Java class来处理,这些Java class称为Action

1
2
3
4
5
//com.opensymphony.xwork2.ActionSupport
public String execute() throws Exception {
returns Action.SUCCESS
}
Create The View HelloWorld
1
2
<s:property value="messageStore.message" />
<%--The message property of the MessageStore object in the Session context.--%>

可以类比JSP中的

1
2
<jsp:useBean id="messageStore" class="me.struts.ex.helloworld.model.MessageStore" scope="session" />
<jsp:getProperty name="messageStore" property="message" />
运行过程

在index.jsp中点击链接访问/hello.action

1
2
<a href="<s:url action='hello'/>">Hello World</a>
<a href="hello.action">Hello World</a>

类似于web.xml中

1
2
3
4
5
6
7
8
9
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

建立了链接/*org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter的映射关系;

struts.xml中

1
2
3
<action name="hello" class="me.struts.ex.helloworld.action.HelloWorldAction" method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>

建立了hello.actionme.struts.ex.helloworld.action.HelloWorldAction的映射关系。

接下来调用Action的execute方法,创建MessageStore对象,返回SUCCESS。返回为SUCCESS,就将HelloWorld.jsp作为响应返回。

1
<s:property value="messageStore.message" />

调用Action的getMessageStore方法返回MessageStore类的实例messageStore,显示messageStore的属性message。