站内搜索
发表回复
收藏 

基于 EasyJForum 的 JSP 网站编程指南 

基于 EasyJForum 的 JSP 网站编程指南


从 3.2 版本开始,EasyJForum 除了提供完整的论坛功能之外,还为您提供了一种简单的网站架构,使您可以不用再写新的 Java 类和 Servlet,仅使用纯 JSP 快速完成一个日常网站的建设,或者在 EasyJForum 论坛的基础上进行功能扩展。

当然,如果您的网站功能比较复杂,或者除了论坛外有更多的交互式功能,您可能还是需要进行定制,使用更多的技术来实现,不过本文所体现的思想应该仍然是适用的,请参考:纯 JSP 网站编程 - 一种思想以及 EasyJForum 的实现 。

为了实现纯 JSP 编程,EasyJForum 主要提供了如下四种功能:

1、常用工具类

作为一个全功能的免费论坛系统,EasyJForum 内置有很多对 Web 网站有用的工具类和函数,足以满足大多数日常网站的需要。为了方便大家使用,我们对其 JavaDoc 文档进行了整理(不含与论坛功能相关的部分),详见本帖的附件。

2、数据库访问

com.hongshee.ejforum.data.SqlHelper 类提供了对于数据库的常用查询与更新操作方法。

比如,下面的代码可以对数据库表进行插入或更新:

String sql = "insert into ejf_user(name,age) values(?,?)";

ArrayList<Object> paramList = new ArrayList<Object>();
paramList.add("John");
paramList.add("30");

SqlHelper sqlHelper = SqlHelper.getInstance();
sqlHelper.execUpdateSql(sql, paramList);

或者:

DBManager dbManager = DBManager.getInstance();
Connection conn = dbManager.getConnection();
try {
    sqlHelper.execUpdateSql(sql, paramList, conn);
} finally {
dbManager.closeConnection(conn);
}

下面的代码可以对数据库表进行查询:

String sql = "select * from ejf_user where name = ?";

ArrayList<Object> paramList = new ArrayList<Object>();
paramList.add("John");

SqlHelper sqlHelper = SqlHelper.getInstance();
ArrayList<HashMap> results = sqlHelper.execSelectSql(sql, paramList);
HashMap record;

for (int i=0; i<results.size(); i++) {
     record = results.size.get(i);
     System.out.println(record.get("NAME"));
     System.out.println(record.get("AGE"));
}

3、定时任务

有时候你需要定时执行某些任务,比如数据统计,数据清理等,EasyJForum 3.2 新增了一个只能被内部定时调用的 JSP 文件 /admin/tools/timer_others.jsp, 可以支持三种定时任务:每两小时,每天,每周。你可以修改这个文件,添加自己的定时执行脚本。

4、JSP 全局函数接口

为了实现在 JSP 文件中定义全局函数的功能,EasyJForum 3.2 定义了一个接口:com.hongshee.ejforum.util.IPageInvoker. 通过实例化这个接口,JSP 页面就可以实现全局函数定义及调用功能。代码范例如下:

// 下面的代码可以放在一个公共的 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);
……

当然,除非必要,应该减少全局函数及变量的使用。多数情况下,JSP 应该通过 <%! %> 的方式使用局部函数来完成任务。

通过上述四项功能,你应该可以在 EasyJForum 的基础上仅使用 JSP 完成整个网站的编程。当然,这样做有一个前提:就是你的整个网站必须与 EasyJForum 运行在相同的 context 内,或者直接在 EasyJForum 的基础上扩展其它功能。

如果你的网站其它部分必须与 EasyJForum 运行在不同的 context 中,但你仍想利用 EasyJForum 的上述功能实现纯 JSP 编程,你可以在其它 context 中建立一个空的 EasyJForum 应用,但不使用与之相关的 JSP 文件(/admin/tools/timer_others.jsp 除外)。如果你不想建立一套空的数据库表,只需修改 WEB-INF\conf\config.xml 文件:
<isForum>true<isForum>
将其中的 true 修改为 false 即可。

EasyJForum 3.2 是我们提倡纯 JSP 编程的一种尝试,可能还有不够完善以及需要改进的地方,如果您有什么好的思路或建议,请在后面提出来。谢谢!

附件

您所在的用户组无法下载或查看附件
本论坛开发者 QQ:980766123

下载了看一看

下载了看一看

不够mvc

你这样的话不够mvc
下载下来看看

wqe

:'(:@erwerewrewqew
发表回复
查看积分策略说明

快速回复主题

标题  (可选)
内容

恢复自动保存的数据