简单CMS项目笔记之一:分页类的实现
2012-12-05 22:20
232 查看
我手上的CMS项目是JSP+Struts2做的,DAO直接是JDBC,这样倒也清晰,弄明白以后再往s2sh上移植吧,最后是jeecms。
一:分页类的实现:(相当于DAOImpl)
计算总页数时候:如果能整除最好,不能整除的项目要显示在最后一页,所以要加1
显示分页导航信息时:如果现在是最后一页的话,就不显示“下一页”和“尾页”了
二:DAO层的分页调用
这样service层调用Dao层的OpCreatePage(String sqlall,Object[] params,int perR,String strCurrentP,String gowhich)方法,把sql、sql语句中的占位参数、每页显示行数、当前分页页码、跳转页码传递进来,DaoImpl去执行
三:jsp显示
显示出组装好的分页信息
需要显示分页信息的时候,这个jsp被其他页面include
一:分页类的实现:(相当于DAOImpl)
计算总页数时候:如果能整除最好,不能整除的项目要显示在最后一页,所以要加1
显示分页导航信息时:如果现在是最后一页的话,就不显示“下一页”和“尾页”了
public class CreatePage { private int CurrentP; //当前页码 private int AllP; //总页数 private int AllR; //总记录数 private int PerR; //每页显示记录数 private String PageLink; //分页导航栏信息 private String PageInfo; //分页状态显示信息 public CreatePage(){ CurrentP=1; AllP=1; AllR=0; PerR=3; PageLink=""; PageInfo=""; } /** 设置每页显示记录数 */ public void setPerR(int PerR){ this.PerR=PerR; } /** 设置总记录数 */ public void setAllR(int AllR){ this.AllR=AllR; } /** 计算总页数 */ public void setAllP(){ AllP=(AllR%PerR==0)?(AllR/PerR):(AllR/PerR+1);//如果能整除最好,不能整除的项目要显示在最后一页,所以要加1 } /** 设置当前页码 */ public void setCurrentP(String currentP) { if(currentP==null||currentP.equals(""))//预防 currentP="1"; try{ CurrentP=Integer.parseInt(currentP); }catch(NumberFormatException e){ CurrentP=1; e.printStackTrace(); } if(CurrentP<1) CurrentP=1; if(CurrentP>AllP) CurrentP=AllP; } /** 设置分页状态显示信息 */ public void setPageInfo(){ if(AllP>1){//用于输出分页显示的提示信息 PageInfo="<table border='0' cellpadding='3'><tr><td>"; PageInfo+="每页显示:"+PerR+"/"+AllR+" 条记录!"; PageInfo+="当前页:"+CurrentP+"/"+AllP+" 页!"; PageInfo+="</td></tr></table>"; } } /** 设置分页导航栏信息 */ public void setPageLink(String gowhich){ if(gowhich==null) gowhich=""; if(gowhich.indexOf("?")>=0)//如果字串里有问号,要补参数 gowhich+="&"; else gowhich+="?";//没问号的话,先补问号 if(AllP>1){ PageLink="<table border='0' cellpadding='3'><tr><td>"; if(CurrentP>1){ PageLink+="<a href='"+gowhich+"showpage=1'>首页</a> "; PageLink+="<a href='"+gowhich+"showpage="+(CurrentP-1)+"'>上一页</a> "; } if(CurrentP<AllP){//如果现在是最后一页的话,就不显示“下一页”和“尾页”了 PageLink+="<a href='"+gowhich+"showpage="+(CurrentP+1)+"'>下一页</a> "; PageLink+="<a href='"+gowhich+"showpage="+AllP+"'>尾页</a>"; } PageLink+="</td></tr></table>"; } }
二:DAO层的分页调用
public CreatePage OpCreatePage(String sqlall,Object[] params,int perR,String strCurrentP,String gowhich){ CreatePage page=new CreatePage();//创建上述分页类 page.setPerR(perR); if(sqlall!=null&&!sqlall.equals("")){ DB mydb=new DB();//这儿的DB相当于DAOImpl mydb.doPstm(sqlall,params); // 是CRUD操作接口 try { ResultSet rs=mydb.getRs(); //获得结果集 if(rs!=null&&rs.next()){ rs.last(); page.setAllR(rs.getRow()); //获得总记录数 page.setAllP(); page.setCurrentP(strCurrentP); page.setPageInfo(); page.setPageLink(gowhich); //目标分页数 rs.close(); } } catch (SQLException e) { System.out.println("OpDB.java/OpCreatePage()方法:创建CreatePage分页类失败!"); e.printStackTrace(); }finally{ mydb.closed(); //因为是JDBC操作的,所以要关一下 } } return page; }
这样service层调用Dao层的OpCreatePage(String sqlall,Object[] params,int perR,String strCurrentP,String gowhich)方法,把sql、sql语句中的占位参数、每页显示行数、当前分页页码、跳转页码传递进来,DaoImpl去执行
三:jsp显示
显示出组装好的分页信息
<%@ taglib uri="/struts-tags" prefix="s2"%> <html> <head><title>分页导航栏</title></head> <body> <table border="0" width="100%" cellspacing="0"> <tr> <td width="60%"><s2:property escape="false" value="#request.createpage.PageInfo"/></td> <td align="center" width="40%"><s2:property escape="false" value="#request.createpage.PageLink"/></td> </tr> </table> </body> </html>
需要显示分页信息的时候,这个jsp被其他页面include
相关文章推荐
- 简单CMS项目笔记之八:后台信息分类筛选模块
- 简单CMS项目笔记之三:搜索栏和自定义superAction
- 简单CMS项目笔记之二:前台页面处理流程
- 简单CMS项目笔记之七:后台登陆登出模块
- 简单Blog项目笔记之九:实现 全选/反选
- 简单CMS项目笔记之六:信息发布模块
- 笔记1-1: 实现一个简单的ls列出目录中的所有项目的程序
- 数据挖掘笔记-基于项目协同过滤推荐的简单实现
- 简单CMS项目笔记之九:后台信息修改、审核、删除
- 简单CMS项目笔记之四:信息显示(列表显示和显示具体单项)
- 简单CMS项目笔记之五:struts标签前台显示
- JFinal学习笔记(四) 实现简单的图片上传
- 设计模式学习笔记一 简单工厂策略模式实现销售策略的变更(一)
- 在项目中远程调用另一个项目的简单实现
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建项目
- 【学习笔记】DM9000裸机驱动(三)之简单ARP协议的实现
- [机器学习]机器学习笔记整理13-线性回归简单实现
- Python小项目四:实现简单的web服务器
- 项目笔记:简单cookies携带信息
- Java项目开发环境构建工具 Gradle 使用笔记(简单、基本)