webwork之起步篇

       不知道为什么感觉struts越发的让我感觉不爽,在没有任何准备的条件下,说放弃也是不可能的,但认识一些新的东西总不是一件错误的事情,处于这种目的,决定系统的了解一下webword,如果说没有选择struts2的原因,个人比较卤莽的认为它和webwork没有质的区别…………,好了废话少说,开始第一课(这里就不再细说如何配置和编译webwork的文件了,因为关于ClassNotFoundException之类的异常一般都是没有引入需要的.jar所引起的,参考log信息提示应该可以一一划解)。
       一个典型的使用webwork的web应用也同样具有java的web的目录结构,如果容器选择的是tomcat的话,目录大概应该是如下的一种情况:
mywebwork:
       |---WEB-INF
       |-------|--classes    (foder)
       |-------|--lib              (foder)
       |-------|--tld              (foder)
       |-------|--web.xml   (file)

在classes中应该存在的有文件:xwork.xml,webwork-default.xml,如果需要webwork的验证的话请加入validators.xml;经过如此的处理,撇开需要的.jar文件之外,配置文件也就差不多了。这里引用一下xwork.xml的内容来做一些简单的说明:

  1. >  
  2.   
  3. <xwork>  
  4.     <include file="webwork-default.xml">include>  
  5.     <package name="default" extends="webwork-default">  
  6.     package>  
  7.     <include file="com/xwork-register.xml">include>  
  8. xwork>  

这个配置文件个人认为完成的任务类似于struts中关于action的那些处理:注意到其中的<include file="…………"></include>,这是一个不错的特点,我们可以为action单独配置,然后使用它把其集中在一起。xwork-register.xml的内容为:

  1. >  
  2.   
  3. <xwork>  
  4.     <package name="register" extends="default" namespace="/register">  
  5.         <action name="register" class="com.RegisterAction" >  
  6.             <result name="success" type="dispatcher">/register/b.jspresult>  
  7.             <interceptor-ref name="params"/>  
  8.             <interceptor-ref name="timer"/>  
  9.             <interceptor-ref name="token-session">  
  10.         action>  
  11.     package>  
  12. xwork>  

这里分析一下使用xwork-register.xml的如何把视图中的数据从a.jsp---action----b.sjp中进行传递:
在a.jsp中处理为:

  1. <%@page contentType="text/html;charset=GBK"%>  
  2. <%@taglib prefix="ww" uri="/webwork"%>  
  3. <h1>用户注册h1>  
  4. <form name="register" action="register.action" method="POST">  
  5.     <table border="0">  
  6.         <tr><td>姓名:td><td><input name="user.name">td>tr>  
  7.         <tr><td>出生日期:td><td><input name="user.birthday">td>tr>  
  8.     table>  
  9.     <input type="submit" name="注册">  
  10. form>  

这里我最欣赏的地方就是直接使用pojo对象User:如姓名:user.name,在struts中无奈的处理方法就是定义一个Form表单,如果表单的field超过了20个,我就会觉得不可接受(可能有些人会在100个的时候还镇定自如)。
       注意到xwork-register.xml中定义的
          < package name="register" extends="default" namespace="/register">
这也是处理命名空间的不错的选择,把类似的功能文件放置在同一个地方以方便管理,同时避免名称上的冲突,这也是struts1中不爽的地方。这里的name属性的取值可以是任意的,namespace说白了就是一个文件夹。接下来看以下在struts1中关于action的配置在webwork中一种怎样的情况:<interceptor-ref name="token-session"></interceptor-ref>这里我们配置了一个action,name类似于struts1中的path,class类似于type,子元素

  1. <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">  
  2.   
  3. <xwork>  
  4.     <package name="register" extends="default" namespace="/register">  
  5.         <action name="register" class="com.skyon.demo.register.RegisterAction" >  
  6.             <result name="success" type="dispatcher">/register/b.jsp</result>  
  7.             <interceptor-ref name="params"/>  
  8.             <interceptor-ref name="timer"/>  
  9.             <interceptor-ref name="token-session"/>  
  10.         </action>  
  11.     </package>  
  12. </xwork>  


  1. package com;   
  2.   
  3. import com.opensymphony.xwork.Action;   
  4. import com.opensymphony.xwork.ActionContext;   
  5. public class RegisterAction implements Action{   
  6.     private User user = new User();   
  7.     public String execute() throws Exception {   
  8.         System.out.println("Success!"+user);   
  9.         //这里是如何得到a.jsp中表单数据的地方,webword没有依靠request,这也是其和   
  10.         //struts1的不同的地方,非常的不错哦……   
  11.         String names[] = (String[])(ActionContext.getContext().getParameters().get("user.name"));   
  12.         System.out.println("-----------"+names[0]);   
  13.            
  14.         System.out.println("-----------"+ActionContext.getContext().getSession().get("userName"));   
  15.         //执行业务逻辑   
  16.         return SUCCESS;   
  17.     }   
  18.        
  19.     public User getUser() {   
  20.         return user;   
  21.     }   
  22. }   
      在action中我们使用ActionContext.getContext().getParameters().get("user.name");来得到表单的数据。然后做合适的business处理之后,return SUCCESS.注意这里并没有使用类似于request.setAttribute处理,那么我们怎么在b.jsp中得到刚才注册的内容呢,它处理的就是这么吊,反正我也懒得写,只要能做到为什么不用呢。这也是webwork比较神奇的吸引我的地方哦……,下面看b.jsp的内容:
  1. <%@page contentType="text/html;charset=GBK"%>  
  2. <%@taglib prefix="ww" uri="webwork"%>  
  3. <h1>注册成功h1>  
  4.     <table border="0">  
  5.         <tr><td>姓名:td><td><ww:property value="user.name"/>td>tr>  
  6.         <tr><td>年龄:td><td><ww:property value="user.age"/>td>tr>  
  7.         <tr><td>出生日期:td><td><ww:property value="user.birthday"/>td>tr>  
  8. table>  
          b.jsp就是这样的明了,可以动手尝试一下,注册的内容真的经过action传递了过来,这就是webwork展现的处理流程,比起使用struts1的处理,这里真的就是一个爽字哦。那么表单的内容是怎么过来的呢,应该是
    < interceptor-ref   name = "params" />  做了相应的处理了,好了,起步工作就到此结束了,日后再谈
    <interceptor-ref name="timer"></interceptor-ref>
   <interceptor-ref name="token-session"></interceptor-ref>
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值