CSDN博客

img JasonSeaver

Webwork2学习笔记(一)

发表于2004/7/12 22:17:00  4047人阅读

分类: Java

最近打算开始学习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,看看感觉如何

0 0

相关博文

我的热门文章

img
取 消
img