Tin's Blog

You are coming a long way, baby~Thinking, feeling, memory...

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

03 2006 档案

     摘要: 为我们的项目写的一个轻量的分页API。目的在于将分页与数据查询的逻辑完全剥离。我以前看过robbin发的通过detachedCriteria实现的分页那片贴子,里面把分页和数据查询结合在一起了。而我觉得分开更轻量,而且替换也比较容易。但是这个实现中有一个反模式,在逻辑中生成了代码,无奈之选,为了简便。其中字符生成可以自己扩展i18n实现,应该非常容易。
分页实现的接口:  阅读全文
posted @ 2006-03-31 12:30 Tin 阅读(3460) | 评论 (6)  编辑

     摘要: 使用jakarta commons-upload。
升级到2.2.2后发现上传中文会乱码。
经过跟踪发现在com.opensymphony.webwork.dispatcher.DispatcherUtils的prepare(HttpServletRequest request, HttpServletResponse response)方法。
2.2.1->2.2.2时这个方法发生了非常的的变化。
2.2.1时:
public void prepare(HttpServletRequest request, HttpServletResponse response) {
if (encoding != null) {
try {
request.setCharacterEncoding(encoding);
} catch (Exception e) {
LO  阅读全文
posted @ 2006-03-30 21:40 Tin 阅读(3944) | 评论 (11)  编辑

     摘要: 这是一篇很有趣的文档,所以摘要一下,其实类似阅读笔记,好像是3/25发布的:
这时基于对以下人的采访:
JSF Jacob Hookom
RIFE Geert Bevin
Seam Gavin King
Spring MVC Rob Harrop
Spring Web Flow Rob Harrop and Keith Donald
Stripes Tim Fennell
Struts Action 1 Don Brown
Tapestry Howard Lewis Ship
Trails Chris Nelson
WebWork Patrick Lightbody
Wicket Eelco Hillenius
里面问了每个框架的人6个相同的问题,很好的体现了各个Web框架的不同之处。如果配合Rod Johnson的J2EE Development Without EJB等书中对Web MVC的阐述会更加深刻的理解各种框架的思想和使用场合。我阅读后很有收获,所以将全文摘  阅读全文
posted @ 2006-03-30 16:28 Tin 阅读(3185) | 评论 (0)  编辑

     摘要: 今天浏览WW的Wiki,结果无意发现ww:date标签的用法,挠头一想以前没有见过呀,仔细一看原来是2006/3/21才加上的。
会头看看项目发现用的ww 2.2.1中没有这个标签,心想是不是发布新版本了?
果不出所料!发现OPENSYMPHONY已经发布2.2.2了。
不过2.2.2是在Opensymphony下的最后一个版本了,以后的版本就会以Struts Action 2.0的形式发布了,而后者今年8月才发布,中间的日子估计只能靠nightly build了。
说说变化,发现增加了RichTextEditor,经考察就是我们熟悉的FCK Editor。发现还增加了nifty corners,这是一个不用images的圆角容器(css+js),估计用在了某个theme里面。还有J2SE5的支持也更加完善,现在已经可以支持泛型Collection的反射(无需-conversion文件了),还支持annotation风格的validation声名(如此像Stripes那样的Web框架就没什么可吹嘘的了)。其它的变化请参考他们的ReleaseNotes。   阅读全文
posted @ 2006-03-28 20:00 Tin 阅读(2546) | 评论 (3)  编辑

     摘要: BJUG的Cleverpig说起Stripes,正好前两天在TSS上看到Simon Brown的Blog,对它有点感性认识,所以今天就看了一下,说些粗陋的感受:
皮毛上的观感:
1、使用Annotation配置。将Action影射、返回View、默认Command注册、是否验证这些东西都通过Annotations搞,挺有意思。
2、它也包装了自己的Tag,Tag从感官上感觉很像WebWork的风格(估计Stripes也是过这个来实现bind,和Spring MVC相同吧,不过没仔细看Stripes的bind方式)。但是它好像很方便与JSTL共用,所以我觉得它可能和Spring MVC类似,把变量拷贝到request里面,而不是WebWork那样的VlueStack。
3、它的Validation很Cool,用Annotation设定Validation相当舒适。
4、它里面的event似乎挺有意思,也就是说一个Action可以对应多个method,它管它叫Event。现在WebWokr和Spring MVC对这都有支持,但是Annotation带  阅读全文
posted @ 2006-03-22 21:36 Tin 阅读(1429) | 评论 (0)  编辑

     摘要: 遇到了一个奇怪的“浏览器兼容问题”……
是这样的,登陆页面工作不正常,在firefox下总是没有登陆,根本就没有触发webwork的filter dispatcher。
打开我的三剑客:IE、Firefox、Opera测试,发现只有Firefox不行(Mozzila内核的都不行)。
然后花了3个多小时找原因,翻遍网络:weblogic、webwork、fireforx所有关键词都搜索了,没有收获。
然后开始sniffer,看报文。
经过多次分析,发现firefox根本就没有post那个form!
然后又是继续的分析还是无果,一筹莫展……  阅读全文
posted @ 2006-03-14 21:12 Tin 阅读(515) | 评论 (2)  编辑

     摘要: Webwork是标准的请求风格Web MVC,类似的有Struts、Spring MVC。这这种风格的MVC中都使用了前端控制器模式(企业架构模式),也就是说一个URL会被解析然后派发到对应的Action解析,而View调用的是Action处理后的Form对象或者Command对象(Rod的Without EJB)。
上面引用了一些经典的言论,而它们和“页面控制器风格Action复用”有什么关系呢?
嘿嘿,页面控制器在这里指到了View的Page里面依然可以调用控制器(在Webwork中就是Action)。如果是以前肯定有人会说,如果用JSP我随时可以在Page里面写scriptlet,什么东西都能调用……
可是,现在不一样了。我们希望让View单纯一点,不要有杂乱无章的逻辑参与其中。
可是,如果要是如上面所说那么Action在它的一个请求生命周期就要做所有的事……这样一是使Action逻辑变得复杂,二是会变得难以复用。
所以,说到这里就引出了这个主题:
1、在页面调用控制器
2、复用控制器逻辑  阅读全文
posted @ 2006-03-10 14:45 Tin 阅读(2572) | 评论 (4)  编辑

     摘要: 根据生日计算年龄可以通过Calendar实现。最简单可以考虑get(Calendar.DAY_OF_YEAR)来简单修正年龄,但是遇到生日在闰年的2月29之后,或者今年是闰年的2月29之后可能出现计算不准,误差一天。所以还是老实判断年月日好了。
public static int getAge(Date birthDay) throws Exception {
Calendar cal = Calendar.getInstance();

if (cal.before(birthDay)) {
throw new IllegalArgumentException(
"The birthDay is before Now.It's unbelievable!");
}

int yearNow = cal.get(Calendar.YEAR);
int monthNow =   阅读全文
posted @ 2006-03-10 10:00 Tin 阅读(2600) | 评论 (0)  编辑

     摘要: Hibernate的透明持久化用起来非常舒服,有时甚至忘记了数据库的存在。我身边的朋友经常会分不清save、saveOrUpdate、update的区别,lock、merge、replicate、refresh、evict甚至不知道是干什么用的。而且关于实体对象的生命周期也有很多概念不清,分不清transient、persistent、detached的区别,只是知道PO、VO这样的通俗叫法。其实这些概念都很简单,Hibernate的javadoc写的都很清楚,只需看看就能明白。所以我花了些时间将Hibernate 3.1.2中session的javadoc部分翻译了一下,旨在让那些因为Hibernate的“透明”而忘记了它基本概念的人们停下来再看看这些概念  阅读全文
posted @ 2006-03-06 20:09 Tin 阅读(10691) | 评论 (7)  编辑