【Jsp精品源码栏目提醒】:网学会员Jsp精品源码为您提供jsp通用查询分页 - 其它资料参考,解决您在jsp通用查询分页 - 其它资料学习中工作中的难题,参考学习。
JSP 通用查询处理与分页显示 铁树 tieshu 2006 年 4 月 2 日星期日 (注:涉及的
源码可通过 Email:rngguliu163.com 获取)1 基本思想 鉴于
JSP 开发中多次用到查询与分页显示的功能,故将查询处理及分页显示进行了统一设计和功能封装,在一定程度上加快了开发进程,提高了编码效率,减少了重复性劳动,提高了代码重用度。
流程如下。
由上述流程可以看出,整个查询及分页显示只检索一次数据库,也就是只建立一次数据库连接。
翻页显示时,不再进行查询。
从一定程度上减轻了系统的负担,同时翻页速度也得到提高。
本设计的注意点是,对于 session 的变量名的处理,不要重复,以免发生混乱约定采用”表名”和相应操作的组合,见示例程序。
2 两个重要的类 这两个类的调用接口及易掌握,只需简单的调用几个方法,即可实现完美的分页显示。
这两个类相对独立而实用,可单独在其他程序中进行调用。
如果将这二者进行结合,可实现任意对象集的完美分页显示。
2.1 Page 分页处理类 为了简化分页功能的处理,特将分页有关的处理封装在此类中。
输入参数为某一数据集(或对象集合)、每页显示的记录数及要显示的页码,返回要显示的记录集。
构造函数概览Pagejava.util.List data int itemsPerPage 构造函数1,List 数据集 设置数据集和每页显示多少个记录 同时计算出总页数和总记录数,对当前页码置 1Pagejava.lang.Object data int itemsPerPage 构造函数 3,Object 数据集 设置数据集和每页显示多少个记录 同时计算出总页数和总记录数,对当前页码置 1Pagejava.util.Vector data int itemsPerPage 构造函数 2,Vector 数据集 设置数据集和每页显示多少个记录 同时计算出总页数和总记录数,对当前页码置 1方法概览 String getAllFootString url String pagePara //取得分页的页脚信息2,显示无效链接 String getAllFootString url String pagePara String otherPara //取得分页的页脚 信息 3,显示无效链接处理关联子表的情况 int getCurrentRecord//获取当前记录编号 String getValidFootString url String pagePara //取得分页的页脚信息1,自动隐藏无效链接 String getValidFootString url String pagePara String otherPara //取得分页的页脚信息1,自动隐藏无效链接 java.util.List showPageString pageNum // 根据页码找出要显示的数据集构造函数细节Pagepublic Pagejava.util.List data int itemsPerPage构造函数1,List 数据集 设置数据集和每页显示多少个记录同时计算出总页数和总记录数,对当前页码置1参数:data - 要显示的数据集itemsPerPage - 每页显示多少个记录Pagepublic Pagejava.util.Vector data int itemsPerPage构造函数 2,Vector 数据集 设置数据集和每页显示多少个记录同时计算出总页数和总记录数,对当前页码置1参数:data - 要显示的数据集itemsPerPage - 每页显示多少个记录Pagepublic Pagejava.lang.Object data int itemsPerPage构造函数 3,Object 数据集 设置数据集和每页显示多少个记录同时计算出总页数和总记录数,对当前页码置1参数:data - 要显示的数据集itemsPerPage - 每页显示多少个记录方法细节getCurrentRecordpublic int getCurrentRecord返回值: 当前记录编号。
showPagepublic java.util.List showPageString pageNum根据页码找出要显示的数据集参数:pageNum - 指定的页码返回值: 要显示的数据集getValidFootpublic String getValidFootString url String pagePara //取得分页的页脚信息1,自动隐藏无效链接返回值: 分页的页脚信息getValidFootpublic String getValidFootString url String pagePara String otherPara //取得分页的页脚信息1,自动隐藏无效链接返回值: 分页的页脚信息getAllFootpublic String getAllFootString url String pagePara //取得分页的页脚信息2,显示无效链接返回值: 分页的页脚信息getAllFootpublic String getAllFootString url String pagePara String otherPara //取得分页的页脚信息 3,显示无效链接处理关联子表的情况返回值: 分页的页脚信息2.2 Face 界面显示类为了界面的统一及灵活而简易的设置,特封装此类.调用接口简易实用。
构造函数概览Face方法概览 void setStyleint StyleIndex //设置显示样式内置了几种颜色方案感谢 ezpj2005yahoo.com.cn 朋友; 1 为默认样式,也可以自己设定颜色方案 String Table //表头 String TableString width // 带参数表头 String TableE// 表尾 String TD //表格列显示风格 //显示空格 String TDint colspan String label //表格列显示风格 String TDint colspan String label String align // 表格列显示风格 String TDString label // 表格列显示风格 String TDString width int colspan String label String TDString width String label String TDDString value String label //弹出对话框链接列例如:删除 String TDDString value String label String msg //弹出对话框链接列例如:删除 String TDIString width int colspan String value String label String TDIString value String label //链接列 String TDIString value String label String method //链接列 String TH//表格头显示风格 //显示空格 String THint colspan String label //表格头显示风格 String THString label// 表格头显示风格 String THString width int colspan String label String THString width String label String THIString width int colspan String value String label String THIString value String label //链接列 String TR// 普通行显示风格例如添加、修改、查询界面时调用或者表头、分页脚注等部分调用 String TRB // 浏览行显示风格浏览、查询结果显示时调用 String TRE //行尾标志构造函数细节Facepublic Face方法细节setStylepublic void setStyleint StyleIndex //设置显示样式内置了几种颜色方案感谢 ezpj2005yahoo.com.cn 朋友; 1 为默认样式,也可以自己设定颜色方案参数: StyleIndex -Tablepublic String Table 表头Tablepublic String TableString width 带参数表头参数:width - //表格宽度TableEpublic String TableE 表尾TRpublic String TR 普通行显示风格例如添加、修改、查询界面时调用或者表头、分页脚注等部分调用TRBpublic String TRB 浏览行显示风格浏览、查询结果显示时调用TREpublic String TRE //行尾标志THpublic String TH 表格头显示风格 //显示空格THpublic String THString label 表格头显示风格参数:label - //要显示的内容THpublic String THint colspan String label 表格头显示风格参数:label - //要显示的内容colspan - //跨列显示THpublic String THString width String label参数:width - //列宽度label - //要显示的内容THpublic String THString width int colspan String label参数:width - //列宽度colspan - //跨列显示label - //要显示的内容THIpublic String THIString value String label //链接列参数:label - //显示内容value - //要链接的内容THIpublic String THIString width int colspan String value String label参数:width - //列宽度colspan - //跨列显示value - //要链接的内容label - //要显示的内容TDpublic String TD 表格列显示风格 //显示空格TDpublic String TDString label 表格列显示风格参数:label - //要显示的内容TDpublic String TDint colspan String label 表格列显示风格参数:label - //要显示的内容colspan - //跨列显示TDpublic String TDint colspan String label String align 表格列显示风格参数:label - //要显示的内容colspan - //跨列显示align - //对齐方式TDpublic String TDString width String label参数:width - //列宽度label - //要显示的内容TDpublic String TDString width int colspan String label参数:width - //列宽度colspan - //跨列显示label - //要显示的内容TDIpublic String TDIString value String label //链接列参数:label - //显示内容value - //要链接的内容TDIpublic String TDIString value String label String method //链接列参数:label - //显示内容value - //要链接的内容method - //打开方式 :_blank_parent_self_topTDIpublic String TDIString width int colspan String value String label参数:width - //列宽度colspan - //跨列显示value - //要链接的内容label - //要显示的内容TDDpublic String TDDString value String label //弹出对话框链接列例如:删除参数:value - //要链接的内容label - //要显示的内容TDDpublic String TDDString value String label String msg //弹出对话框链接列例如:删除参数:value - //要链接的内容label - //要显示的内容msg - //弹出的对话框的内容2.3 对象集分页显示实例< page importquotgeneral.quot >< page importquotjava.util.List” ><
jsp:useBean idquotbeanquot classquotgeneral.testBean.BookBeanquot />< String pagenum request.getParameterquotpageNumquot //要显示的当前页 int itemsPerPage 10//设置每页显示的记录数 java.util.Vector v bean.GetBookByStringquot 11 quot//可输入指定的查询条件 //v中存放的是 book 对象集合,具有名称,价格等属性 Page p new Pagev itemsPerPage List display p.showPagepagenum //获取要显示的集合列表 Face fc new Face//界面显示类 fc.setStyle1 //设置显示样式 String facequotquot//输出的内容字符串 face fc.Table//建立一个表格 face fc.TR//普通行风格 face fc.THquot序号quot//标题显示,自动编号 face fc.THquot书名quot face fc.THquot简介quot face fc.THquot出版社quot face fc.THquot作者quot face fc.THquot价格quot face fc.TH//对应“修改” face fc.TH//对应“删除” face fc.TRE//行结束 int cp.getCurrentRecord//获取当前记录编号 for int i 0 i < display.size i Book b Bookdisplay.geti face fc.TRB//浏览行风格 face fc.TDString.valueOfc face fc.TDIquotbook_detail.jspidquotb.getIdb.getTitlequot_blankquot face fc.TDb.getMemo face fc.TDb.getPress face fc.TDb.getAuthor face fc.TDString.valueOfb.getPrice face fc.TDIquotbook_modify.jspidquotb.getIdquot修改quot face fc.TDDquotbook_del.jspidquotb.getIdquot删除quot//会弹出确认对话框 face fc.TRE face fc.TR//获取分页链接 face fc.TD8p.getAllFootquotbook_browse.jspquotquotpageNumquotquotcenterquot face fc.TRE face fc.TableE out.printlnface>3 实例 本实例设计采用值对象模式例如对书基本信息的维护,采用 Mysql 数据库。
本实例中涉及的所有
源码均可通过 Email:rngguliu163.com 获取。
3.1 数据表sql:CREATE TABLE BOOK ID INT10 NOT NULL AUTO_INCREMENT TITLE VARCHAR50 MEMO TEXT AUTHOR VARCHAR50 PRESS VARCHAR50 PRICE DECIMAL62 PRIMARY KEY IDTYPE INNODB3.2 数据库操作类 采用连接池技术。
资源配置文件:db.property;类 DBConn 和 DBConnectionManager,主要实现的方法如下。
public DBConn//构造函数,创建执行的 一般容器 Statement 实例 public ResultSet executeQueryString sql //执行 SQL 语句返回字段集 public int executeUpdateString sql// 执行 SQL 更新语句返回受影响的记录数 public void close//关闭连接 该方法的实现较为普遍,在此不再详述。
3.3 值对象模式 基类:又称为值对象。
为了方便表示数据,我们把每个数据表都做成一个值对象的类,这样在 JavaBean 和
JSP 页面之间传递数据时可以通过值对象来进行,主要用于操作类的调用。
在值对象中,每个属性对应数据表的一个字段,并且他们的数据类型是对应的。
并且为每个属性都提供了 getter 和 setter 方法,这样,就为在 JavaBean 和
JSP 页面之间传递参数提供了方便。
操作类:把和业务操作相关的逻辑都封装在这里。
它封装了和值对象所对应的表的所有相关操作,如添加、修改、删除、查询等。
JavaBean:JavaBean 体系结构是一个全面地基于组件的标准模型。
JavaBean组件是 Java 类,这些类遵循一个接口格式,以便于使方法命名、底层行为以及继承或实现的行为能够把类看作标准的 JavaBean 组件进行构造。
JavaBean 具有以下特性: 可以实现代码的重复利用。
易维护性、易使用性、易编写性。
可以在支持 Java 的任何平台上工作,而不需 要重新编译。
在本实例中,采用
JSP+JavaBean 技术。
JSP+JavaBean 的数据传递关系: 这种模式中,
JSP 作为视图,同时也有部分控 制器的功能,JavaBean 组件作为模型和控制器组 当 件。
HTTP 请求到达
JSP 时, 它首先设置 JavaBean 组件的属性,然后调用 JavaBean 组件的方法, JavaBean 组件通过连接数据库来执行业务逻辑, 最 后 JavaBean 组件把执行的结果返回给
JSP 显示。
3.4 基类package general/ author tieshu /public class Book private int id//书 ID private String title//书标题 private String memo//书简介 private String author//作者 private String press//出版社 private double price//价格 public String getAuthor return author public void setAuthorString author this.author author public int getId return id public void setIdint id this.id id public String getMemo return memo public void setMemoString memo this.memo memo public String getPress return press public void setPressString press this.press press public double getPrice return price public void setPricedouble price this.price price public String getTitle return title public void setTitleString title this.title title 3.5 操作类package generalimport general.database.DBConnimport java.sql.import java.util.Vectorimport general.common./ author tieshu /public class BookBean public int addBookBook obj //添加一条记录 int result try DBConn dbConn new DBConn StringBuffer sql new StringBuffer sql.appendquotinsert into booktitlememoauthorpressprice valuesquot sql.appendquotquot ParamUtils.filterByNoneobj.getTitle quotquot sql.appendquotquot ParamUtils.filterByNoneobj.getMemo quotquot sql.appendquotquot ParamUtils.filterByNoneobj.getAuthor quotquot sql.appendquotquot ParamUtils.filterByNoneobj.getPress quotquot sql.appendobj.getPrice sql.appendquotquot result dbConn.executeUpdatesql.toString dbConn.close catch Exception e e.printStackTrace result0 return result public int modifyBookBook obj //修改 int result try DBConn dbConn new DBConn StringBuffer sql new StringBuffer sql.appendquotupdate book set quot sql.appendquottitlequot ParamUtils.filterByNoneobj.getTitle quotquot sql.appendquotmemoquot ParamUtils.filterByNoneobj.getMemo quotquot sql.appendquotauthorquot ParamUtils.filterByNoneobj.getAuthor quotquot sql.appendquotpressquot ParamUtils.filterByNoneobj.getPress quotquot sql.appendquotpricequot obj.getPrice sql.appendquot where idquot obj.getId result dbConn.executeUpdatesql.toString dbConn.close catch Exception e result0 e.printStackTrace return result public int delBookString id //删除 try DBConn dbConn new DBConn int result dbConn.executeUpdatequotdelete from book where idquot id dbConn.close return result catch Exception e e.printStackTrace return 0 public Book getBookByIdString id //根据 id 得到唯一的一条记录常用于修改调用 try DBConn dbConn new DBConn StringBuffer sql new StringBuffer.