自定义标签的分页使用(复杂)

本文介绍了一个简单的分页辅助类Pageable的实现方法,该类能够帮助开发者轻松地处理数据库查询结果集的分页展示。通过设置每页显示的记录数及当前页码,可以快速定位到指定页面的数据,并提供了前后页跳转的功能。

 分页使用
1。
<mytag:pagingDisplay />
2。
<tag>
  <name>pagingDisplay</name>
  <tagclass>nm.tag.DisplayTag</tagclass>
  <bodycontent>empty</bodycontent>
  <info> A demo </info>
 </tag>
3。
package nm.tag;
import java.util.Vector;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import nm.Notice;
public final class DisplayTag extends TagSupport {
 private static final long serialVersionUID = 1L;
 public int doEndTag() throws JspException {
  JspWriter out = pageContext.getOut();
  HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
  String strPage = request.getParameter("page");
  int page;
  if (strPage == null || strPage.equals(""))
   page = 1;
  else {
   page = Integer.parseInt(strPage);
  }

  try {
   int pageSize = 2;  //设置每页有几条数据
   Vector noticeVector = Notice.search(pageSize, page);   
   out.println("<table width=/"80%/" border=/"1/" align=/"center/"");
   out.println("<tr align=/"center/" bgcolor=/"#CC99CC/">");
   out.println("<th width=/"35%/">标题</th>");
   out.println("<th width=/"35%/">内容</th>");
   out.println("<th width=/"15%/">修改</th>");
   out.println("<th width=/"15%/">删除</th>");
   out.println("</tr>");
   String title = null;
   String content = null;
   Notice bean = null;
   if(noticeVector!=null&&noticeVector.size()!=0){
   for (int i = 0; i < noticeVector.size(); i++) {
    bean = (Notice) noticeVector.elementAt(i);
    title = bean.getTitle();
    //title = new String(title.getBytes("ISO-8859-1"), "GB2312");

    content = bean.getContent();
   // content = new String(content.getBytes("ISO-8859-1"), "GB2312");

    out.println("<tr align=/"center/" bgcolor=/"#CCFF99/">");
    out.println("<td height=/"80/">" + title + "</td>");
    out.println("<td>" + content + "</td>");
    out.println("<td>"
      + "<a href=/"checkpower.do?functiontype=noticeedit&id="
      + bean.getID() + "/">Edit</a> " + "</td>");
    out
      .println("<td>"
        + "<a href=/"checkpower.do?functiontype=noticedelete&id="
        + bean.getID() + "/">Delete</a> " + "</td>");
    out.println("</tr>");
    
   }
   out.println("<tr align=/"right/" bgcolor=/"#CCFF66/">");
   out.println("<th colspan=/"4/">");
   if(page!=-1){
   out.println("<a href=/"noticelistjsp.do?page=-1/">首页</a> ");
   }
   out.println("<a href=/"noticelistjsp.do?page=-2/">上一页</a> ");
  
   out.println("<a href=/"noticelistjsp.do?page=-3/">下一页</a> ");
   if(page!=-4){
   out.println("<a href=/"noticelistjsp.do?page=-4/">尾页</a></th>");
   }
   out.println("</tr>");
   }

   out.println("</table>");
  } catch (Exception ex) {
   throw new JspTagException("IOException:" + ex.toString());
  }

  return super.doEndTag();
 }
}

4。
package nm;

import java.sql.ResultSet;
import java.sql.SQLException;

public class Pageable {
 private int pageSize;
 private int totalRows;
 private int totalPages;
 private static int currentPage;
 private int rowsCount;
 public Pageable(ResultSet rs) {
  try {
   rs.last();
  } catch (SQLException e) {
   e.printStackTrace();
  }
  try {
   this.setTotalRows(rs.getRow());
  } catch (SQLException e1) {
   e1.printStackTrace();
  }
  try {
   rs.beforeFirst();
  } catch (SQLException e2) {
   e2.printStackTrace();
  }
 }

 public void setPageSize(int pageSize) {
  if (pageSize > 0) {
   this.pageSize = pageSize;
  } else {
   this.pageSize = 1;
  }

  this.setTotalPages();
 }

 public void gotoPage(int page) {
  switch (page) {
  case -1:
   this.setCurrentPage(1);
   break;
  case -2:
   if (this.getCurrentPage() != 1) {
    this.setCurrentPage(this.getCurrentPage() - 1);
   } else {
    this.setCurrentPage(1);
   }
   break;
  case -3:
   if (this.getCurrentPage() != this.getTotalPages()) {
    this.setCurrentPage(this.getCurrentPage() + 1);
   } else {
    this.setCurrentPage(this.getTotalPages());
   }
   break;
  case -4:
   this.setCurrentPage(this.getTotalPages());
   break;
  default:
   this.setCurrentPage(page);
  }
 }

 
 public void setCurrentPage(int page) {

  if (page <= 0)
   Pageable.currentPage = 1;
  
  if (page > this.getTotalPages())
   Pageable.currentPage = this.getTotalPages();
  else
   Pageable.currentPage = page;

  
  this.setRowsCount((Pageable.currentPage - 1) * this.getPageSize() + 1);
 }

 public int getCurrentPageRowsCount() {
  if (this.getPageSize() == 0)
   return this.getTotalRows();
  if (this.getTotalRows() == 0)
   return 0;
  if (this.getCurrentPage() != this.getTotalPages())
   return this.getPageSize();

  return this.getTotalRows() - (this.getTotalPages() - 1)
    * this.getPageSize();
 }

 public int getPageSize() {
  return this.pageSize;
 }

 
 public int getTotalRows() {
  return totalRows;
 }

 public void setTotalRows(int totalRows) {
  this.totalRows = totalRows;
 }

 
 public int getRowsCount() {
  return rowsCount;
 }

 public void setRowsCount(int rowsCount) {
  this.rowsCount = rowsCount;
 }

 public int getCurrentPage() {
  return currentPage;
 }

 
 public int getTotalPages() {
  return this.totalPages;
 }

 
 public void setTotalPages() {
  if (this.getTotalRows() == 0) {
   this.totalPages = 0;
  } else if (this.getPageSize() == 0) {
   this.totalPages = 1;
  } else {
   if (this.getTotalRows() % this.getPageSize() != 0)
    this.totalPages = this.getTotalRows() / this.getPageSize() + 1;
   else
    this.totalPages = this.getTotalRows() / this.getPageSize();
  }
 }

 public void pageFirst() throws java.sql.SQLException {
  this.setRowsCount((this.getCurrentPage() - 1) * this.getPageSize() + 1);
 }


 public void pageLast() throws java.sql.SQLException {
  this.setRowsCount((this.getCurrentPage() - 1) * this.getPageSize()
    + this.getCurrentPageRowsCount());
 }

}

 

————————————————————————————

Pageable pgb = new Pageable(rs);
pgb.setPageSize(pageSize);
pgb.gotoPage(page);
if(rs!=null){
   rs.absolute(pgb.getRowsCount());
   }

do {
    if(pgb.getCurrentPageRowsCount()!=0){
     
    id = Integer.parseInt(rs.getString("ID"));
    title = rs.getString("Title");
    content = rs.getString("Content");
    noticeVector.add(new Notice(id, title, content));
    }

    i++;
   } while (rs.next() && i < pgb.getCurrentPageRowsCount());
   

(GOOD)简化一下,我只想使用分页辅助类Pageable.java,不想使用自定义标签。
1。Pageable.java
2
如下
Pageable pgb = new Pageable(rs);
pgb.setPageSize(10);
pgb.gotoPage(2);
if(rs!=null){
rs.absolute(pgb.getRowsCount());
}
do {
if(pgb.getCurrentPageRowsCount()!=0){
     id = Integer.parseInt(rs.getString("ID"));
    title = rs.getString("Title");
    content = rs.getString("Content");
    noticeVector.add(new Notice(id, title, content));
    }

    i++;
   } while (rs.next() && i < pgb.getCurrentPageRowsCount());
   

基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)内容概要:本文围绕“基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究”,介绍了利用Matlab代码实现配电网可靠性的仿真分析方法。重点采用序贯蒙特卡洛模拟法对配电网进行长时间段的状态抽样与统计,通过模拟系统元件的故障与修复过程,评估配电网的关键可靠性指标,如系统停电频率、停电持续时间、负荷点可靠性等。该方法能够有效处理复杂网络结构与设备时序特性,提升评估精度,适用于含分布式电源、电动汽车等新型负荷接入的现代配电网。文中提供了完整的Matlab实现代码与案例分析,便于复现和扩展应用。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及电力行业技术人员,尤其适合从事配电网规划、运行与可靠性分析相关工作的人员; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的基本原理与实现流程;②学习如何通过Matlab构建配电网仿真模型并进行状态转移模拟;③应用于含新能源接入的复杂配电网可靠性定量评估与优化设计; 阅读建议:建议结合文中提供的Matlab代码逐段调试运行,理解状态抽样、故障判断、修复逻辑及指标统计的具体实现方式,同时可扩展至不同网络结构或加入更多不确定性因素进行深化研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值