最近打算开始学习webwork,在这里我想藉此Blog来记录我的学习历程,也希望和所有webwork的爱好者们一起做个交流
好了废话不多说,我先介绍一下我对此次学习的准备:
1。工具及环境准备
JDK1.4.2(位置为%JAVA_HOME%)
Eclipse3.0(推荐插件:lomboz、XMLBuddy、TomcatPlugin)
Webwork2.1(位置为%WEBWORK_HOME%)
Tomcat5.0.25
2。学习资料准备
Webwork2.1自带的教程(在webwork2.1/doc下)
下面学习开始了
[第一个webwork程序helloWorld的搭建]
1。用Eclipse新建一个Tomcat Project,这里我建了一个项目名为Z_Webwork的Tomcat Project.
Z_Webwork的目录结构如下:
Z_Webwork/work
Z_Webwork/WEB-INF
Z_Webwork/WEB-INF/classes
Z_Webwork/WEB-INF/lib
Z_Webwork/WEB-INF/src
2。Import %WEBWORK_HOME%/webwork-2.1.jar 到Z_Webwork/WEB-INF/lib下
copy %WEBWORK_HOME%/lib/core/*.jar 到Z_Webwork/WEB-INF/lib下
3。设置Eclipse环境的变量
右击项目Z_Webwork->Properties->Java Build Path->Add Library->User Library
->New 一个用户自定义Library:WEBWORK_LIB
->Add JARs %WEBWORK_HOME%/webwork-2.1.jar
->Add JARs %WEBWORK_HOME%/lib/core/*.jar
4。建立Webwork中需要用到三个基本的配置文件
(1)web.xml
位置:Z_Webwork/WEB-INF/
内容如下:
<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>My WebWork Application</display-name>
<servlet>
<servlet-name>webwork</servlet-name>
<servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/lib/webwork-2.1.jar</taglib-location>
</taglib>
</web-app>
(2)xwork.xml
位置:Z_Webwork/WEB-INF/src/
内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<!-- Include webwork defaults (from WebWork-2.1 JAR). -->
<include file="webwork-default.xml" />
<!-- Configuration for the default package. -->
<package name="default" extends="webwork-default">
</package>
</xwork>
(3)validators.xml
位置:Z_Webwork/WEB-INF/src/
内容如下:
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator
1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">
<validators>
<validator name="required"
class="com.opensymphony.xwork.validator.validators.RequiredFieldValidator"/>
<validator name="requiredstring"
class="com.opensymphony.xwork.validator.validators.RequiredStringValidator"/>
<validator name="int"
class="com.opensymphony.xwork.validator.validators.IntRangeFieldValidator"/>
<validator name="date"
class="com.opensymphony.xwork.validator.validators.DateRangeFieldValidator"/>
<validator name="expression"
class="com.opensymphony.xwork.validator.validators.ExpressionValidator"/>
<validator name="fieldexpression"
class="com.opensymphony.xwork.validator.validators.FieldExpressionValidator"/>
<validator name="email"
class="com.opensymphony.xwork.validator.validators.EmailValidator"/>
<validator name="url"
class="com.opensymphony.xwork.validator.validators.URLValidator"/>
<validator name="visitor"
class="com.opensymphony.xwork.validator.validators.VisitorFieldValidator"/>
<validator name="conversion"
class="com.opensymphony.xwork.validator.validators.ConversionErrorFieldValidator"/>
</validators>
好了,这样一个webwork的骨架搭好了,整体结构如下图:
5。下面我们将按照Lesson 3: Actions and Results做一个示例
ex01-index.jsp :此页面将一个表单提交给一个action(HelloWebWorldAction)处理
HelloWebWorldAction.java :继承ActionSupport实现了HelloWebWorldAction,这里HelloWebWorldAction扮演MVC中的Control
ex01-success.jsp :HelloWebWorldAction处理成功后将返回此页面
在这里,为了便于管理,我仿照教程在Z_Webwork下建了目录lesson03/example01,并将ex01-index.jsp和ex01-success.jsp置于其下
HelloWebWorldAction.java位置是Z_Webwork/WEB-INF/src/lesson03,在后续的笔记里,所有的例子我都将按照这种结构存放代码
各页面代码分别如下:
//ex01-index.jsp
<html>
<head>
<title>WebWork Tutorial - Lesson 3 - Example 1</title>
</head>
<body>
<p>Click the button below to activate HelloWebWorldAction.</p>
<form action="helloWebWorld.action" method="post">
<p><input type="submit" value="Hello!" /></p>
</form>
</body>
</html>
//HelloWebWorldAction.java
package lesson03;
/**
* @author 泰伯子仪
*
*/
import com.opensymphony.xwork.ActionSupport;
public class HelloWebWorldAction extends ActionSupport
{
String hello;
public String getHello()
{
return hello;
}
public String execute() throws Exception
{
hello = "Hello, WebWorld!";
return SUCCESS;
}
}
//ex01-success.jsp
<%@ taglib uri="webwork" prefix="ww" %>
<html>
<head>
<title>WebWork Tutorial - Lesson 3 - Example 1</title>
</head>
<body>
<ww:property value="hello" />
</body>
</html>
6。配置 xwork.xml
在<package name="default" extends="webwork-default">
和 </package>
之间加入如下代码片断:
<!-- Default interceptor stack. -->
<default-interceptor-ref name="defaultStack" />
<!-- Action: Lesson 03: HelloWebWorldAction. -->
<action name="helloWebWorld" class="lesson03.HelloWebWorldAction">
<result name="success" type="dispatcher">ex01-success.jsp</result>
</action>
修改后的xwork.xml如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<!-- Include webwork defaults (from WebWork-2.1 JAR). -->
<include file="webwork-default.xml" />
<!-- Configuration for the default package. -->
<package name="default" extends="webwork-default">
<!-- Default interceptor stack. -->
<default-interceptor-ref name="defaultStack" />
<!-- Action: Lesson 03: HelloWebWorldAction. -->
<action name="helloWebWorld" class="lesson03.HelloWebWorldAction">
<result name="success" type="dispatcher">ex01-success.jsp</result>
</action>
</package>
</xwork>
7。至此,第一个webwork例子建好了,启动Tomcat,
在浏览器里输入:http://localhost:8080/Z_Webwork/lesson03/example01/ex01-index.jsp
我们将看到如图页面:
点击“Hello”按钮将出现页面:
[例子分析]
这是我做的第一个webwork程序,在这之前我就听说webwork比起struts来说是一种简洁而且优雅的MVC模式的实现框架,这样一看果不其然。
配置简单:在第一个例子里,实际需要我们配置的代码就只有xwork.xml中的一部分action片断
taglib使用方便:这个例子使用了webwork自带的taglib,感觉很棒,以后我会试试velocity,看看感觉如何