Unmi 学习 Groovy 之 Groovlet

在 Java 领域中我们结识过多个 XXXlet 的东西,比如 Applet、Servlet、Scriptlet,这里的 let 作为一个后缀,代表小的意思,或者引申为简短、精巧。

Applet  ---- Application let 小应用程序
Servlet  ---- Service let 小服务程序
Scriptlet ---- Script let  一小段脚本,在 jsp 中用这样的标签 <jsp:scriptlet>

另外还有一种叫做 text/x-scriptlet 的 MIME 类型。

而本篇所要介绍的角色也用了 let 后缀,叫做 Groovlet,不能简单识作为 Groovy let ---- 小 Groovy 程序。不尽对,确切来说它是 GroovyServlet、进一步 Groovy Service let 的简称,没错,它实质上也是一个 Servlet,也就是 Servlet 的扩展。简单讲就是用 Groovy 脚本替代 Java 语言来写 Servlet 程序,再明白点讲就是:比如我们在浏览器中用 http://localhost:8080/groovlet/hello.groovy 访问某个脚本就像访问某个 php/perl 一样的效果。 阅读全文 >>

用 Spring MVC 来处理向导式复杂表单

引子

我们在网上经常会碰到一些向导式的表单页面,比如 第一步 >> 第二步 >> 第三步…、基本信息 >> 联系方式 >> 兴趣爱好…。它们都是按类型分到多个有序的页面要你来完成填写的。当然,你也可以把它们全部罗列在一个页面里,那样用户就会感觉茫茫然,分不清主次,可能不会很好的予以配合。

然而像 Struts、WebWork 那样的 MVC 框架未提供类似的实现,都需自己采用某种方式来实现向导,可以用层的隐现方式,或逐步把填写的部分数据放 Session 中,最后汇总处理。幸运的是 Spring MVC 考虑到了这种应用需求,它提供了一个 org.springframework.web.servlet.mvc.AbstractWizardFormController 来满足你。 阅读全文 >>

Unmi 的 Struts2 学习笔记(十七)

当个人在撒谎时尚有害臊与尺度;而在代表着某一群体利益时,因其无具体担责人,故能弥天却不知廉耻,瞒得了众人吗?非也,只因暂无处述说罢。

Unmi 学习 Groovy 之多线程

Java 的一个很值得称道的特性是在语言级支持多线程。定义了 Runnable 接口,并在根类 Object 中提供了 wait/notify 方法,还有 synchronized 关键字的支持。我们常说实现多线程的方式有两种:继承 Thread 和实现 Runnable,实质上工作者线程执行的都是 Runnable 接口中定义的 run() 方法,Thread 本身实现了 Runnable 接口,它不过是为线程的调度使用提供了许多有用的方法。

而 Groovy 作为 Java 家族的皇储(安心做储君就行了),多线程方面自然不会甘拜下风。Groovy 通过 MetaClass 对 java.lang.Thread 进行了扩展,即所谓的 GDK - Groovy methods added to Java SE classes。

在原 java.lang.Thread 类中增加了两个方法,分别是: 阅读全文 >>

如何用正确的方法写出高质量软件的75条体会[转]

1. 你们的项目组使用源代码管理工具了么?
MVM:应该用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的选择是VSS。

2. 你们的项目组使用缺陷管理系统了么?
MVM:应该用。ClearQuest太复杂,我的推荐是BugZilla。

3. 你们的测试组还在用Word写测试用例么?
MVM:不要用Word写测试用例(Test Case)。应该用一个专门的系统,可以是Test Manager,也可以是自己开发一个ASP.NET的小网站。主要目的是Track和Browse。

4. 你们的项目组有没有建立一个门户网站?
MVM:要有一个门户网站,用来放Contact Info、Baselined Schedule、News等等。推荐Sharepoint Portal Server 2003来实现,15分钟就搞定。买不起SPS 2003可以用WSS (Windows Sharepoint Service)。 阅读全文 >>

用 JFugue 给 Ant 构建完成分别在成功或失败时加上不同的声音提醒

现在基本用 Eclipse,所有的操作都在无声无息中进行的,除了操作系统带来的咔嚓声还有你的呼哧声。怀念起使用 JBuilder 的时代了,在 JBuilder 中编译、执行程序或 Ant 脚本,在成功或失败时都有不同的声音提醒。

那我们不妨也来用 JFugue 让 Ant 构建成功或失败时发出不同的声音,关于 JFugue 的使用在 让 Java 轻松乐动起来,使用 JFugue 制作自己的音乐 介绍过。这样我们就能在闭目养神中完成 Ant 的构建,听声音就知道成功还是失败。当然,敏捷过程中多是在晚上无人值守的时候完成自动构建,那晚上可要小心,别吓着鬼了。

实现原理,启动 ant 时用参数 -logger YourLoggerClass 指定你自己的 Logger 类(也是一个监听器),在你的 Logger 类的 buildFinished(BuildEvent event) 时,发现无异常,表示成功,用 JFugue 发出一种声音,有异常时,表时失败,用 JFugue 发出另外一种声音。 阅读全文 >>

Unmi 学习 Groovy 之数据库操作一

不夸张的说,Groovy 在使用 JDBC 对数据库的操作上是简化到了极致。Groovy 中的 SQL 支持在 groovy.sql 包中,而其中最耀眼的明星就数 groovy.sql.Sql 了。

现在我们就来体验一下 GroovySQL 给我们带来的快感。这里所用的示例数据库是 derbyDB, JDK 1.6 中附带了这个数据库(叫做 JavaDB),MyEclipse 6.X 也带了 DerbyDB。假设我们把它安装在 C:\Java\JavaDB,那么在 C:\Java\JavaDB\demo\databases 下有一个 toursdb(目录) 数据库。我们就用这个,当然你可以使用你手边已有的或最拿手的数据库。 阅读全文 >>

Unmi 学习 Groovy 之文件操作

一:Java 与 Groovy 读文件操作比较

Groovy 对 java.io.File 进行了扩展,增加了一些接受闭包参数和简化文件操作的方法。作为对比,我们还是先来看看 java 中读取文件的两种常方法,分别是行读取和字节缓冲区读取:

从上面可看到,采用 Java 传统方式来读取文件内容,不仅代码行多,而且还必须自己用 try/catch/finally 来处理异常和资源的关闭。现在马上来看看 Groovy 完成以上工作的代码是怎么的,只要一行代码: 阅读全文 >>

让 Java 轻松乐动起来,使用 JFugue 制作自己的音乐

学过或用过 Basic 的朋友大约还会记得,在 Basic 里要演奏(当时还是从 PC 喇叭里发出的,现在也能走声卡了)一段 哆来咪发唆拉西哆 可以写成:

直接用 JDK 可没有这么简单,虽然 JDK 1.3 开始就引入了 Java Sound API 处理 MIDI(Musical Instrument Digital Interface),可是它的接口很难使用,另外,Sun 也专为视、音频的捕获、回放、格式转换提供了 Java Media Framework API (JMF),但不能用来创作。有一个开源的组件 JFugue(http://www.jfugue.org/),它能让你尽显音乐方面的天赋,给你一个高级易用的接口来操作 Java Sound,制作自己的 MIDI 音乐。 阅读全文 >>

Unmi 学习 Groovy 之闭包与资源、异常处理

闭包还为我们提供了改善处理复杂 try/catch/finally 结构的方法。利用闭包,很容易编写正确处理资源和异常的代码。使用闭包的新方法已经添加到处理文件、进程和数据库连接的标准 Java 类中。当它们用在 Groovy 中的时候,不必处理和担心资源的关闭。首先我们来看看 Groovy 实现这一方式的原理。我们假设有这么一个资源处理类。

那么我们的打开、读取和关闭资源的典型的 Java 代码看起来就像这样: 阅读全文 >>