struts2学习进阶(基础篇)——Hello World
当
你提交一个HTML表单到这个框架中的时候,输入并不是被发送到服务页,而是被发送到你提供的Java类,这些类被称为Action。在这些Action
执行完后,选择某一个资源来呈现返回结果,这个资源一般是页面,但也可以是PDF文件,或者是Excel文件,亦或是Java applet窗口。
假设你想要创建一个“Hello World”的例子来呈现欢迎信息,在你准备好开发环境后,为了创建一个“Hello World”的例子,你需要做如下三件事情:
1. 创建一个jsp页面来呈现欢迎信息;
2. 创建一个Action类来创建信息;
3. 在配置文件中配置action和页面的映射关系。
注意:为了创建这个组件,我们将工作流分成几乎无人不晓的三部分:视图、模型和控制器。分离这三部分的原因是当系统变得越来月复杂的时候,我们能够更好的管理。
一. 准备工作
建立web工程,其中工程名为tutorial,在WebRoot下引入struts2的lib下的如下4个包:
commons-logging-1.1.jar
freemarker-<?XML:NAMESPACE PREFIX = ST1 />.jar
ognl-.jar
struts2-core-.jar
xwork-.jar
在web.xml文件中增加struts2的FilterDispatcher,修改后的web.xml如下:
<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>tutorial</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

二. 代码
首先,我们需要一个jsp页面来呈现信息,HelloWorld.jsp页面代码如下所示:
<%@ 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 ";
public String execute() throws Exception {
setMessage(MESSAGE);
return SUCCESS;
}
private String message;
public void setMessage(String message){
this.message = message;
}
public String getMessage() {
return message;
}
}
第三步,我们需要在配置文件中进行相应配置来将两者联系起来。让我们编辑src下的struts.xml文件,该文件内容如下:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="tutorial" extends="struts-default">
<action name="HelloWorld" class="tutorial.HelloWorld">
<result>/HelloWorld.jsp</result>
</action>
<!-- Add your actions here -->
</package>
</struts>
代
码已经完成,让我们来尝试运行它。部署该应用程序并打开http://localhost:8080/tutorial
/HelloWorld.action,我们可以看到标题栏为:Hello World,并且显示“Struts is up and
running!”的页面呈现在我们面前。
三. 代码是如何工作的?
你的浏览器向Web服务器发送了的http://localhost:8080/tutorial/HelloWorld.action(注:tutorial为部署在Tomcat中的的项目名称)的URL请求后,服务器做了如下工作:
1. 容器接收到了Web服务器对资源HelloWorld.action的请求,根据web.xml中的配置,服务器将包含有.action后缀的请求转到 org.apache.struts2.dispatcher.FilterDispatcher类进行处理。这个FilterDispatcher是框 架的一个进入点;
2. 框架在struts.xml配置文件中找到名为HelloWorld的action对应的类。框架初始化该Action并且执行该Action类的execute方法;
3. execute方法将信息放入message变量中,并返回成功。框架检查配置以查看当返回成功时对应的页面。框架告诉容器来获得请求返回的结果页面HelloWorld.jsp;
4. 在HelloWorld.jsp执行完后,<s:property value="message" />标签调用HelloWorld的Action类中的getMessage方法来获得message的值,并将合并了值的页面呈现给用户;
5. 一个纯粹的HTML页面显示在用户的浏览器上。
四. 测试Action
测试Action很简单,以下是上述HelloWorld的Action类的测试类的代码:
package tutorial;
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 result = hello_world.execute();
assertTrue("Expected a success result!",
ActionSupport.SUCCESS.equals(result));
assertTrue("Expected the default message!",
HelloWorld.MESSAGE.equals(hello_world.getMessage()));
}
}
五. 需要记住的东西
本框架利用Action来处理HTML的表单以及其余请求。Action返回一个结果的名字字符串,例如SUCCESS、ERROR以及INPUT等,从struts.xml中获取映射信息。一个给定的结果字符串将选择一个页面或其他资源(图片或PDF)来返回给用户。
当一个jsp被载入的时候,通常有一些动态变化的元素需要Action来载入。为了更加容易的显示动态数据,本框架提供了一些可以跟HTML配合使用的标签。
假设你想要创建一个“Hello World”的例子来呈现欢迎信息,在你准备好开发环境后,为了创建一个“Hello World”的例子,你需要做如下三件事情:
1. 创建一个jsp页面来呈现欢迎信息;
2. 创建一个Action类来创建信息;
3. 在配置文件中配置action和页面的映射关系。
注意:为了创建这个组件,我们将工作流分成几乎无人不晓的三部分:视图、模型和控制器。分离这三部分的原因是当系统变得越来月复杂的时候,我们能够更好的管理。
一. 准备工作
建立web工程,其中工程名为tutorial,在WebRoot下引入struts2的lib下的如下4个包:
commons-logging-1.1.jar
freemarker-<?XML:NAMESPACE PREFIX = ST1 />.jar
ognl-.jar
struts2-core-.jar
xwork-.jar
在web.xml文件中增加struts2的FilterDispatcher,修改后的web.xml如下:
首先,我们需要一个jsp页面来呈现信息,HelloWorld.jsp页面代码如下所示:
<%@ taglib prefix="s" uri="/struts-tags" %>
public class HelloWorld extends ActionSupport {
public static final String MESSAGE = "Struts is up and running ";
public String execute() throws Exception {
setMessage(MESSAGE);
return SUCCESS;
}
private String message;
public void setMessage(String message){
this.message = message;
}
public String getMessage() {
return message;
}
}
三. 代码是如何工作的?
你的浏览器向Web服务器发送了的http://localhost:8080/tutorial/HelloWorld.action(注:tutorial为部署在Tomcat中的的项目名称)的URL请求后,服务器做了如下工作:
1. 容器接收到了Web服务器对资源HelloWorld.action的请求,根据web.xml中的配置,服务器将包含有.action后缀的请求转到 org.apache.struts2.dispatcher.FilterDispatcher类进行处理。这个FilterDispatcher是框 架的一个进入点;
2. 框架在struts.xml配置文件中找到名为HelloWorld的action对应的类。框架初始化该Action并且执行该Action类的execute方法;
3. execute方法将信息放入message变量中,并返回成功。框架检查配置以查看当返回成功时对应的页面。框架告诉容器来获得请求返回的结果页面HelloWorld.jsp;
4. 在HelloWorld.jsp执行完后,<s:property value="message" />标签调用HelloWorld的Action类中的getMessage方法来获得message的值,并将合并了值的页面呈现给用户;
5. 一个纯粹的HTML页面显示在用户的浏览器上。
四. 测试Action
测试Action很简单,以下是上述HelloWorld的Action类的测试类的代码:
public class HelloWorldTest extends TestCase {
public void testHelloWorld() throws Exception {
HelloWorld hello_world = new HelloWorld();
String result = hello_world.execute();
assertTrue("Expected a success result!",
ActionSupport.SUCCESS.equals(result));
assertTrue("Expected the default message!",
HelloWorld.MESSAGE.equals(hello_world.getMessage()));
}
}
本框架利用Action来处理HTML的表单以及其余请求。Action返回一个结果的名字字符串,例如SUCCESS、ERROR以及INPUT等,从struts.xml中获取映射信息。一个给定的结果字符串将选择一个页面或其他资源(图片或PDF)来返回给用户。
当一个jsp被载入的时候,通常有一些动态变化的元素需要Action来载入。为了更加容易的显示动态数据,本框架提供了一些可以跟HTML配合使用的标签。
没有评论:
发表评论