J2EE如何实现分页

这篇文章主要为大家展示了“J2EE如何实现分页”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“J2EE如何实现分页”这篇文章吧。

先说明一下J2EE实现分页所需要用到的文件Pager.java (不用说,肯定是保存分页信息的了),PagerHelper.java(处理页面信息) ,PageTag.java(自定义分页标签),还有一个是pagetag.tld文件,分页标签描述文件.

先帖出这四个文件的源码

1、Pager.java

package org.awc.commns;   /**  * 保存分页信息的类  *   * @author Administrator  *   */ public class Pager {  private int totalRows; // 总行数   private int pageSize; // 每页显示的行数   private int currentPage; // 当前页号   private int totalPages; // 总页数   private int startRow; // 当前页在数据库中的起始行   private String linkUrl; // 要跳转的URL   public Pager() {  }   public Pager(int _totalRows,int _pageSize) {     totalRows = _totalRows;     pageSize = _pageSize;     totalPages = totalRows / pageSize;     int mod = totalRows % pageSize;     if (mod > 0) {      totalPages++;     }     currentPage = 1;     startRow = 0;  }   //此处略去属性的getter和setter方法      /**  * 设定hibernate查询的起始行数  *   * @param currentPage  */  public void setStart(int currentPage) {     this.currentPage = currentPage;     startRow = (currentPage - 1) * pageSize;  }  }

2、PagerHelper.java

import javax.servlet.http.*;   /**  * 控制分页的类  *   * @author Administrator  *   */ public class PagerHelper {   public static Pager getPager(HttpServletRequest httpServletRequest,      int totalRows,int pageSize) {      // 定义pager对象,用于传到页面     Pager pager = new Pager(totalRows,pageSize);      // 从Request对象中获取当前页号     String currentPage = httpServletRequest.getParameter("cpage");      // 如果当前页号为空,表示为***查询该页     // 如果不为空,则刷新pager对象,输入当前页号等信息     if (currentPage != null) {      pager.setStart(Integer.parseInt(currentPage));     }     else {      pager.setStart(1);     }         return pager;  }  }

3、PageTag.java

import java.io.IOException;   import javax.servlet.jsp.JspWriter;  import javax.servlet.jsp.tagext.TagSupport;   public class PageTag extends TagSupport {  /**  *   */ private static final long serialVersionUID = 1L;   private Pager pager;   public int doStartTag() {     try {      JspWriter out = pageContext.getOut();       out.print("第 " + pager.getCurrentPage() + " 页/共 "       + (pager.getTotalPages()) + " 页");       if (pager.getCurrentPage() == 1) {       out.print("[最首页]");       out.print("[上一页]");      }      if (pager.getCurrentPage() != 1) {       out.print("[< a href='" + pager.getLinkUrl()         + "&cpage=1'>最首页< /a>]");       out.print("[< a href='" + pager.getLinkUrl() + "&cpage="        + (pager.getCurrentPage() - 1) + "'>上一页< /a>]");      }       for (int i = pager.getCurrentPage() - 3; i < = pager        .getCurrentPage() + 3; i++) {       if (i < = 0 || i > pager.getTotalPages()) {        continue;       }       if (i == pager.getCurrentPage()) {        out          .print("[< span style='color:#FF0000; border: 1px solid #cccccc; font-weight:bold; width:15px;text-align: center;'> "           + i + " < /span>]");       } else {        out.print("[< a href='" + pager.getLinkUrl() + "&cpage=" + i          + "'> " + i + " < /a>]");       }      }      if (pager.getCurrentPage() == pager.getTotalPages()        || pager.getTotalPages() == 0) {       out.print("[下一页]");       out.print("[最末页]");       }      if (pager.getCurrentPage() != pager.getTotalPages()        && pager.getTotalPages() != 0) {       out.print("[< a href='" + pager.getLinkUrl() + "&cpage="        + (pager.getCurrentPage() + 1) + "'>下一页< /a>]");       out.print("[< a href='" + pager.getLinkUrl() + "&cpage="        + (pager.getTotalPages()) + "'>最末页< /a>]");      }      out.flush();     } catch (IOException ex) {      ex.printStackTrace();     }     return super.SKIP_BODY;  }   public int doEndTag() {     return super.EVAL_PAGE;  }   public void setPager(Pager pager) {     this.pager = pager;  }   public Pager getPager() {     return pager;  }  }

4、pagetag.tld

< !DOCTYPE taglib  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"     "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> < taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor"> < tlib-version>1.0< /tlib-version> < jsp-version>1.2< /jsp-version> < short-name>My Tags< /short-name> < tag>     < name>page< /name>     < tag-class>org.awc.commns.PageTag< /tag-class>< !-- PageTag.java具体项目路径-->     < body-content>empty< /body-content>     < attribute>       < name>pager< /name>       < required>true< /required>       < rtexprvalue>true< /rtexprvalue>       < type>org.awc.commns.Pager< /type>< !-- Pager.java具体项目路径-->     < /attribute> < /tag> < /taglib>

以上四个文件为固定,其余部分代码示例如下:

Action或者Servlet部分:

public ActionForward display(ActionMapping mapping, ActionForm form,      HttpServletRequest request, HttpServletResponse response) {  //不相关代码略去     int totalRows;// 记录总行数     Pager pager = null; // 页面信息     int pageSize = 15;     try {      totalRows = tservice.getTotalRowsBySubType(tsid); // 获取指定主题总行数      pager = PagerHelper.getPager(request, totalRows, pageSize); // 初始化分页对象      pager.setLinkUrl("index.asp?method=display&stid=" + tsid); // 设置跳转路径      request.setAttribute("pb", pager); // 将分页信息保存在Request对象       topicList = tservice.findTopicByStid(tsid, pager); // 根据分页信息查询指定的主题      request.setAttribute("results", topicList);      return mapping.findForward("index");     } catch (Exception e) {      // TODO Auto-generated catch block      e.printStackTrace();     }     return mapping.findForward("fail");  }

JSP 页面部分:

1、在页面开始部分导入标签库文件 :< %@ taglib prefix="page" uri="WEB-INF/pageTld/pagetag.tld"%> –具体路径视具体项目而定

2、在需要加入分页信息的部分加上< page:page pager="${pb}" /> 即可。

以上是“J2EE如何实现分页”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/dev/209267.html

(0)
上一篇 2021年12月7日 18:44
下一篇 2021年12月7日 18:44

相关推荐

发表回复

登录后才能评论