知识大全 我的struts分页算法的实现

Posted 属性

篇首语:弓背霞明剑照霜,秋风走马出咸阳。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 我的struts分页算法的实现相关的知识,希望对你有一定的参考价值。

  说到分页算法 一般WEB开发都会用到 我只是在我的实现技术上用了struts框架 其实原理都一样的 看了网上相当多的分页算法 有对的也有好多是错的 更有好多是不太优化的 还有以前自己在augmentum做的一个分页算法 总结了一些不足 决定重新再写一个分页算法 首先 应该写个bean来记录存储一些页面的属性分页大致需要如下属性  private int currentPage =  ; // 当前页 private int totalPages =  ; // 总页数 private int pageRecorders =  ;// 每页 条数据  private int totalRows =  ; // 总数据数 private int pageStartRow =  ;// 每页的起始数 private int pageEndRow =  ; // 每页显示数据的终止数 private boolean hasNextPage = false; // 是否有下一页 private boolean hasPreviousPage = false; // 是否有前一页  private int nextPage =  ;//下一页的页码  private int previousPage =  ;//上一页的页码然后这些属性之间是有联系的 我们可以在构造函数的时候就初始化一些属性有两种方法 一 根据总的页数 (假设当前页为 ) public PageBean(int totalRows)  this totalRows = totalRows;  this currentPage =  ;  hasPreviousPage = false;  if ((totalRows % pageRecorders) ==  )    totalPages = totalRows / pageRecorders;   else    totalPages = totalRows / pageRecorders +  ;    if (totalRows >= pageRecorders)    hasNextPage = true;   nextPage =  ;   this pageEndRow = pageRecorders;   else    this pageEndRow = totalRows;   hasNextPage = false;   nextPage =  ;     this pageStartRow =  ;     previousPage =  ; 然后在按下一页或者上一页的时候需要如下函数处理 public void nextPage()   if(hasNextPage == true)  currentPage = currentPage +  ;  if ((currentPage    ) >  )    hasPreviousPage = true;   else    hasPreviousPage = false;    if (currentPage >= totalPages)    hasNextPage = false;   this nextPage = currentPage;   else    hasNextPage = true;   nextPage = currentPage+ ;    this pageStartRow = (currentPage  ) * pageRecorders;  if(hasNextPage == true)  this pageEndRow = pageStartRow +  ;  else   this pageEndRow =this totalPages;    previousPage = currentPage    ;   public void previousPage()   if(hasPreviousPage == true)  currentPage = currentPage    ;  if (currentPage ==  )    currentPage =  ;    if (currentPage >= totalPages)    hasNextPage = false;   else    hasNextPage = true;    nextPage = currentPage +  ;  if ((currentPage    ) >  )    hasPreviousPage = true;   previousPage = currentPage    ;   else    hasPreviousPage = false;   previousPage = currentPage;      this pageStartRow = (currentPage  ) * pageRecorders;  if(hasNextPage == true)  this pageEndRow = pageStartRow +  ;  else   this pageEndRow =this totalPages;   

  在HTML中按下一页或者上一页的时候有如下代码 <logic:equal name= page  property= hasNextPage  value= true ><:link page= /List do?action=nextPage >nextPage</:link></logic:equal><logic:equal name= page  property= hasPreviousPage  value= true ><:link page= /List do?action=previousPage >PreviousPage</:link></logic:equal>然后在Action中作如下处理     String currentPage = request getParameter( currentPage );  HttpSession session = request getSession();   EmployeeForm employeeForm = (EmployeeForm) form;  String queryString = null;  String queryCon = null;  String action = employeeForm getAction();  List list = new ArrayList();  PageBean pb = null;  EmployeeDao employeeDao = new EmployeeDao();  if(action == null || action equals( null ))   int totalRows = employeeDao getTotalRows();      pb = new PageBean(totalRows);    session removeAttribute( page );    queryString = employeeForm getQueryString();    queryCon = employeeForm getQueryCon();    session setAttribute( queryString queryString);    session setAttribute( queryCon queryCon);       list = employeeDao getAllEmployee(queryString  queryCon       String valueOf(pb getPageStartRow())       String valueOf(pb getPageRecorders()));         else if(action equals( nextPage ))   queryString = (String)session getAttribute( queryString );   queryCon = (String)session getAttribute( queryCon );         employeeForm setQueryString(queryString);   employeeForm setQueryCon(queryCon);   pb = (PageBean)session getAttribute( page );   pb nextPage();   list = employeeDao getAllEmployee(queryString  queryCon      String valueOf(pb getPageStartRow())      String valueOf(pb getPageRecorders()));  else if(action equals( previousPage ))   queryString = (String)session getAttribute( queryString );   queryCon = (String)session getAttribute( queryCon );   employeeForm setQueryString(queryString);   employeeForm setQueryCon(queryCon);   pb = (PageBean)session getAttribute( page );      pb previousPage();   list = employeeDao getAllEmployee(queryString  queryCon      String valueOf(pb getPageStartRow())      String valueOf(pb getPageRecorders()));                  pb description();        session setAttribute( page pb);          request setAttribute( admin   admin );  request setAttribute( employee  list);  return mapping findForward( showlist );  然后在数据库查询中有如下代码 /***查询总记录数*/ public int getTotalRows()   int totalRows =  ;  String sql =  select count(*) from employee ;//假设是员工表  Database db = new Database();  ResultSet rs = db executeQuery(sql);  try    while (rs next())     String id = (String) rs getString( );    totalRows = Integer parseInt(id);      catch (SQLException e)    e printStackTrace();    db close();  return totalRows;  /**查询每一页需要查询的页码*/public List getAllEmployee(String queryString  String queryCon String startRow String num)   List list = new ArrayList();  String sql = null;  if (queryString == null || queryString equals( ))    sql =  select * from employee dept   +      where dept Id = employee deptId   +      order by employee id asc +   limit  +startRow+ +num;   else    sql =  select * from employee dept   +      where dept Id = employee deptId order by employee      + queryString +     + queryCon +   limit  +startRow+ +num;    Employee employee = null;  Database db = new Database();  ResultSet rs = db executeQuery(sql);  try    while (rs next())     String id = (String) rs getString( employee id );    String name = (String) rs getString( employee name );    String deptId = (String) rs getString( employee deptId );    String deptName = (String) rs getString( dept deptName );    employee = new Employee();    employee setId(id);    employee setName(name);    employee setDeptId(deptId);    employee setDeptName(deptName);    list add(employee);      catch (SQLException e)    e printStackTrace();    db close();  return list; 这里我用了hibernate进行数据库操作 你也可以用jdbc进行操作 情况类似

cha138/Article/program/Java/ky/201311/28793

相关参考

知识大全 漫谈解决Struts分页显示

漫谈解决Struts分页显示  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  学习Struts已经

知识大全 struts开发实践—分页的实现

  本案主要功能是完成数据集的分页显示示例代码如下    PageInfo类定义分页信息  /******************programbegin***********************

知识大全 Struts2分页实现源码

Struts2分页实现源码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &

知识大全 浅析Hibernate Struts分页

浅析HibernateStruts分页  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Hiber

知识大全 一个高效简洁的Struts分页方法

一个高效简洁的Struts分页方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在网上看了几个

知识大全 浅谈Struts分页中的Hibernate如何实现

浅谈Struts分页中的Hibernate如何实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 Struts 中如何实现查询结果分页显示

Struts中如何实现查询结果分页显示  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  messa

知识大全 浅谈Struts2分页的实现与代码实例

浅谈Struts2分页的实现与代码实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  关于Str

知识大全 用Struts2实现列表显示和分页功能

用Struts2实现列表显示和分页功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下是在前

知识大全 sql存储过程分页算法研究

  “俄罗斯存储过程”的改良版  CREATEprocedurepagination(@pagesizeint页面大小如每页存储条记录@pageindexint当前页码)assetnocountonb