分享

Struts2入门教程-Hello World

 昵称1833699 2010-06-21
当你向一个框架提交HTML表单的时候,输入的数据并不是被发送到一个服务端页面,而是传送到一个你自己提供的称为Action的java类,产生的结果会选择一个资源来绘制响应。该资源通常为一个服务端的页面,但也可以是一个pdf的文档,也可以是一个Excel电子数据表格,或者是Java applet窗口。
    假设你希望创建一个简单的“Hello World”例子来显示欢迎消息。下载struts2的空web应用(即struts2-blank-2.0.6.war),你需要做以下三件事:
1.创建一个服务页面来展示消息
2.创建一个Action类来创建消息
3.创建一个连接Action类和页面的映射
    让我们来看看这个Action,服务页面和映射的例子。如果你喜欢也可以使用IDE来编辑代码。
代码如下:
首先,定义一个服务页面显示数据
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
        <head>
                 <title>Hello World!</title>
        </head>
        <body>
                 <h2><s:property value="message" /></h2>
        </body>
</html>
其次,我们需要一个Action类来创建消息
package tutorial;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorld extends ActionSupport {
     
       public static final String MESSAGE = "Struts is up and running...";
      
       private String message;
       public String execute() throws Exception {
                setMessage(MESSAGE);
                return SUCCESS;
       }
        public void setMessage(String message) {
                this.message = message;
        }
        public String getMessage() {
                return message;
        }
}
最后我们需要一个映射来绑定所有。
编辑struts.xml文件来添加HelloWorld映射
<!DOCTYPE struts PUBLIC
           "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
           "http://struts./dtds/struts-2.0.dtd">
<struts>
          <package name="tutorial" extends="struts-default">
                    <action name="HelloWorld" class="tutorial.HelloWorld">
                              <result>/HelloWorld.jsp</result>
                    </action>
          </package>
</struts>
然后部署该应用程序,打开http://localhost:8080/tutorial/HelloWorld.action观察出现了什么,你会看见一个标题为Hello World!的页面并有一个“Struts is up and running”的消息。
代码是如何工作的:
1.容器接收到HelloWorld.action的请求。根据web.xml的设置,容器会寻找所有被发送到org.apache.struts2.dispatcher.FilterDispatcher的请求,包括所有的*.action的请求。FilterDispatcher是框架的入口点。
2.框架寻找一个映射名为HelloWorld的Action类。它找到与HelloWorld类相关的映射,并调用Action的execute方法。
3.execute方法设置了消息并返回SUCCESS。如果返回的是SUCCESS,框架会检查Action类映射的哪个页面将被装载。框架会告诉容器绘制HelloWorld.jsp作为请求的响应。
4.当HelloWorld.jsp被调用,<s:property value="message" />标签调用HelloWorld的Action类的getter方法getMessage,并将message的值合并到响应中去。
5.一个纯粹的响应被发送回浏览器。
测试Actions类,代码如下
package tutorizl
import junit.framework.TestCase;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldTest extends TestCase {
         public void testHelloWorld() throws Exception {
            
               HelloWorld hello_world = new HelloWorld();
               String results = hello_world.execute();
               assertTrue("Expected a success results!", ActionSupport.SUCCESS.equals(results));
 
               assertTrue("Expected the default message!",HelloWorld.MESSAGE.equals(hello_world.getMessage()));
        }
}
需要记住的是:框架使用Action类来处理HTML表单和其他请求,Action类返回一个诸如SUCCESS,ERROR,或INPUT名称。根据来自struts.xml的映射,一个返回的名称会选择相应的页面,另外的Action,或其他web资源(图象,PDF)。
当一个服务端页面被绘制,大多情况下会包括由Action类提供的动态数据。框架会提供一系列的HTML标签创建页面来使得显示动态数据更加简单。
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多