http://www.tele21.com.cn/jiaoliu/show.asp?classid=747
B/S架构下联动式分页列表框 | ||
作者:纵横软件制作中心 雨亦奇 摘自赛迪网 一、设计联动式分页列表框的原由
DBCon提供了两种通用的数据库操作功能:一个是查询,方法是runQuery,执行后返回的是QueryResult查询结果集;另一个是更新,方法是runUpdate,执行后返回的则是受操作影响的记录行数。这两个功能均是根据用户提供的SQL语句进行相应操作的。 DBCon进行数据库操作时,利用的是WebLogic服务器内置的数据库连接池,并用JNDI数据源技术获取一个数据库连接。利用WebLogic服务器内置连接池的好处:一是易管理,因为WebLogic提供了通过网页进行连接池等系统配置的功能;二是程序书写简洁,清晰;三是可大幅提高程序性能。请看下面runUpdate方法的源程序(每行前面的数字为行号):
4、 QueryPage.java ![]() 图6、QueryPage模型 程序解析: QueryPage是用来获取分页数据的类。 从模型可以看到,该类有三个私有变量: ① linesPerPage:为每页行数,默认为1。 ② totalPages:为查询分页后得到的总页数,默认为1。 ③ result:为查询返回的结果集,默认为null(空)。 该类有三个公用的方法: ① init:查询初始化,主要是调用DBCon的runQuery方法,执行用户提供的SQL命令,并将查询结果进行分页处理。 ② isInit:检测是否已初始化。 ③ getPage:根据用户提供的页号,将该页结果行返回,返回值类型为ResultRow[](结果行数组)。 5、Utilities.java ![]() 图7、Utilities模型 程序解析: Utilities是个工具类,主要用来为JSP网页获取的参数进行一些转换(如字符串转为数字等),并且不抛出任何异常。 该类有两个方法: ① trim:用于将字符串前后空格去掉。当字符串为null(空)时,将其视同""(空串)。 ② atoi:用于将字符串转换为数字,忽略转换过程中发生的异常。有异常时,得到的数字默认为0。 (二)JSP动态网页 1、 zhsoft.jsp 该JSP文件用来展示联动式分页列表框的内容,是主页面。 它接收如下参数: ① group_id:"可供选择的组"一栏中已选中的组的ID(当前组ID)。 ② group_pageno:"可供选择的组"一栏的页号( 简称组列表框页号)。 ③ candidate_pageno:"不在当前组中的用户"一栏的页号(简称候选列表框页号)。 ④ current_pageno:"当前组中的用户"一栏的页号(简称当前列表框页号)。 ⑤ apply_flag:为确认更新标志。该标志由apply.jsp在更新数据库后传来,zhsoft.jsp得到后若发现其大于0,则需要重新初始化查询,更新主页面。 它还定义了如下常量(用户可根据实际情况加以修改): ① LINES_PER_PAGE:指的是每页数据的行数,用于分页。 ② SELECT_LINES:定义的是分页列表框的高度。 ③ COLUMN_NAME_OF_VALUE:定义的是分页列表框选项之值所对应的数据库字段名。 ④ COLUMN_NAME_OF_LABEL:定义的是分页列表框选项显示之值所对应的数据库字段名。 zhsoft.jsp建立了四个JavaBean的实例: ① ② ③ ④ 第一个是Utilities工具类的实例,ID为u。后面三个均是QueryPage类的实例,ID分别为group,candidate和current,对应组列表框、候选列表框和当前列表框的查询及分页。 zhsoft.jsp生成动态页面的过程是:首先接收参数,根据参数判断是否应该进行查询初始化(即调用QueryPage的init方法,刷新页面数据),之后对各栏页号进行修正,防止传来非法页号,最后取出指定页号的数据(即调用QueryPage的getPage方法),输出到页面中。 为了提高操作效率,zhsoft.jsp中嵌入了大量的javascript脚本函数,用于实现添加和删除的操作,点击"确定"按钮后,才调用apply.jsp批量更新数据库。 2、 apply.jsp 该JSP文件用来接受主页面传来的增加、删除等参数,根据参数内容,对数据库进行更新操作,完成后再返回到主页面。 apply.jsp需要获取的参数有: ① group_id:当前组ID ② group_pageno:组列表框页号 ③ candidate_pageno:候选列表框页号 ④ current_pageno:当前列表框页号 ⑤ added:要增加的用户ID列表(以逗号分隔) ⑥ deleted:要删除的用户ID列表(以逗号分隔) apply.jsp对要增删的用户ID列表,用StringTokenizer类进行分析,然后逐一调用DBCon类的runUpdate方法进行增删操作,更新数据库。 apply.jsp在完成更新操作后,使用了一个隐含的FORM表单formApply,该表单的目标是zhsoft.jsp,故该表单提交后,便返回到了联动式分页列表框的主页面。 3、 error.jsp 此为JSP文件的出错页面。当JSP编译时出现异常时,Web服务器将此异常抛给此页面进行处理。此页面内容很简单,只是将异常信息显示了出来,故在此不赘述。 四、联动式分页列表框的测试 联动式分页列表框程序用的Web服务器是WebLogic6.1,数据库用的是Oracle8i。测试前需要配置以下内容: 1、配置WebLogic6.1内置连接池oraclePool与数据源oracleDS。 操作步骤如下: ① 以system用户身份登录WebLogic6.1的主控制台页面(如http://localhost:7001/console); ② 建立JDBC连接池oraclePool的基本信息,画面如下: ![]() 图8、配置JDBC连接池 点击"Create"按钮创建oraclePool连接池。 ③为oraclePool连接池选定服务myserver,这样myserver启动后,该连接池便可使用了,设定画面如下: ![]() 图9、将连接池加载到服务中 选定后按"Apply"按钮使之生效。 ④建立数据源oracleDS(JNDI名字),它映射为oraclePool连接池,设置画面如下: ![]() 图10、为连接池建立数据源 按"Create"建立oracleDS数据源,之后不要忘了点击"Targets",此时将出现与第③步类似的画面,将该数据源应用到myserver服务中,按"Apply"使其生效。 2、拷贝程序:将联动式分页列表框的JSP文件(zhsoft.jsp、apply.jsp和error.jsp)和JavaBean程序的执行代码(CLASS文件)复制到WebLogic6.1的DefaultWebApp目录下,将按钮图象文件复制到DefaultWebApp/images目录下。 3、启动Oracle数据库,建立TEST_USER(用户表),TEST_GROUP(组表),GROUP_USER(组用户表)三张表,表结构如下:(用PowerDesigner设计) ![]() 图11、测试用表结构 表建立后,需向用户表和组表中加入一些测试数据。 4、启动WebLogic6.1,大功告成,浏览http://localhost:7001/zhsoft.jsp即可体验联动式分页列表框的新感觉了。 小结:联动式分页列表框是根据实践经验总结提炼出来的,它适合组用户管理模式一类的B/S应用,用户可根据实际情况稍加修改即可使用。本文对联动式分页列表框,从设计到实现再到测试,结合Rose分析模型,进行了介绍。相信用户通过阅读和实践,是能够大有斩获的。 联动式分页列表框源代码 作者信息 稿件作者: 雨亦奇。纵横软件制作中心为本人之个人工作室。 |