
自定义分页标签的使用.doc
13页JSP扩展 制作自定义分页标签l 分页标签:当查询数据的记录很多的时候,我们通过控制每页显示的记录数来对页面显示友好性进行控制l 显示效果:当第一次进入到该页面的时候,显示为首页记录,比如每页显示5条记录单击下一页图片时,可以翻转到下一页5条记录也操作的过程中,也可以直接跳转到最后一页和第一页l 编码思路:ü 需要实现分页,首先我们需要知道在数据库中如何实现分页SQL语句的拼写:select top 5 emp_id,fname,minit,lname,job_id,job_lvl,pub_id,hire_date from employee where emp_id not in (select top 5 emp_id from employee order by emp_id desc) order by emp_id descselect * from (select rownum rn,isbn,title,editionnumber,copyright,publisherid,imagefile,price from titles )where rn > 1*5 and rn <=2*5 (Oracle) 在该SQL语句中,关键的代码是红色代码部分,其中top5是指每页可以查询的记录条数,而主查询中的not in 是指排除子查询中的记录条数。
如果每次进行查询时,都可以有规律的对子查询中的记录进行排除查询,那么我们就可以很快得到下一页,上一页,首页和尾页的5条记录了注意:order by 非常重要,不管是在子查询还是在主查询中,都必须对记录进行排序,或则,当页数发生改变时,不能准确定位到下一页的5条记录ü 代码实现思路利用自定义标签实现分页标签的全部思路分页标签要定义的几个部分:PageTag.java:TagSupport的实现子类在该类的doStartTag()方法中,我们要实现对页面分页标签的所有涉及参数初始值的设置这些初始值包括://该变量存当前页码的值 String pageIndexSessionName = ""; //该变量存表的记录总数的值 String rowCountSessionName = ""; //该变量存有每页显示多少记录的值 String pageNumberSessionName = ""; //每页记录数 int pagePerNumber = 0; //表的总记录数 int pageAllNumber = 1; //当前页码 int pageCurrentIndex = 0; //首页索引 int pageFirstIndex = 0; //上一页索引 int pageUpIndex = 0; //下一页索引 int pageDownIndex = 0; //末页索引 int pageLastIndex = 0; //表的总页数 int pageShowNumber = 0;doAfterBody()方法中用输出流的方式为客户端输出标签样式,其中标签的主要实现的HTML代码如下:
![]() ![]() ![]() ![]() |
ü 标签已经完成,结合前面说明的数据库查询语句,我们就可以进行分页标签的使用了l 实现环节:(全部代码)ü 第一步:(1)建立一个标签文件:PageTag.java,实现主要的分页数据计算,和页面分页样式的显示功能所有页面可以直接引用该分页标签该类实现TagSupport的继承public class PageTag extends TagSupport(2)在类中方法之前定义需要计算的所有页面数据成员变量://该变量存当前页码的值 String pageIndexSessionName = ""; //该变量存表的记录总数的值 String rowCountSessionName = ""; //该变量存有每页显示多少记录的值 String pageNumberSessionName = ""; //每页记录数 int pagePerNumber = 0; //表的总记录数 int pageAllNumber = 1; //当前页码 int pageCurrentIndex = 0; //首页索引 int pageFirstIndex = 0; //上一页索引 int pageUpIndex = 0; //下一页索引 int pageDownIndex = 0; //末页索引 int pageLastIndex = 0; //表的总页数 int pageShowNumber = 0;(3)在doStartTag()方法中定义所有页面参数的初始化过程。
//读取初始参数值 public int doStartTag() throws JspException { HttpSession session = pageContext.getSession(); //当前页码的值 String currentPage = (String) session.getAttribute( "pageIndexSessionName"); if (currentPage == null || currentPpareTo("") == 0) { currentPage = "0"; } //转换当前页码的值给成员变量pageCurrentIndex(当前页面) pageCurrentIndex = Integer.parseInt(currentPage); //表的记录总数 String rowCount = (String) session.getAttribute("rowCountSessionName"); if (rowCount == null || rowCpareTo("") == 0) { rowCount = "0"; } //转换表的总记录数的值给成员变量pageAllNumber pageAllNumber = Integer.parseInt(rowCount); //每页页面记录数量 String perRecordNumber = (String) session.getAttribute( "pageNumberSessionName"); if (perRecordNumber == null || perRecordNpareTo("") == 0) { perRecordNumber = "0"; } pagePe。












