Thinking in sky

--老贺的BLOG

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  21 随笔 :: 0 文章 :: 35 评论 :: 0 Trackbacks

2007年5月11日 #

     摘要: 人生像个舞台,请良家少女离开。
同样的,Freemarker和Velocity爱好者请跳过本篇。与弃用webwork而单用Spring MVC Controller接口的理由一样,Freemarker本来是一样好东西,还跨界支持jsp 的taglib,而且得到了WebWork的全力支持,但为了它的非标准化,用户数量与IDE的缺乏,在View层我们还是使用了保守但人人会用,IDE友好的JSP2.0 配合JSTL。

对于B/S结构的企业应用软件来说,基本的页面不外两种,一种是填Form的,一种是DataGrid 数据列表管理的,再配合一些css, js, ajax的效果,就是View层要关注的东西了。
  阅读全文
posted @ 2007-08-24 10:50 老贺 阅读(658) | 评论 (2)编辑 收藏

     摘要: 目前的Web Application大多采用流行的基于B/S模式的三层架构开发,这里的三层架构指的就是Web层、业务层和数据访问层。采用分层的开发方式有很多好处,下面只简单地来说两点:

 1:分层开发使不同的开发人员关注他们擅长的特定层面,有助于开发优质的系统。因为很少有程序员可以精通从JS,CSS,DHTML到struts再到 hibernate直至最后的数据库设计这一整套开发流程所要使用到的所有技术。大家各司其职,全力关注自己擅长的层面,这要比一个人或一个小组负责某一模块从页面到最底层的开发方式要好的多。

 2:.分层分离了逻辑,使得系统结构层次明晰,系统变得灵活和易于维护。开发人员应该尽量使系统的各层之间保持相对独立的松耦合状态,这是实现分层的必要条件,也是构建良构系统的重要保证。

  阅读全文
posted @ 2007-08-24 10:37 老贺 阅读(2200) | 评论 (1)编辑 收藏

     摘要: Struts与Webwork的扇子请跳过本篇。

MVC不就是把M、V、C分开么?至唯物朴素的做法是两个JSP一个负责View,一个负责Controller,再加一个负责Model的Java Bean,已经可以工作得很好,那时候一切都很简单。
而现在为了一些不是本质的功能,冒出这么多非标准的Web框架,实在让人一阵郁闷。像Ruby On Rails那样简捷开发,可用可不用,而且没有太多的限制需要学习的,比如Webwork这型还可以考虑。但像Struts那样越用框架越麻烦,或者像Tapestry那样有严重自闭倾向,额上凿着"高手专用玩具"的,用在团队里就是不负责任的行为了。

  阅读全文
posted @ 2007-08-24 10:23 老贺 阅读(649) | 评论 (1)编辑 收藏

     摘要: 因为Spring自带的sample离我们的实际项目很远,所以官方一点的model层模式展现就靠Appfuse了。

但Appfuse的model层总共有一个DAO接口、一个DAOImpl类、一个Service接口、一个ServiceImpl类、一个DataObject.....大概只有受惯了虐待的人才会欣然接受吧。
另外,Domain-Driven逢初一、十五也会被拿出来讨论一遍。

其实无论什么模式,都不过是一种人为的划分、抽象和封装。只要在团队里理解一致,自我感觉优雅就行了。
我的建议是,一开始DO和Manager一生一旦包演全场,DO作为纯数据载体,而Manager类放置商业方法,用 getHibernateTemplate()直接访问数据库,不强制基于接口编程。当某天系统复杂到你直觉上需要将DAO层和Service层分开时,再分开就好了。
  阅读全文
posted @ 2007-08-24 09:58 老贺 阅读(614) | 评论 (3)编辑 收藏

     摘要: 人人都爱Spring加Hibernate。
但Spring MVC+hibernate的Sample如Appfuse的代码却算不得最简洁优美好读,如果在自己的项目中继续发挥我们最擅长的依样画葫芦大法,美好愿望未必会实现。
所以,Pramatic精神不灭。这个系列就是探寻最适合自己的Spring+Hibernate模式。

I-配置文件简化

我厌倦一切配置文件繁重的框架。
最好的情况是,框架提供极端灵活复杂的配置方式,但只在你需要的时候。

Spring提供了三种可能来简化XML。随着国内用户水平的提高,这些基本的简化技巧大家都已掌握。

  阅读全文
posted @ 2007-08-24 09:54 老贺 阅读(499) | 评论 (0)编辑 收藏

     摘要: 在初始化一个类,生成一个实例的时候,newInstance()方法和new关键字除了一个是方 法,一个是关键字外,最主要有什么区别?它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。那么为什么会有两种创建对象方 式?这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。   阅读全文
posted @ 2007-08-20 14:18 老贺 阅读(1831) | 评论 (1)编辑 收藏

     摘要: 全球IT实力排名,美国第1,日本第2,中国第46

从下几个方面来分析一下:

1、软件方面中国和日本其实没法比较,中国的盗版业足可以摧毁任何开发人员的信心,除非是非市贩领域的专业软件也许还有些市场。

2、至于硬件方面,同属于制造业,这是日本的强项,IBM昔日IT行业的一家垄断就是给日立、富士通、东芝等几家日本公司瓦解掉的。

3、人才方面,这一点是日本的真正劣势,和印度小学要求乘法表背到20乘20,中国小学的应试教育相比,日本小学和初中的数学教育很差,如果不上私塾的话可以说数学就是一塌糊涂,这导致日本理科人才的缺少,而且相对于中国的大学来说,开设计算机系的学校太少,这方面的专业人才不足,加上高龄少子化的社会问题,后续人才的培养基本上指望不上。日本的公司又是终生雇用制,大部分不愿意换工作,限制了人才的流动性。
东大,早稻田的毕业生大部分都进了日本的大公司,和所有行业一样,不管你多牛,新人工资20万日元左右。

  阅读全文
posted @ 2007-08-01 09:48 老贺 阅读(615) | 评论 (0)编辑 收藏

     摘要: 为了装wicket,必须先装WTP,只是没想到安装WTP这么麻烦,费了一番周折。

1. 下载EMF、GEF、JEM、WTP。
其中前面三个是安装WTP所必须要先装的,不然只装一个WTP是没有用的。这四个都可以在Eclipse的官网上找到。对应的版本关系如下:
eclipse 3.2:EMF 2.2、GEF 3.2、JEM 1.2、WTP 1.5
eclilpse 3.3:EMF 2.3、GEF 3.3、JEM 1.5、WTP 2.0

  阅读全文
posted @ 2007-07-20 12:35 老贺 阅读(7652) | 评论 (3)编辑 收藏

     摘要: 本文讨论的范围只包括采用 HTML Template 的显示层技术,不包括 Echo , GWT(google web toolkit) 等根据代码产生 HTML 的工具。

本文主要讨论 Server Side ( 针对 Java Language) 的显示层技术,然后进一步讨论 Browser Side ( Ajax )的显示层技术(一个典型的 Ajax 应用也分为 Model, View, Controller – Data, HTML/CSS, JavaScript )。注意,本文关于 Ajax 的讨论只有很少一部分,因为我不擅长这个领域。只是一个顺便的扩展比较。

一个很有趣的现象。 Server Side 和 Browser Side 的显示层技术格局恰好相反。 Server Side 的 Scripted Template 技术比较多,比较流行;而 Browser Side 的 HTML DOM Manipulation 技术、 HTML View Model 技术比较多,比较流行。

  阅读全文
posted @ 2007-07-18 18:05 老贺 阅读(780) | 评论 (1)编辑 收藏

     摘要: Dorado确实是很创意的产品,最近在边学边用,把一些心得记录下来以便以后好查。

1. 在客户端调用dataset1.flushData()时,会到服务端调用该ViewModel实现类的doLoadData(),如果doLoadData()方法里还有其它Dataset,如
Dataset dataset2 = getDataset("dataset2");
Dataset dataset3 = getDataset("dataset3");
…… 这个时候,就得不到除dataset1以外的任何dataset,也就是说dataset1和dataset2为null  阅读全文
posted @ 2007-05-16 09:35 老贺 阅读(1031) | 评论 (1)编辑 收藏

     摘要: 系统中需要一个方法,方法参数为任意对象,要求找到该对象的所有属性名和属性值,当然必须要用到反射了。查了会API,发现JAVA反射功能果然强大,一下就找到了需要的函数。  阅读全文
posted @ 2007-05-15 13:28 老贺 阅读(490) | 评论 (1)编辑 收藏

     摘要: 因为中毒,重装了系统和环境,导入项目后,所有使用泛型和ForEach的地方全部报错,晕了,重装系统前是好好的,JDK也是1.5版本,网上查了下,原来是Eclipse配置的问题,Preferences-->Java-->Compiler里,Compiler compliance level一项为1.4,改成5.0就对了。  阅读全文
posted @ 2007-05-15 13:13 老贺 阅读(375) | 评论 (0)编辑 收藏

     摘要: 但是这个时候,问题出来了,事务是针对 Connection 的,而上面的两个连续的 HibernateTemplate 执行的 saveOrUpdate 中的 Connection 必须是一致才能用事务, spring 怎么做到这一点的呢?(这个问题也就是在找 spring 的事务例子前,我想的 spring 中用 jdbc 来进行事务,怎么样让 Connection 保持一致呢?但是没有 jdbc 的例子,只有整合 hibernate 或者 ibatis 的例子,但是,我想,原理是一样的吧。)   阅读全文
posted @ 2007-05-11 17:42 老贺 阅读(396) | 评论 (0)编辑 收藏