利用Velocity内核简化Ajax开发

  这两年火的东西有很多,在技术方面有Ajax、RoR,在开发方法方面有TDD、DDD、Agile等等。对于Web开发人员来说,没有用过或开发过Ajax很可能被人鄙视。呵呵~~这也许就是技术人吧。

  用Ajax开发最令人头痛的一件事即要写DOM。由于客户端调试不容易,加上各大浏览器标准不兼容,开发效率和出错几率可想而知。为了提高开发效率避免不必要的错误,很多朋友喜欢将原本客户端的程序写到服务器端,例如:
Continue Reading »

07-08-29 | 开发 | Permalink | No Comments |

利用jcaptcha生成自定义验证码

  jcaptcha是一个开源的用来生成图形验证码的Java开源组件,使用起来也是非常的简单方便。不过,很多网友抱怨该组件默认的图片比较大,影响网页的美观。由于代码过于简单,以至于找不到地方修改。由于tycho(我正在开发的程序)也需要利用该组件生成验证码,所以简单地研究了一下。发现 jcapthca是非常强大的,不光是可以生成图片式的验证码,还可以生成声音式的(新浪就使用了双重验证码)。大家可以到这里下载,并导入到你的工程。

  若要利用jcaptcha生成自定义样式的验证码,首先需要为其创建一个验证码引擎,或者说验证码方案类。如下:
Continue Reading »

07-08-28 | 开发 | Permalink | No Comments |

Velocity 和 JS 操作 FCKEditor

  其实很早以前就使用过FCKeditor,那是在做一个新闻发布系统中,当时使用jsp + struts来开发,FCKeditor在jsp下的配置在网上有很多相关的文章,这里就不多说了。现在使用Velocity开发tycho时,也用到了 FCKeditor,其实配置和jsp一样,只是思维需要转换一下,即,网上所介绍的jsp下使用FCKeditor一般都是在jsp页面上生成实例,而 Velocity并不能完成这一需求,那么我们将FCKeditor的实例放在后台bean中生成,并放入request,然后在Velocity中对其进行设置。后台bean中写法如下:
Continue Reading »

07-07-10 | 开发 | Permalink | No Comments |

Struts2 下自定义 VelocityContext

  但凡使用过Velocity的人都会有这样的感觉,虽然它有几个内置的对象供我们使用(request、session、 application、attr等),但是,在开发过程中,仅这几个内置的对象并不能完全满足我们的需要。今天我们就要讲讲,在Struts2下面,如何扩展Velocity,自定义出我们的内置对象。
Continue Reading »

07-06-28 | 开发 | Permalink | No Comments |

struts2默认的拦截器为何会失效

  这几天一直没有更新blog,主要是将tycho整个框架升了一下级。由原来的jdk1.4升级为jdk6.0,velocity1.4升级为1.5,struts1.29升级为struts2.0.5,spring1.2.9升级为spring2,还有hibernate2升级为hibernate3。从头到脚的翻新了一遍。级升过程中,最为复杂的要属struts了。复杂其实并不是说它的结构,而是改动的地方实在太多。使用过struts2的朋友都应该道知,struts2其实就是webwork的下一个版本,运用了面向方面的思想。在这个版本当中,struts自身保留下来的东西实在是少之又少。一直以来我都没有学习过webwork,这次将系统升级到struts2,着实费了不少功夫。


Continue Reading »

07-05-17 | 开发 | Permalink | No Comments |

Java Web Start基本配置

  Java Web Start是一个基于Java的应用程序,它允许从Web服务器启动、部署和更新Java 2客户端应用程序。这些应用程序可以通过Web的超链接或Java Web start提供的应用程序管理器(Java Application Manager)实用程序初始化运行。若应用程序是第一次运行,将从Web下载被部署的客户端应用程序,之后启动时,会自动检查应用程序的版本是否有更新,如果没有则启动先前下载到本地的程序,有则仅下载更新了的部分。

  Java Web Start的核心是JNLP(Java Networking Language Protocol)文件。JNLP是一个XML文件,定义的应用程序的相关参数。
Continue Reading »

06-11-13 | 开发 | Permalink | No Comments |

利用URLClassLoader加载class到当前线程

  Java是利用ClassLoader将类载入内存的。在同一应用中,允许有很多个ClassLoader,通过委派机制,把装载的任务传递给上级的装载器的,依次类推,直到启动类装载器(没有上级类装载器)。如果启动类装载器能够装载这个类,那么它会首先装载。如果不能,则往下传递。当父类为null时,JVM内置的类(称为:bootstrap class loader)就会充当父类。想想眼下的越来越多用XML文件做配置文件或者是描述符、部署符。其实这些通过XML文档描述的配置信息最终都要变成Java类,基实都是通过ClassLoader来完成的。URLClassLoader是ClassLoader的子类,它用于从指向 JAR 文件和目录的 URL 的搜索路径加载类和资源。也就是说,通过URLClassLoader就可以加载指定jar中的class到内存中。下面来看一个例子,在该例子中,我们要完成的工作是利用URLClassLoader加载jar并运行其中的类的某个方法。首先我们定义一个接口,使所有继承它的类都必须实现action方法。如下:
Continue Reading »

06-08-25 | 开发 | Permalink | No Comments |

如何禁止桌面程序重复启动

  许多程序只允许启动单个实例,比如我们常用的MSN、OUTLOOK等等。单实例有很多好处,其中最重要一点即是安全。想像一下多人同时修改同一文件的危险,就如我们在J2EE应用程序中所做的那样,要尽可能考虑到多用户同时访问的问题。

前些日子用SWING为朋友写了一个程序,其中就有不可同时启动多个系统实例的要求。由于没有一个好的思路,所以走了很多弯路。现在终于解决了,积累了一些心德想与大家分享。

Continue Reading »

04-11-24 | 开发 | Permalink | No Comments |

java克隆详述-下

  何为影子clone?先看一个例子。
Continue Reading »

04-09-01 | 开发 | Permalink | No Comments |

java克隆详述-上

  在今天的工作中,为了解决对象地址的问题,使用了java的clone。但发现有些同事竟然对clone很是不明白,甚至对"引用"(reference)也是一头雾水。这些都是java最基础的概念,也是最重要的,是我们在学习java时必须领会的。

经常听到有人说java中没有指针。事实如此吗?no,java是有指针的,只不过换了个名字而已,也就是我们经常提到的引用。我们知道,在java中一切都是对象,那么我们如何操控对象?如何在成千上万的对象中找到我们所需的那个对象呢?又是如何让对象按照我们的意思来完成任务的呢?
Continue Reading »

04-08-31 | 开发 | Permalink | No Comments |