WebWork方式的HelloWorld


一、搭建骨架

    在WebWork的开发包中找到下面一些应用程序必须的文件,相信这个难不倒你:)

       xwork.jar  WebWork构建所依赖的XWork类库
       common-logging.jar  通用的日志类库,WebWork用它为Log4J或者JDK提供透明的日志记录
       oscore.jar  OSCore,一个来自OpenSymphony公司的通用功能类库
       velocity-dep.jar  依赖Velocity类库
       ognl.jar  对象图导航语言(OGNL),WebWork中使用的表达式语言
       xwork.xml  WebWork配置文件,为你的Web应用程序定义action、result和interceptor
       web.xml  J2EE Web应用程序配置文件,为你的Web应用程序定义servlet、JSP标签库等内容


    现在创建一个名为HelloWorld项目(用你喜欢和习惯的IDE),在项目下创建一个源代码文件夹如src,一个web文件夹如webApp,把web.xml放在WEB-INF目录下,而xwork.xml应该被放在WEB-INF\classes下,如果是在IDE环境下就放在源代码文件夹下编译后就会出现在WEB-INF\classes了。相关的*.jar自然是放在WEB-INF\lib下了。下面我们对几个配置文件进行基本的修改。

    为了让WebWork正常工作,我们必须配置一个在 上一篇笔记中提到的前端控制器(Front Controller),使特定URL模式的请求都被提交给WebWork处理。这和Struts是相似的。来看代码吧(web.xml):

 1  < web-app >
 2     
 3      < servlet >
 4         < servlet-name > webwork </ servlet-name >
 5         < servlet-class >
 6           com.opensymphony.webwork.dispatcher.ServletDispatcher
 7         </ servlet-class >
 8      </ servlet >
 9 
10      < servlet-mapping >
11         < servlet-name > webwork </ servlet-name >
12         < url-pattern > *.action </ url-pattern >
13      </ servlet-mapping >
14     
15  </ web-app >

    为了使用WebWork的标签库,还需要给出一个告诉程序在哪里可以找到标签苦的配置,还是看代码吧(web.xml):

 1  < web-app >
 2      
 3     < taglib >
 4        < taglib-uri > webwork </ taglib-uri >
 5        < taglib-location >
 6          /WEB-INF/lib/webwork-2.1.7.jar
 7        </ taglib-location >
 8     </ taglib >
 9    
10  </ web-app >

    你是不是有点奇怪为什么taglib配置的是一个.jar而不是一个TLD文件,其实根据规范程序会自动到.jar中去找指定位置的TLD,我们暂且不管这个问题吧,先去看看WebWork自己的核心配置文件-xwork.xml吧。

    说明一下,因为WebWork是基于XWork这个这个子项目的,所以这个文件叫做xwork,不要被它弄迷糊了。我们先来对xwork.xml做一个最基本的配置,以后熟悉了再往里面加入自己的东西就很轻松了。(xwork.xml)

1  < xwork >
2       < include  file ="webwork-default.xml" >
3      
4       < package  name ="default"  extends ="webwork-default" >
5           < default-interceptor-ref  name ="completeStack" />
6       </ package >
7  </ xwork >

    我们暂时只用关注一个问题:xwork.xml中包含了一个名教webwork-default.xml的文件,这个文件已经包含在了webwork的.jar中了,它提供了让WebWork正常运行的标准配置,也提供了一些默认的处理方式。了解到这里已经足够了,我们继续往下走。

    下面在xwork.xml同一个目录下创建一个webwork.properties配置文件,它定义了一些告诉webwork如何工作的信息,暂时不用关注它,在里面加入一行内容:(webwork.properties)

1  webwork.tag.altSyntax  =  true

    到此,基本的骨架就搭成了,其实并不复杂。下面我们就开始进入真正与业务相关的内容吧。

二、你的第一个action

    我们现在假设HelloWorld的需求是这样的:当用户访问一个URL的时候(如http://localhost/helloworld.action  webwork默认的后缀是action,后面的笔记中你会了解到这个是可以修改的,比如换成现在比较流行的jspa),都会有一条HelloWorld问候语显示。从上面提到的webwork前端控制器的知识可以知道,URL请求会被映射到webwork中,所以我们要实现这个需求要做下面3件事情:
    (1) 创建一个action类(用来实现业务逻辑,并准备返回)
    (2) 创建一个result,这里是用JSP的形式,熟练后你可以灵活运用velocity、FreeMarker等
    (3) 配置action与result

   
    第一部创建action类:HelloWorld.java ,还是先看代码吧:

 1  package  example
 2 
 3  import  com.opensymphony.xwork.Action;
 4 
 5  public   class  HelloWorld  implements  Action{
 6       private  String message;
 7      
 8       public  String execute(){
 9          message  =   " Hello, World!\n " ;
10          message  +=   " The time is:\n " ;
11          message  +=  System.currentTimeMillis();
12           return  SUCCESS;
13      }
14      
15       public  String getMessage(){
16           return  message;
17      }
18  }

    注意你所编写的action类都必须实现定义了execute()方法的Action接口,而execute()就是在执行这个action的时候被WebWork调用的。

    在action中定义了message的getter方法,以便JSP标签取得message的值显示给客户端。

    最后execute()方法返回了SUCCESS(其实就是一个值为“success”的字符串常量),并且所有的WebWork的action都必须返回一个result code(一个说明执行结果的字符串)。它告诉WebWork现在的执行结果和下一步应该对应到哪个result,虽然result code不一定必须对应一个result但是通常都是。既然业务已经处理完了,下面就来创建一个JSP页面显示HelloWorld问候语。

 1  <% @ taglib prefix = " ww "  uri = " webwork "   %>
 2       < html >
 3           < head >
 4               < title > Hello Page </ title >
 5           </ head >
 6           < body >
 7          The message generated by my first action is:
 8           < ww:property  value ="message" />
 9           </ body >
10       </ html >
11 

    用过页面标签的朋友肯定对这种代码很熟悉了,即使你没用过也没关系,下面简单介绍一下。第一行标签库定义将前缀ww和URI webwork(这个webwork就是前面在web.xml中定义的URI)之间建立了映射关系。前缀ww指明了所有WebWork标签在使用的时候以“ww:”开头。property标签包含了一个value属性值,通过设置value值,标签可以从action中获得对应表达式的内容。因为在action中创建一个名为getMessage()的方法,value值为message的property标签就会得到getMessage()方法调用后的值。把上面的代码保存为hello.jsp,放在webApp目录下。

    配置你的action与result,已经创建了action类和视图,最后还需要将它们联系起来。你可以通过为action配置一个特别的URL,以及将SUCCESS这个result code映射到你刚才创建的JSP来完成这一步。当你配置一个WebWork action的时候,必须清楚下面3个方面:
    (1) action类的全名,包含完整的包名
    (2) 你打算将action存放于Web应用程序什么位置,即应用什么URL
    (3) action可能返回所有结果码


 1  < xwork >
 2       < include  file ="webwork-default.xml" >
 3      
 4       < package  name ="default"  extends ="webwork-default" >
 5           < default-interceptor-ref  name ="completeStack" />
 6          
 7           < action  name ="helloWorld"  class ="example.HelloWorld" >
 8               < result  name ="success" > hello.jsp </ result >
 9           </ action >
10       </ package >
11  </ xwork >

    到这个时候就已经差不多了,编译程序并发布在你喜欢的web容器中。启动服务器你就可以在浏览器中输入URL看看效果了,如http://localhost/helloWorld.action(如果端口为8080,还需要加上端口),这个时候你就会看到浏览器中显示了HelloWorld的信息。这并不是一个令人兴奋的网页,但是你至少开始使用WebWork了,这难道不令人激动吗?


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值