您现在的位置是:首页 >

分页功能怎么实现 我的struts分页算法的实现

火烧 2022-08-20 12:23:50 1036
我的 trut 分页算法的实现   说到分页算法 一般WEB开发都会用到 我只是在我的实现技术上用了 trut 框架 其实原理都一样的 看了网上相当多的分页算法 有对的也有好多是错的 更有好多是不太优

我的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;  } }

分页功能怎么实现 我的struts分页算法的实现

  在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进行操作 情况类似

lishixinzhi/Article/program/Java/ky/201311/28793  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码