纯 JSP 网站编程 - 一种思想以及 EasyJForum 的实现

在 Web 网站开发领域,PHP 似乎大有一统江湖的趋势,以至于我这个多年的 JSP 老手也准备考虑使用 PHP 来扩展我的网站了。在学习了一番 PHP 语言之后,我决定还是留在 JSP 这里 -- 我实在是不喜欢 PHP 中的那些像垃圾一样到处散布的 $ 和 " 符号了,要知道,HTML 代码本来就很杂乱了。也许是我有代码洁癖吧,不过我认为 JSP 至少在代码的可读性上要好于 PHP。

那些使用 PHP 的人经常说 PHP 比较简单,容易上手 -- 可能吧,不过对于我来说,JSP 已经简单得不能再简单了。Java 这种语言比较令人可惜的一点是,其简单性被太多的人滥用,导致其似乎变得很复杂了,而事实并非如此。有经验的人总是能迅速穿过嘈杂的大厅,直达绿草茵茵的目的地 - 不要被 Java 领域那些名目繁多的各种框架所吓倒,那都是一些具有设计癖(程序猿多少都有这样的癖好)的人自娱自乐的玩具而已,不必理会。关注基础性技术,直截了当地解决问题就行了。要知道,Java 只是你解决问题的时候需要用到的几十种工具之一而已,不必在此翻太多的跟斗。

不过,经过多年的实践,我发现 JSP 确实有如下两点不如 PHP 的地方:

1、每次修改了后台的 Java 类之后都要重启应用,这降低了 JSP 作为 Web 开发语言的易用性。对 Java 类进行及时编译和加载是不难实现的,但这必然会降低性能。所以 JSP/Java 更适合于开发复杂的、不需要经常改变网页的企业级应用。

2、JSP 页面中不能定义和共享全局函数,全局变量则必须放在 Application 对象中,这使得 JSP 不能作为一种独立的脚本语言来使用,而必须搭配后台 Java 类来完成任务。(据说 JDK 8 将会支持函数式编程,这可能给 JSP 带来定义全局函数的能力,从而获得新的发展)

好在 Java 是一种强大的语言,通过不长时间的考虑,我很快找到了克服上述两个问题的方法:

1、将 Web 开发常用的一些对象和方法整理封装在几个 Java 工具类中,然后在 JSP 中调用这些方法,尽量不要再创建新的 Java 类和 Servlet,这样至少可以最大限度地减少需要重启应用的次数。

2、对于某些 JSP 页面需要使用局部函数的地方,可以使用 <%! ... %>  来进行定义。如果需要使用全局函数,可以使用一个已经预先定义好的适用于 Web 网页的接口,通过定义一个接口对象并放到 Application 对象中来实现。代码范例如下:

// 下面的代码可以放在一个公共的 JSP 文件中,然后使用 <jsp:include ... /> 来引入到需要的 JSP 文件中
IPageInvoker method1 = (IPageInvoker)application.getAttribute("method1");
if (method1 == null) {
    method1= new IPageInvoker() {
        public Object exec(HttpServletRequest request, HttpServletResponse response) throws Exception {
             System.out.println(“method1 exec”);
             return "OK";
        }
    };
    application.setAttribute("method1", method1);
}

// 在 JSP 文件中调用全局函数
IPageInvoker method1 = (IPageInvoker)application.getAttribute("method1");
Object ret = method1.exec(request, response);
……

作为上述方法的一种实现,从 3.2 版本开始,EasyJForum 的类被进行了重新整理,使之不仅被用于论坛本身,而且可以被用于任意 JSP 站点网页。对于除了论坛之外其它功能比较简单的站点来说,使用 EasyJForum 包 + JSP 就可以解决一切问题了,这就是我们的目标。对于比较复杂的交互式站点,你可能还是需要进行定制,再增加一些其它的 Java 类,不过上述的思想应该仍然是适用的。

这就是 EasyJForum 所要为您提供的新的价值。

关于如何使用 EasyJForum 实现纯 JSP 式的网站编程,请参考:基于 EasyJForum 的 JSP 网站编程指南

 

你可能感兴趣的:(jsp)