选择显示字体大小

matrix java 大讲坛 - webwork 介绍

农民 - javen
  
  阿古主讲的 webwork 介绍 按时开始了!   大家欢迎 阿古!  
  
阿古
  
  感谢大家的支持哈
  
  今天简单介绍一些webwork2
  
阿古  19:50:28
  
  在一下的介绍中,我可能会为了方便把webwork2简写为ww2
  
阿古
  
  结构:
  
  1.  总体介绍
  
  2.  相关概念
  
  3.  核心
  
  4.  资源
  
阿古
  
  第一部分 :总体介绍
  
pull-based mvc模式j2ee web框架webwork目前最新版本是2.1.1,现在的webwork2.x前身是rickard oberg开发的webwork,但现在webwork已经被拆分成了xwork1和webwork2两个项目
  
农民 - javen  20:04:53
  
  可以随时提问吧?   “拉出式”这个说法的特别在哪里?  
  
阿古  19:50:44
  
current in 1.0.2
  
  
  
阿古  19:51:06
  
  可以,大家一起讨论嘛!
  
阿古  19:52:40
  
  ww2在执行action之后把结果放到堆栈中,所有的视图都是从堆栈中寻找action执行结果的值
  
  所以ww2能支持多种表现形式!比如:jasper report,xml等等
  
聊且一笑  19:53:55
  
  xwork完全脱离了web层,是说它不仅可以开发web程序吗?
  
阿古  19:55:18
  
  只需要很少的代码就可以把action执行的结果用不同的视图显示出来!
  
  比如:一个用于查询的action,查询的结果可以用pdf,xml,html等等格式表示,而只需作很小的改变
  
聊且一笑  19:55:49
  
  这样的特性,不错
  
snake eyes  19:56:11
  
  这个特性好,最好一会举个例子说明一下啊
  
阿古  19:56:16
  
  对的
  
  xwork是可以应用于桌面程序的开发的
  
  swingwork就是用于swing应用的
  
  它也是在xwork的基础上建立的
  
阿古  19:56:57
  
  好的
  
  这个在ww2的demo中就有
  
  一会儿我把demo挂到服务器上去
  
  让大家看看!
  
  
  
阿古  19:57:29
  
  这样的特性具有很大的灵活性和实用性
  
阿古  19:57:36
  
或对应action中的方法 。webwork2支持多视图表示,视图可以使用jsp, velocity, freemarker, jasperreports,xml等。2.2.1版本已经能支持基本的客户端校验。
  
  
  
阿古  19:58:02
  
  大家有什么问题随时可以提,大家一起讨论。:)
  
阿古  19:58:32
  
  第二部分 :相关概念
  
  1.  mvc
  
  
  
聊且一笑  20:00:15
  
  能不能说说webwork2与其它mvc框架的优劣?
  
农民 - javen  20:14:41
  
  webwork 相当于 struts 里 actionservlet 的功能?    xwork 主要做的什么事情?
  
农民 - javen  20:15:05
  
  聊且一笑:  你这个问题可能是最后吧, 做比较
  
阿古  20:01:02
  
  ww2跟stuts一样,也是建立在mvc基础上的
  
  ww2在views上作的比较多
  
  多种视图支持就是最好的证明
  
  而ww2对model基本没有限制
  
  但是ww2主要是工作在web层
  
  所以在ww2的action中最好不要包含业务逻辑
  
阿古  20:01:55
  
  下面我在核心部分会介绍xwork重要的作用
  
阿古  20:02:28
  
  2.       web framework
  
  
  
阿古  20:03:39
  
  现在,web framework就多了,struts就是现在流行之一
  
  
  
阿古  20:03:47
  
  第三部分:核心
  
  
  
阿古  20:06:02
  
  在将这部分之前
  
  先给大家看一个helloworld的事例
  
阿古  20:07:19
  
  请大家稍等
  
snake eyes  20:07:53
  
  不急  
  
阿古  20:08:09
  
  我的机器慢
  
  启动服务器慢  
  
阿古  20:10:19
  
  先把ww2的默认配置文件copy到位
  
阿古  20:11:52
  
  然后建一个类,继承actionsupport
  
  然后覆盖actionsupport类的execute方法
  
  在这个只需一条语句 return success;
  
  
  
郁也风  20:14:25
  
  来晚了:(
  
阿古  20:14:36
  
  public class helloworldaction extends actionsupport
  
  {
  

  
      {
  
"this is the action of hellworld!" ;      
  
          return success;
  
      }
  
  }
  
  
  
阿古  20:16:13
  
  这里的success是在xwork.xml中指定的一个位置或是一个动作
  
  <result name=&quot;success&quot; type=&quot;dispatcher&quot;>success.jsp</result>
  
  
  
阿古  20:17:29
  
  之所以要继承actionsupport类
  
  是因为它提供了其他的一些接口的实现
  
  使得可以在action中直接使用国际化的资源文件等其他支持
  
阿古  20:18:14
  
  1.  servletdispatcher
  
     servletdispatcher是默认的处理web http请求的调度器,是ww2的&rdquo;入口&rdquo;。
  
默认的是.action的后缀 的请求都对应到该调度的servlet中。servletdispatcher接受客户端的http请求,将http的相关参数封装后,再传给xwork。xwork解析xwork.xml(配置文件 并根据配置,创建对应的action,组装并调用相应的拦截器,执行action,返回执行结果。
  
  
  
聊且一笑  20:18:23
  
  这段与struts的差不多
  
阿古  20:19:03
  
  但是ww2的action是线程安全
  
  可以用自己的属性
  
  struts不能
  
聊且一笑  20:19:18
  
  哦
  
农民 - javen  20:33:44
  
  是啊。 感觉差不多。  不过没有传参数过来。    那我怎么样在 action 里处理 request 呢?  这是经常需要做的
  
无聊神灯  20:19:42
  
  打住一下,线程何为安全?何为不安全
  
聊且一笑  20:20:13
  
  它是不是每个请求创建一个action对象
  
dfdfswsw  20:20:19
  
  ww2还是不错的
  
阿古  20:20:32
  
  在action中定义属性之后
  
  action的属性跟表单中的input直接对应
  
  其中数据转换是由ognl完成的
  
农民 - javen  20:35:22
  
  action 中定义属性?  也就是相当于struts 里的 action + actionform 了。      
  
阿古  20:21:23
  
  ww2种action与threadlocal绑定
  
  所以是线程安全
  
  而struts的action不是现成安全
  
dfdfswsw  20:21:33
  
  不过有人推荐我用这个
  
  
  
  http://mav.sourceforge.net
  
  
  
  这个更轻量级
  
农民 - javen  20:36:23
  
  在 action 里我怎么样取到其他的 页面属性(没有放在action 属性之外的)?   还有, action 里出的结果,怎么样给到页面上去?   在 struts 里我们大多通过  request  
  
阿古  20:22:11
  
  在ww2种可以使用和struts完全一样的方式,建立formbean
  
  也可以不用那样
  
  非常灵活
  
  可以自己选则
  
阿古  20:23:26
  
  属性传递也是通过request传递的
  
  但是这个request不是servletrequest
  
  是个map
  
  在ww2中,session,request,application全部重新封装
  
  
  
snake eyes  20:23:34
  
  我有问题,比如一个查询操作,如何将得到的数据在页面上面显示出来??
  
snake eyes  20:24:02
  
  以前用servlet时用request等,用ww2时怎么封装这个?
  
阿古  20:24:05
  
  action执行的结果放到堆栈中的
  
  页面显示的时候直接到堆栈中去找
  
snake eyes  20:24:38
  
  放到堆栈中的操作是否在aceion中完成??
  
农民 - javen  20:39:04
  
  堆栈是怎么样的概念?   比如代码:   action 里得到一个 list ,怎么样放
  
snake eyes  20:25:07
  
  页面显示如何在堆栈中查找啊??
  
  最好给一个简单的action和页面的代码
  
阿古  20:25:25
  
  在开发中不需要关心她的实现方式
  
  他是用tag来显示结果的
  
dfdfswsw  20:25:37
  
  可以使用velocity
  
  
  
snake eyes  20:25:39
  
  好像提问的有点快了  
  
阿古  20:26:03
  
  先进后出的那个堆栈
  
  呵呵
  
dfdfswsw  20:26:24
  
  很简单
  
  比如在一个action里面
  
  list data
  
  
  
;(数据操作  
  
dfdfswsw  20:26:53
  
  在view的时候list就可以使用
  
  velocity的摸板显示了
  
dfdfswsw  20:27:11
  
  maverick 这个也是这样的
  
阿古  20:27:13
  
  如果有个list需要传到页面上去
  
;
  
  然后return success;
  
  在页面中直接用tag显示
  
阿古  20:27:23
  
  马上来个例子
  
snake eyes  20:27:29
  
    
  
农民 - javen  20:42:25
  
  啊。 不错,你只需要定义  list , 框架会帮你去找?    
  
聊且一笑  20:28:12
  
  这个list它是不是自动封装到request中了
  
聊且一笑  20:28:27
  
  这不错,省事
  
阿古  20:28:30
  
  对的
  
  list放在堆栈中了
  
  
  
阿古  20:29:13
  
  你不需要他是怎么实现的
  
  他会帮你全部搞定
  
  具体怎么实现的,可以看看代码
  
  他的堆栈结合了ognl
  
阿古  20:29:35
  
  <ww:iterator value=&quot;messages&quot;>
  
        <tr bgcolor=&quot;#f3f3f3&quot;>
  
                <td width=&quot;24&quot; height=&quot;23&quot; align=&quot;center&quot;></td>
  
                <td width=&quot;340&quot;><font color=&quot;#46a718&quot;><ww:property value = &quot;postdate&quot;/>
  
                </font>&nbsp; 作者:<font color=&quot;#46a718&quot;><ww:property value = &quot;author&quot;/></font></td>
  
         </tr>
  
         <tr>
  
                <td height=&quot;26&quot;> </td>
  
                <td width=&quot;423&quot; colspan=&quot;2&quot; style=&quot;word-break:break-all&quot;><ww:property value = &quot;content&quot;/></td>
  
         </tr>
  
  </ww:iterator>
  
snake eyes  20:29:36
  
  还有一个问题,传递参数的时候我能不能不在action中定义form的属性,而是直接建立一个map,然后将form作为map传递进去??
  
dfdfswsw  20:30:17
  
  我觉得还是velocity的语法简单点
  
阿古  20:30:21
  
  用tag iterator来显示你的list
  
  同时value就是定义在action中的list
  
阿古  20:31:01
  
  可以按照struts的方式
  
  建立一个formbean
  
  然后想怎么着就怎么着
  
农民 - javen  20:45:22
  
  可以不使用 tag iterator 吗?     他过来的应该是个 list 吧,我喜欢使用 jtsl 。  
  
dfdfswsw  20:31:08
  
$phone in $model.phonelist
  
  #end
  
dfdfswsw  20:31:37
  
  velocity好。。美工都基本上能理解
  
阿古  20:31:37
  
  完全可以
  
  
  
农民 - javen  20:45:53
  
  jstl 也是这样的。   现在代码里,我基本上用 jstl 的标签了
  
阿古  20:32:13
  
  继续哈
  
阿古  20:32:25
  
  1.  action
  
中。但是如果不放在execute中,须在xwork.xml中指定客户端请求对应的方法。
  
  
  
农民 - javen  20:46:55
  
  上面说的是 list 。   在 action 里的任何变量 , 是不是都可以直接在 页面上取得了?    
  
阿古  20:32:51
  
  可以得
  
  
  
阿古  20:33:35
  
  这是一个action定义的例子
  
   <action name=&quot;login&quot; class=&quot;loginaction&quot;>
  
              <result name=&quot;input&quot; type=&quot;redirect&quot;>/login.jsp</result>
  
              <result name=&quot;success&quot; type=&quot;chain&quot;>usergrouplist</result>
  
              <interceptor-ref name=&quot;defaultstack&quot;/>
  
          </action>
  
无聊神灯  20:34:03
  
  呵呵。ww2使用了拦截器吧?
  
阿古  20:34:09
  
  上面那个class要指定类的具体位置
  
阿古  20:34:22
  
  当然
  
  1.  interceptor
  
日志拦截器 。所有xwork提供的interceptor都在webwork-default中有定义。
  
  
  
农民 - javen  20:48:48
  
  <interceptor-ref name=&quot;defaultstack&quot;/>   这个 拦截器 的功能就是堆栈了。    
  
阿古  20:35:16
  
  这个是ww2的拦截器的默认定义
  
  <interceptor name=&quot;logger&quot; class=&quot;com.opensymphony.xwork.interceptor.logginginterceptor&quot;/>
  
阿古  20:36:47
  
  1.  validator
  
       xwork的核心部分之一。它主要完成参数的动态校验。主要包括参数的类型和范围等的验证。在当前版本中ww2利用validator已经支持服务器端和客户端的自动校验
  
  
  
阿古  20:37:29
  
  1.  ioc容易支持
  
       ww2提供了ioc容器。在ww2中实现ioc需要增加一个接口,接口中只需定义一个setter,然后在需要注入的action的类中实现该接口。最后在component.xml中定义就可以灵活应用ww2的ioc支持了。如果ww2与spring集成,可以选择使用spring作为ioc容器。前者比较灵活,但是要多一个接口。
  
  
  
阿古  20:37:47
  
  打错了
  
  上面那个是容器
  
阿古  20:38:08
  
  我靠
  
  怎么编号全部变成1了
  
阿古  20:38:37
  
  word害死我了   
  
农民 - javen  20:53:02
  
  struts action 里,问题在于传了那么多的参数过来。    在 ww2 里,不传参数过来了,实际上是他自己定义了个  堆栈实现, 来代替了 request 的传递。
  
  疑问:   页面上,除了 action 里定义的属性之外的属性,怎么样取得?     有时, action 里需要操作到 response (在struts 里), xwork action 里怎么样实现?
  
阿古  20:40:01
  
  在action中直接取得request,然后
  
  跟servletrequest的做法是一样的
  
农民 - javen  20:55:02
  
  晕,在 xwork action 也可以直接取得 request ?    
  
  
  
  response 也是一样?  
  
  
  
  
  
阿古  20:41:17
  
  你取得的request是封装过的
  
  是个map
  
  不是servletrequest
  
snake eyes  20:41:43
  
  这个,最好还是代码说明吧
  
阿古  20:41:52
  
  不过如果你愿意也可以取得servletrequest
  
  但是不推荐那么做
  
  
  
  wait
  
airland  20:41:59
  
  包括session,request,response?还有其他的么?
  
  
  
dfdfswsw  20:43:01
  
  就是reqeust <->map-<->action-<->view
  
  
  
  基本上它自动把reqeust里面的东西
  
  变成string,int,boolean 就是action里面的
  
  formbean或者action自己的setxxx,getxxx变量
  
阿古  20:43:02
  
  actioncontext  ac;
  
.put (user_key, user ;
  
阿古  20:44:03
  
  request,application做法类似
  
  
  
阿古  20:44:36
  
  我做了个demo可以给大家看看
  
dfdfswsw  20:44:36
  
  如果访问reqeust还有简单的方法
  
  
  
  public class userregistration extends actionsupport implements servletrequestaware
  
dfdfswsw  20:44:53
  
  就有一个自动的
  
  // public --------------------------------------------------------
  
httpservletrequest request  {
  
        this.req = request;
  
     }
  
dfdfswsw  20:45:03
  
  你就获得了req做什么操作都可以的
  
农民 - javen  20:59:43
  
  哦。 这又是 ioc 了。  
  
dfdfswsw  20:45:33
  
  实现一个或者几个接口
  
  servletrequestaware, sessionaware
  
阿古  20:46:21
  
  7.  执行流程
  
1 取得请求的action的名称和所在namespace的名称;(2 创建contextmap,将客户端请求的相关参数全部封装并放到map对象中;(3  根据前面获得的namespace等参数创建一个actonproxy;
  
4  执行proxy的execute( 方法,这个方法最核心的语句是:retcode = invocation.invoke( ;  invocation对象的invoke( 方法它遍历并执行这个action对应的所有拦截器,执行action对应的方法(默认的是execute( ),根据action执行返回的值去调用执行相应的result(返回结果处理)的方法。
  
农民 - javen  21:00:51
  
  上面阿古说的  actioncontext 实际上,实际上对 request 等 servlet 对象做了些包装了。    s
  
  
  
  dfdf 说的这种应该是 ioc 容器的概念了。  
  
阿古  20:47:04
  
  对的
  
农民 - javen  21:02:26
  
  这个 proxy 我一直没有太理解。   总之好像又是 动态代理 来实现类似于  aop 的功能 。  spring 就是用动态代理实现 aop 的
  
阿古  20:49:13
  
  spring的代码还没有研究过
  
  我也不是很明确
  
  还待各位给指点一下 
  
农民 - javen  21:03:31
  
  对于 html form 数据, struts 也出现了这种新的作法,即都放到 map 里
  
dfdfswsw  20:49:26
  
方法,这个方法最核心的语句是:retcode = invocation.invoke(  
  
  
  
  这个?。。就是
  
  
  
  把xxx方法映射为doxxx方法
  
dfdfswsw  20:49:42
  
  看看他的源代码
  
dfdfswsw  20:49:49
  
  /**
  
      * invokes an alternate execution path for the action. the name of the action
  
      * is derived by prepending a &quot;do&quot; and capitalizing the first letter of the
  
      * action.
  
      *
  
      */
  
  throws exception
  
     {
  
&quot;do&quot; ;
  
command ;
  
2, character.touppercase(sb.charat(2   ;
  
        
  
dfdfswsw  20:49:55
  
  try
  
        {
  
.getmethod(cmd, new class[0] ;
  
nosuchmethodexception e
  
        {
  
&quot;no command '&quot; + command + &quot;' in action&quot; ;
  
        }
  
        try
  
        {
  
string  method.invoke(this, new object[0] ;
  
invocationtargetexception e
  
        {
  
           /**
  
            * we try to return  
  
dfdfswsw  20:50:24
  
  有点长。。。
  
dfdfswsw  20:52:03
  
   我掉了?。。
  
  
  
阿古  20:52:21
  
  本来应该有ww2的一系列资源介绍的
  
  但是准备不太充分
  
  只能给一部分了
  
airland  20:52:50
  
  有没有现成的例子啊?
  
dfdfswsw  20:52:52
  
  我最喜欢的就是动态方法调用虽然很简单
  
  不过很实用,尤其是在框架编写中间
  
阿古  20:53:15
  
  有
  
  马上就房山来
  
阿古  20:54:52
  
  这个是wiki
  
  主要的文档都在这儿
  
  http://wiki.opensymphony.com/display/ww/webwork
  
  
  
  中文文档比较少
  
阿古  20:56:28
  
  有个中文文档我会传给农民
  
  大家可以去看看
  
  
  
magicgod  20:56:40
  
  session也是一个map吗?
  
阿古  20:56:59
  
  也是
  
magicgod  20:57:43
  
  看来只是简单包装,没有 面向对象
  
char  20:58:14
  
    request和sessoin里面都包含了一个map对象.
  
magicgod  20:59:00
  
  应该直接引用业务对象,而不是通用对象
  
阿古  20:59:24
  
  怎么做?
  
农民 - javen  21:13:46
  
  但 request / session 这样的东西, 一般也就直接使用了。  能包装成怎么样啊?  
  
magicgod  20:59:48
  
  考虑一个最普通的购物系统
  
magicgod  21:00:05
  
  那么其实session就是一个visitor,可以叫访问者
  
dfdfswsw  21:00:08
  
  其实我觉得ww2或者maverick 主要就是
  
  
  
  提供高效的mvc模式
  
  
  
  一般不直接使用req,resp
  
阿古  21:00:21
  
   a simple implementation of the {@link java.util.map} interface to handle a collection of http session
  
} method enumerates over all session attributes and creates a set of entries.
  
   note, this will occur lazily - only when the entry set is asked for.
  
magicgod  21:00:48
  
  每个访问者都应该有name,id,productlist等属性
  
magicgod  21:00:59
  
.getname(  
  
阿古  21:01:04
  
  但是那样做得太死了
  
magicgod  21:01:25
  
string getsession( .get(user_name  
  
农民 - javen  21:16:01
  
  哈哈, magicgod 一说就会说到 tapestry 上去。  
  
magicgod  21:01:50
  
.getname( 这才是面向对象
  
dfdfswsw  21:01:56
  
  为什么要这样访问?
  
阿古  21:02:04
  
  你可以把
  
string getsession( .get(user_name 封装到一个类中
  
dfdfswsw  21:02:12
  
  不能直接一个visit放入一个session里面
  
magicgod  21:02:18
  
  因为我们做程序做久了都认为map之类的对象很自然
  
dfdfswsw  21:02:21
  
  为什么不能直接一个visit放入一个session里面
  
阿古  21:02:41
  
  难道map很不自然?
  
magicgod  21:02:50
  
  其实不对,我觉得map是一种很抽象的虚类,在现实生活中好象不存在
  
magicgod  21:03:23
  
  计算机本身是没有价值的,我还是这样认为,只有转化为应用的时候才有巨大价值
  
char  21:03:24
  
  session包含的是hashmap对象,当然map里面是可以放对象的,而不只是一个字符串.
  
magicgod  21:03:41
  
  当然可以,session本来就是设计为通用的
  
dfdfswsw  21:03:51
  
  map本来就是抽象把。。下面一般都是具体的
  
  hashtable
  
阿古  21:03:59
  
  今天就到这儿了哈
  
  大家继续讨论
  
  呵呵
  
magicgod  21:04:03
  
  只不过不要忘了,所有的应用系统应该设计为不通用的,有限制的,专注的
  
magicgod  21:04:21
  
  hashtable我也不觉得现实中有存在
  
dfdfswsw  21:04:30
  
string getsession( .get(user_name ?
  
  
  
  而不能
  
visti map.get(&quot;key&quot;  
  
阿古  21:04:30
  
  讲的不好
  
  见谅哈
  
  有什么问题
  
  可以qq联系或是我的mail
  
  feng-zhou@163.net
  
char  21:04:48
  
  magicgod的答案在项目中很有用
  
magicgod  21:04:03
  
  只不过不要忘了,所有的应用系统应该设计为不通用的,有限制的,专注的  
  
magicgod  21:04:52
  
  软件应该从用户角度去看,根本没有客户会搞清楚map这样的
  
char  21:05:11
  
  阿古,不是吧,我刚回来,你就说讲完啦...
  
magicgod  21:05:15
  
visti map.get(&quot;key&quot; 为什么不直接变成 getvisit(  
  
农民 - javen  21:19:32
  
  感谢 阿古!   让我们了解了 webwork  
  
阿古  21:05:38
  
  本来周4讲的
  
  准备不充分
  
  
  
  抱歉抱歉
  
郁也风  21:05:43
  
  那就要求客户再次封装了
  
dfdfswsw  21:05:46
  
visti map.get(&quot;key&quot; 为什么不直接变成
  
  你可以实现这个方法
  
  
  
  return 一个visit不就行了?
  
  
  
  
  
magicgod  21:05:47
  
  我觉得框架更应该取悦于客户,而不是开发者
  
char  21:05:59
  
  哦,谢谢,阿古,周四再讲一次.
  
dfdfswsw  21:06:11
  
visti map.get(&quot;key&quot;  并不代表
  
方法
  
magicgod  21:06:15
  
  当然自己实现和框架实现是两回事
  
dfdfswsw  21:06:20
  
  只是封装的程度而已
  
阿古  21:06:21
  
  啊?
  
  课有点多!:)
  
magicgod  21:06:35
  
  就好象现在有很多人只写虚方法一样,更清晰
  
char  21:06:44
  
  session没有必要写成visitor,
  
郁也风  21:06:48
  
  其实我觉得框架封装倒这种程度已经很好了,给我们留有较大的余地
  
dfdfswsw  21:06:46
  
  严格的来说软件和现实永远不可能达到真实的映射
  
magicgod  21:07:16
  
  软件现在 遇到的问题是更难维护,更庞大,而不是缺少技巧
  
magicgod  21:07:34
  
  开发应该从如何适应客户需求角度从而得到生存
  
char  21:07:39
  
  如果是想外加方法,应该用filter,
  
  但是session的作用不仅仅像visitor的外加方法...
  
snake eyes  21:08:05
  
  嘻嘻,感谢  
  
dfdfswsw  21:08:07
  
  我觉得那个只是封装的度而已
  
  
  
magicgod  21:08:10
  
  当然象doomiii这样纯技术型游戏也存在,象cs这样技术落后,但依然流行的游戏也存在,世界总是多元的
  
magicgod  21:08:29
  
  也可以说封装的度
  
char  21:08:32
  
  讲解一下区别呀...
  
magicgod  21:08:10
  
  当然象doomiii这样纯技术型游戏也存在,象cs这样技术落后,但依然流行的游戏也存在,世界总是多元的  
  
阿古  21:08:34
  
  cs的技术好像不是很落后噢
  
magicgod  21:08:39
  
  这就是面向对象所要求的
  
magicgod  21:08:45
  
  封装
  
snake eyes  21:08:53
  
  和doom比起来落后多了
  
阿古  21:09:04
  
  cs打了多年了
  
magicgod  21:09:24
  
  以对象为核心,你专注的对象,业务系统专注于业务而非map,list之类
  
dfdfswsw  21:09:32
  
  封装的度同样存在问题。
  
  高度的掩盖。和底层的思考
  
snake eyes  21:09:48
  
  cs用的还是q2 的引擎,而doom超越q3很多了
  
magicgod  21:10:07
  
  软件肯定会分化为两个极端,技术极端和应用极端
  
郁也风  21:10:10
  
  两个天才的john
  
char  21:10:23
  
  阿古...
  
char  21:10:28
  
    
  
阿古  21:10:31
  
  what?
  
char  21:10:33
  
  webwork  demo
  
dfdfswsw  21:10:38
  
  本来也没有建议在ww2或者mav这样框架立面
  
  里面直接使用req,session
  
  等对象
  
  更不应该往用户的session里面放n个string字段
  
阿古  21:10:42
  
  等一下
  
  我看不到图
  
magicgod  21:10:43
  
  一批人以技术为核心,一批人以业务应用为核心,就象手工艺人和工厂一样
  
char  21:10:46
  
  你知道我在说什么吧....
  
char  21:10:55
  
  车.....
  
阿古  21:11:02
  
  车???
  
dfdfswsw  21:11:05
  
  一个最简单的也是最复杂的对象就可能是一个
  
  bean.
  
  
  
char  21:11:22
  
  jasper reports demos
  
  
  
  jasper reports pdf example
  
  jasper reports html example
  
  jasper reports xml example
  
  jasper reports csv example
  
  
  
char  21:11:26
  
  阿古....
  
char  21:11:42
  
  阿古....  
  
char  21:11:56
  
  阿古...
  
阿古  21:12:01
  
  在webwork自带的demo就有
  
  我开了你们开起来太慢
  
  你取下载一个就可以看到
  
阿古  21:12:14
  
  要不
  
  我勉强使一下
  
char  21:12:18
  
  我已经建好了demo  
  
char  21:12:26
  
  不过,有个地方运行不了...
  
阿古  21:12:34
  
  是不是新版本的?
  
char  21:12:40
  
    
  
char  21:12:49
  
  这几天下载的..
  
阿古  21:13:00
  
  我看不到图
  
  
  
dfdfswsw  21:13:02
  
  有空大家可以去看看
  
  http://mav.sourceforge.net
  
  
  
  和ww2相比更轻量。^^;
  
  
  
阿古  21:13:29
  
  有空去看看
  
dfdfswsw  21:13:59
  
  自己打算参考ww2和mav写一个简单的框架
  
阿古  21:14:13
  
  呵呵
  
  期待
  
dfdfswsw  21:14:51
  
多action叠加
  
  
  
  
  
dfdfswsw  21:15:12
  
   在这个群里面我是才鸟。
  
  
  
magicgod  21:15:20
  
  我现在在做的一个电子表单系统就是专注于人工信息采集的自动代码生成系统
  
char  21:15:32
  
  郁也风,阿古
  
  是不是可以webwork+flex?
  
阿古  21:15:37
  
  dfdfswsw
  
  给江一下动态代理码
  
magicgod  21:15:47
  
  打算把所有的人工信息采集表单全部一网打尽
  
阿古  21:16:02
  
  正在研究
  
  看看能不能像jasperreport那样容易
  
magicgod  21:16:06
  
  以后再也不用编写输入表单之类的东西
  
dfdfswsw  21:16:08
  
  其实我那个应该叫动态方法调用
  
char  21:16:06
  
  dfdfswsw,是讲师,不用谦虚...大家都知道
  
dfdfswsw  21:16:15
  
   老了
  
base  21:16:21
  
    
  
char  21:16:38
  
  阿古,你的服务器开了瓵?
  
magicgod  21:16:43
  
  估计一年左右,市场上到处都是这种产品,程序员在逐步退化了
  
阿古  21:17:13
  
  等一下嘛
  
  :)
  
char  21:17:22
  
  mav,demo哪里有?
  
char  21:17:42
  
  ???什么产品...
  
magicgod  21:16:43
  
  估计一年左右,市场上到处都是这种产品,程序员在逐步退化了  
  
郁也风  21:18:10
  
  magicgod的那个东东可否给看看?
  
magicgod  21:18:20
  
  表单系统
  
char  21:18:29
  
char  21:28:56
  
  郁也风,阿古
  
  是不是可以webwork+flex?  
  
magicgod  21:18:33
  
  做完了马上开源
  
郁也风  21:18:46
  
  hoho,好啊:)
  
char  21:18:46
  
  表单系统 ?
  
char  21:19:01
  
  什么表单系统,
  
  jasperreport?
  
dfdfswsw  21:19:11
  
  比如我想的就是a.action?action=xxx
  
  或者其他的参数输入action之后
  
  这个xxx参数最后就变成了doxxx方法
  
  就是一个类拥有n个doxxx方法
  
  有程序动态调用这些方法。。
  
  
  
dfdfswsw  21:19:35
  
  其实就是抄袭的ww2...不要bs..>.<
  
  
  
  
  
郁也风  21:19:40
  
  好像可以,char,flex里面使用httprequest,和webservice来与后台交互的,前者就是平常的request,估计可以结合
  
阿古  21:19:43
  
  呵呵
  
土豆仙  21:19:45
  
  yeah,几天盖上了..
  
dfdfswsw  21:19:45
  
  然后把它简单化
  
土豆仙  21:19:55
  
  今天赶上了..
  
郁也风  21:20:17
  
  df的那个好像类似于struts的那个啊
  
dfdfswsw  21:20:17
  
  flex.war据说可以在resin下面直接运行。
  
  
  
  那应该比较简单的
  
阿古  21:20:28
  
  可以得
  
  我试过了



注: 请访问 matrix 专题 - java 高手营地专题讲座 下载讲座实录与以及演示程序、其他相关资料。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons