基于 EasyJForum 的 JSP 网站编程指南
附件
您所在的用户组无法下载或查看附件
jackie
管理员
|
0#
发表于 2013-10-23 16:41
更新于 2023-03-24 16:37 by jackie
基于 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
|
|
渐渐将
初级会员
|
10#
发表于 2023-01-13 10:27
|