java ee中实现翻页 博客分类: JAVA EE java算法servletjsporacle
程序员文章站
2024-03-21 21:52:16
...
今日学习笔记(老师给写好的):
1.在jsp加分页的格式:
2.在数据传输层定义一个类,其中两个为输入项,两个为返回值
3.在需要分页的dao里传入翻页参数,并且根据简单算法计算每页开始和结尾的值,传入BaseDao的executeQuery方法:
4.在连接数据库基础类里面加上三个方法:
5.在需要将值传到分页页面的servlet中new一个分页参数,对其进行判断,最后通过jsp显示出来:
1.在jsp加分页的格式:
<table id="tblTurnPage" cellSpacing="0" cellPadding="1" width="100%" border="0" style="font-family:arial;color:red;font-size:12px;"> <tr> <td>总记录数:${RecordAllCount}</td> <td>总页数:${PageAllCount}</td> <td>当前页:${CurrentPageNo}</td> <td>[url=BuyRecordSvl?page=1]首页|[/url] [url=BuyRecordSvl?page=${CurrentPageNo-1}]《上一页|[/url] [url=BuyRecordSvl?page=${CurrentPageNo+1}]下一页》|[/url] [url=BuyRecordSvl?page=${PageAllCount}]末页|[/url]</td> <td>跳转到:第<input type="text" size="3" >页<input type="button" value="go"></td> </tr> </table>
2.在数据传输层定义一个类,其中两个为输入项,两个为返回值
public class TurnPagePara { //翻页参数 public int CurrentPageNo = 1;//当前要显示的页码-----输入项-----------------------页号从1开始 public int OnePageCount = 8; //每页要显示的记录数(默认值为8)---输入项 public int RecordAllCount; //记录总数 ----返回值 public int PageAllCount; //共有多少页 }
3.在需要分页的dao里传入翻页参数,并且根据简单算法计算每页开始和结尾的值,传入BaseDao的executeQuery方法:
tp.RecordAllCount = this.getRecCount(sql); //返回总记录数和总页数 tp.PageAllCount = (tp.RecordAllCount-1)/tp.OnePageCount + 1; if(tp.CurrentPageNo>tp.PageAllCount) tp.CurrentPageNo = tp.PageAllCount; int isStart = (tp.CurrentPageNo-1)*tp.OnePageCount + 1; int isEnd = isStart + tp.OnePageCount; ResultSet rs=executeQuery(sql,isStart,isEnd);
4.在连接数据库基础类里面加上三个方法:
//根据翻页参数,获得需要的结果集(oracle) iStart从1开始>=iStart; <iEnd public ResultSet executeQuery(String strSql,int iStart,int iEnd){ ResultSet rs = null; try{ Statement st = conn.createStatement(); if(st != null){ String strNew = "select * from (select rownum numrow,tb.* from ( " + strSql + " ) tb ) where numrow >=" + iStart + " and numrow<" + iEnd ; rs = st.executeQuery(strNew); } }catch(SQLException ex){ } return rs; } public int getRecCount(String strSql){ int iRec = 0; //mysql 中必须加别名w String strExe = "SELECT count(*) FROM (" + strSql + ") w"; Object obj = executeScalar(strExe); if(obj != null){ iRec = Integer.parseInt(obj.toString()); } return iRec; } //返回查询结果的第一行第一列的值(---如果没有查询结果,则返回null) public Object executeScalar(String strSql){ ResultSet rs; Object obj; obj = null; rs = null; try{ Statement st = conn.createStatement(); rs = st.executeQuery(strSql); if( rs != null ){ while( rs.next()){ if(rs.isFirst()){ obj = rs.getObject(1); //columnIndex - 第一个列是 1 break; } } rs.close(); } } catch(SQLException ex){ } return obj; }
5.在需要将值传到分页页面的servlet中new一个分页参数,对其进行判断,最后通过jsp显示出来:
String strPageNo = request.getParameter("page"); int pageNo = 1; try { if(strPageNo != null && !strPageNo.equals("")){ pageNo = Integer.parseInt(strPageNo); if( pageNo <1 ) //第一页时选择上一页,pageNo仍然等于1 pageNo = 1; } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } UserBiz biz =new UserBiz(); TurnPagePara tp=new TurnPagePara(); tp.OnePageCount = 10; tp.CurrentPageNo = pageNo;
request.setAttribute("RecordAllCount", tp.RecordAllCount); request.setAttribute("PageAllCount", tp.PageAllCount); request.setAttribute("CurrentPageNo", tp.CurrentPageNo);
推荐阅读
-
java ee中实现翻页 博客分类: JAVA EE java算法servletjsporacle
-
用cookie和session实现自动登录 博客分类: JAVA EE javafilterservlet
-
Java实现可泛型的Heap 博客分类: Accumulation heap算法堆排序
-
用Java EE 5实现的网上书店实例<转> 博客分类: java JavaNetbeansGlassfishJPAJSF
-
Securing Java EE Applications Deployed on GlassFish with OpenDS 博客分类: Java JavaGlassfish
-
Java EE 5.0 SDK Update 2 提供下载 博客分类: Java JavaNetbeansGlassfish企业应用EJB
-
java中 避免过多的使用同步 博客分类: java疑惑 java面向对象编程企业应用面临的问题J2EE开发技术指南 javawaitnotifynotifyAllThread
-
java实现K近邻算法 博客分类: 机器学习 机器学习
-
java实现K近邻算法 博客分类: 机器学习 机器学习
-
JAVA加密算法实现用例 数字签名 博客分类: JDK 算法dsa签名HASH