刘文涛

Flex3,Struts2,Hibernate3,Spring2,UML,Oracle,mysql,tomcat,compass,lucene

   :: 首页 ::  ::  ::  :: 管理 ::

2006年8月23日 #

     摘要: Interceptor configuration: 1<package name="default" extends="webwork-default"> 2   <interceptors> 3       <interceptor name="timer" class=".."/> 4       <interceptor name="logger"...  阅读全文
posted @ 2006-08-23 20:06 刘文涛| 编辑 收藏

一个Result是你的action中部分代码执行完成之后的返回值,比如 :

1success
2error

WebWork几乎包含你所需要的大部分result,例如:

1servlet dispatcher
2JSPs(已经使用过的)
3Velocity
4FreeMarker
5Jasper Reports(输出 PDF, XML,和HTML).)

正像你下面看到的那样, result配置是由action 映射和result类型两部分的联合装配起来的.

1<action name="form03" class="lessons.Form03Action">
2      <result name="success" type="dispatcher">page03-success.jsp</result>
3      <result name="error" type="dispatcher">page03-error.jsp</result>
4</action>


II :配置result类型

在WebWork 中的每一个包都能关联一个或多个result类型.

 1<xwork>
 2   <include name="webwork-default.xml"/>
 3
 4   <package name="default" extends="webwork-default">
 5
 6      <result-types>
 7        <result-type name="dispatcher" class="" default="true"/>
 8        <result-type name="redirect" class=""/>
 9      </result-types>
10
11      <default-interceptor-ref name="defaultStack"/>
12
13      <action name="login"
14           class="org.hibernate.auction.web.actions.users.Login">
15        <result name="input">login.jsp</result>
16        <result name="success"
17           type="redirect">/secure/dashboard.action</result>
18     </action>
19   </package>
20</xwork>


使用全局result映射减少重复的(duplication)配置

在 xwork.xml 中减少配置数量的方法是使用全局result映射. Web应用中常常有许多Action拥有共同的Results定义.
共同的Results 包含 :

1重定向到登陆Actions
2拒绝访问页.

 WebWork可以让你集中定义那些公共的页面,而无须在每一个Action映射中定义result.

 1<package name="default" extends="webwork-default">
 2
 3   <global-results>
 4      <result name="login" type="redirect">/login!default.action</result>
 5      <result name="unauthorized">/unauthorized.jsp</result>
 6   </global-results>
 7
 8   <!-- other package declarations -->
 9
10</package>

注意 :

1 因为全局reseults搜索顺序在局部results之后,当你为特定的Action定义了result后就能覆盖任意的全局result映射.

2:Results的接入位置可以使用绝对或相对路径.因为Results可能在你不知道调用上下文的情况下被引用,所以在全局Results定义中最好使用绝对路径. 
posted @ 2006-08-23 18:34 刘文涛| 编辑 收藏

     摘要: 我们将创建一个你能输入名字的表单. 例如 : 如果你输入 " Bob " 并点击提交按钮,你能看到一个页面输出  " Hello, Bob! " . 如果你不输入名字, 点击提交按钮,你将看到页面输出  " Hmm, you don't seem to have ent...  阅读全文
posted @ 2006-08-23 16:37 刘文涛| 编辑 收藏

一个action是一个特殊的一段代码(URL请求时执行的). 再actions执行后,  一个result 通常是

1 一个HTML页面
2 一个PDF文件
3 一个Excel电子表格
4 一个Java applet窗口

 在此文档中, 我们主要集中在HTML results中讨论, 因为大部分情况下我们是工作在Web环境下.

当我们在使用webWork时,如果点击了 form的提交按钮,数据会被发送到你自己写的一个java类,这个类就是webWork的 actions,而form应该这么写:<form action="foo.action">.

在MVC(模型-视图-控制器)方式中,WebWork的action是控制器的一部分

留给JSP页面的是他们最擅长的工作: 创建视图. 

如果你想创建一个这样的例子:当用户输入:http://localhost/helloWorld.action 时,将会看到一条信息显示出来,你必须做3件事情 :

1 :创建一个action类: HelloWorld.

因为我们已经映射webWork的 servlet为 * .action,
所以你要命名一个叫HelloWorld的action

2 :创建一个result: hello.jsp.

3 :配置action和result.

下面来看看代码 :

1 :HelloWorld.java :

 1 package example.helloworld;
 2 import com.opensymphony.xwork.Action;
 3 import java.util. * ;
 4
 5 public class HelloWorld implements Action  {
 6     private String message;
 7
 8      public String execute()  {
 9            message  =   " Hello, WebWorld!\n " ;
10            message  +=   " The time is:\n " ;
11            message  +=  DateFormat.getDateInstance().format( new  Date());;
12
13             return  SUCCESS;
14      }

15
16      public String getMessage()  {
17             return  message;
18      }

19 }


2: hello.jsp

 1 <% @taglibprefix = " ww " uri = " /webwork"%>
 2<html>
 3    <head>
 4        <title>HelloPage</title>
 5    </head>
 6    <body>
 7        我第一个webWorkaction产生的信息:
 8        <ww:propertyvalue="message"/>
 9    </body>
10</html>


3 :xwork.xml

 1 <! DOCTYPE xwork PUBLIC  " -//OpenSymphony Group//XWork 1.0//EN "  
 2     " http://www.opensymphony.com/xwork/xwork-1.0.dtd " >
 3   < xwork >
 4         < include file = " webwork-default.xml " />
 5
 6         < package name = " default "  extends = " webwork-default " >
 7               <!--  Include webwork defaults (from WebWork JAR).  -->
 8               < default - interceptor - ref name = " completeStack " />
 9
10                < action name = " helloWorld "
11              class = " example.helloworld.HelloWorld " >
12               < result name = " success " > hello.jsp </ result >
13                </ action >
14         </ package >
15    </ xwork >


现在,试着: 在你的浏览器地址栏中输入url http://localhost/helloWorld.action ,查看发生了什么. 你应该看到页面输出"Hello, WebWorld!".

代码如何工作

1 :你的浏览器请求url http://localhost/helloWorld.action, 发送到你的web应用服务器.

2 :应用服务器接受此请求helloWorld.action. 查看webapp/WEB-INF/web.xml中的配置, 它发现所有的 *.action (这是缺省配置) 请求都被 handed off 到 com.opensymphony.webwork.dispatcher.FilterDispatcher这个过滤器,也可以说这些请求现在都被handed 到WebWork了.

3 :WebWork 查看在xwork.xml 中action名为 "helloWorld"的配置. 发现helloWorld对应HelloWorld这个类,于是 调用HelloWorld类的execute()方法. execute() 返回 SUCCESS, WebWork 又一次在xwork.xml 中查看,装载返回值是SUCCESS 时的页面即 :"hello.jsp".

4 :页面hello.jsp 处理标签

< ww:property value = " message "   />

调用HelloWorld.java中的方法 getMessage())

 

结束语,就WebWork, 所有的html表单元素发送到一个action. 此action返回一个常数result-name,比如:

1 SUCCESS
2 ERROR
3 INPUT

根据wwork.xml一个给定的result-name可能对应 :

1 page(就像前面那个例子)
2 另外一个action
3 其他web资源 如 :image,pdf

 

posted @ 2006-08-23 15:12 刘文涛| 编辑 收藏

WebWork 是一个流行的, 容易使用的 MVC 框架.  在深入理解WebWork之前, 推荐您重新审视下列概念:

1Java 
2Servlets, JSP,Tag Libraries 
3JavaBeans 
4HTML and HTTP 
5Web 容器(例如Tomcat) 
6XML 

发行包webwork-2.2.2 包含下列目录结构:

 1dist/
 2docs/
 3lib/
 4src/
 5src/java/template/
 6webapps/
 7README.txt
 8build.properties
 9build.xml
10ivy.xml
11osbuild.xml
12pom.xml
13webwork-(VERSION).jar
14webwork-(VERSION).zip
15webwork-src-(VERSION).jar

docs目录包含 :

1当前版本的Javadoc
2您正在阅读的文档
3标签库文档
4Junit的构建报告.

在dist目录包含WebWork的不同jar封装文件:

1:webwork-nostatic-<version>.jar: 仅仅包含WebWork的非静态内容. 
2:webwork-static-<version>.zip: 包含WebWork必须的静态内容. 

lib目录包含WebWork必需的以及可选的依赖包

      lib/
 1
      ajax
 2      bootstrap
 3      build
 4      cewolf
 5      default
 6      fileupload
 7      fileupload-cos
 8      fileupload-pell
 9      hibernate
10      jasperreports
11      jfree
12      pico
13      plexus
14      portlet
15      quickstart
16      sitemesh
17      source
18      spring
19      tiger
20      tiles
21      velocity
22      xslt


注意:WebWork运行时可选包不是必须要的. 如果你希望使用某些特性如JasperReport或Java 5 (Tiger) 的注解支持,就必须包含所选特性的支持包.

Webwork也将全部的源文件和JSP标签模版打包在其中.
posted @ 2006-08-23 12:00 刘文涛| 编辑 收藏

在WebWork 2.2.2发布之后,
WebWork和Struts的社区将会开始合并Webwork和Struts,
最终会成为 Struts Action 2.0,

你可以通过访问项目首页找到更多关于这个合并的信息以及最近的状态:

http://incubator.apache.org/projects/webwork2.html


2个国家合并了。兵合一处,将打一家。  

posted @ 2006-08-23 11:41 刘文涛| 编辑 收藏