纯 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 网站编程指南

 

EasyJForum 是一个基于 Java 技术的免费社区论坛软件系统,界面与目前流行的 Discuz! 系统相仿以方便用户使用,其基本目的是为基于 Java 平台的中文站点提供最好的论坛服务。通过本系统,网站架设者不需要进行任何编程,经过简单的安装和设置,在网上 搭建起功能完善的论坛服务。 EasyJForum 是一套精简的论坛系统,具备一个完整的论坛系统所需要的常用的功能,尤其适用于中小网站。本论坛系统具备如下功能特色: 基于 Java 技术,可以跨平台 支持 Mysql, Oracle, SQL Server, Hsqldb 等数据库 可视化的编辑器,支持文本、图片、Flash、MP3 等媒体文件的发布和浏览 支持站内短消息、在线收藏夹、论坛统计、全文检索等功能 支持不同界面风格的定制和切换 完善的权限设计和后台管理功能,可支持私秘论坛 周密的安全性考虑,具有攻击防护、恶意帖子管理等功能 可配置的远程自动数据备份功能 全面支持 RSS 技术,为论坛访问者提供多样化的访问体验 简洁和最优化的设计保证了卓越的性能和稳定性 EasyJForum 的基本设计宗旨是简洁,因此仅仅采用了最基本的 JSP,JDBC 等技术以获取最高的性能和可扩展性,同时采用了缓存和连接池等技术以加强性能,采用了 lucene 包以实现全文检索。此外没有采用任何其它复杂的第三方构件,因此 EasyJForum 发布包非常轻便,安装配置都很简单。 EasyJForum 采用了统一的数据适配层,因此可以很容易地实现对不同数据库的存取和扩展,同时又兼顾不同数据库的特点和性能。 此外,通过良好的程序架构和 CSS 技术,EasyJForum 实现了对多种界面风格的支持,使用者可以很容易地根据自己的需要对界面风格进行定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值