JSP通用分页程序(测试版)

转载 2007年10月12日 13:00:00

最终效果图:

1.分页类:

---------------------------------------------------------------------------------------------

package cn.lingqi.tool;

import java.io.Serializable;
import java.util.ArrayList;

public class PageFunction implements Serializable{
 private int page; //当前页码
 private int totalCount; //总记录数
 private int pageSie = 10; //每页条数
 private int barSize = 10; //每bar显示页数
 
 public PageFunction(){}
 public PageFunction(int page, int totalCount, int pageSie, int barSize) {
  super();
  this.page = page;
  this.totalCount = totalCount;
  this.pageSie = pageSie;
  this.barSize = barSize;
 }


 public int getBarSize() {
  return barSize;
 }


 public void setBarSize(int barSize) {
  this.barSize = barSize;
 }


 public int getPage() {
  return page;
 }


 public void setPage(int page) {
  this.page = page;
 }


 public int getPageSie() {
  return pageSie;
 }


 public void setPageSie(int pageSie) {
  this.pageSie = pageSie;
 }


 public int getTotalCount() {
  return totalCount;
 }


 public void setTotalCount(int totalCount) {
  this.totalCount = totalCount;
 }


 public ArrayList paging(){
  int page = this.page;
  if (page == 0){
   page =1;
  }
  if (page == (getpageCount()+1)){
   page = getpageCount();
  }
  int pageSize = this.pageSie;
  int total = this.totalCount;
  int barSize = this.barSize;
  ArrayList mypa = new ArrayList();
  int pageCount = (total-1)/pageSize+1;//总页数
  int barPageCount = (pageCount-1)/barSize+1; //bar的总页数
  int currentBar = (page-1)/barSize+1; //当前bar号
  if (page == pageCount ||currentBar==barPageCount){//判断当前bar是否最后页 或 当前页是否最后页
   int xx = pageCount%barSize ; //最后页bar记录数
   int i = (page-1)/barSize; //获取前面N-1页bar数
   for (int j=0;j<xx;j++){
    mypa.add(barSize*i+(j+1)); //最后页bar的页码数
    //mypa[j]=j;
   }
  }else{
  int i = (page-1)/barSize; //获取前面N-1页bar数
  for (int ii=0;ii<barSize;ii++){
   mypa.add(barSize*i+(ii+1)); //最后页bar的页码数
  }
  }
  return mypa;
 }
 
 public int getBarCount(){
  int pageSize = this.pageSie;
  int total = this.totalCount;
  int pageCount = (total-1)/pageSize+1;//总页数
  int barPageCount = (pageCount-1)/barSize+1; //bar的总页数
  return barPageCount;
 }
 
 public int getpageCount(){
  int pageSize = this.pageSie;
  int total = this.totalCount;
  int pageCount = (total-1)/pageSize+1;//总页数
  return pageCount;
 }
 
 public int getCurrentBar(){ //获得当前页所在的bar号
  int page = this.page;
  int barSie = this.barSize;
  return (page-1)/barSize+1;
 }
}

2.实现分页的page.jsp:

---------------------------------------------------------------------------------------------


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<table width="100%">
  <tr>
    <td><div align="right">
    <logic:notEqual name="nowpage" value="1">
    <a href="./newsOption.do?method=findpage&page=1&pageType=first">最前页</a>
    </logic:notEqual>
    <logic:notEqual name="currentBar" value="1">
    <a href="./newsOption.do?method=findpage&currentBar=${currentBar}&barType=pre">上十页</a>
    </logic:notEqual>
    <logic:iterate id="mylist" name="pageList" scope="session">

 <a href="./newsOption.do?method=findpage&page=<bean:write name="mylist"/>"> <font color='<logic:equal name="nowpage" value="${mylist}">red</logic:equal>'><bean:write name="mylist"/></font></a>
 </logic:iterate>
 <logic:notEqual name="currentBar" value="${barcount}">
 <a href="./newsOption.do?method=findpage&currentBar=${currentBar}&barType=next">下十页</a>
 </logic:notEqual>
 <logic:notEqual name="nowpage" value="${pagecount}">
 <a href="./newsOption.do?method=findpage&page=${pagecount}&pageType=last">最后页</a>
 </logic:notEqual>
 </div></td>
  </tr>
</table>

 

3.第一次登陆调用的代码

---------------------------------------------------------------------------------------------------

PageFunction pf = new PageFunction();
   NewsFormDAO ndao = new NewsFormDAO();
   pf.setTotalCount(ndao.newsCount());
   pf.setPage(1);
   ArrayList listNews = (ArrayList) ndao.queryPage(1, pf.getPageSie());
   int currentBar = (pf.getPage()-1)/pf.getBarSize()+1;
   session.setAttribute("currentBar",currentBar); //当前bar号
   session.setAttribute("listNews", listNews);
   session.setAttribute("pageList", pf.paging()); //当前bar中的页号列表
   session.setAttribute("nowpage",1); //当前页号
   session.setAttribute("barcount",pf.getBarCount()); //bar总页数
   session.setAttribute("pagecount",pf.getpageCount()); //总页数

4.由page.jsp触发的代码

------------------------------------------------------------------------------------------------------

public ActionForward findPage(
   ActionMapping mapping,
   ActionForm form,
   HttpServletRequest request,
   HttpServletResponse response) {
  HttpSession session = request.getSession();
  PageFunction pf = new PageFunction();
  NewsFormDAO ndao = new NewsFormDAO();
  String currentBar = request.getParameter("currentBar");
  String barType = request.getParameter("barType");
  String pagetemp = request.getParameter("page");
  String pageType = request.getParameter("pageType");
  int  nowCurrentBar= 0 ;
  int page = 0;
  pf.setTotalCount(ndao.newsCount());
  if ("next".equals(barType)&&!"".equals(currentBar)){
   page = Integer.parseInt(currentBar)*pf.getBarSize()+1;
   nowCurrentBar = Integer.parseInt(currentBar)+1;
   if (nowCurrentBar == pf.getBarCount()){
    nowCurrentBar = pf.getBarCount();
   }
  }
  if ("pre".equals(barType)&&!"".equals(currentBar)){
   page = (Integer.parseInt(currentBar)-1)*pf.getBarSize();
   nowCurrentBar = Integer.parseInt(currentBar)-1;
   if (nowCurrentBar==1){
    nowCurrentBar=1;
   }
  }
  if (!"".equals(pagetemp)&&pagetemp!=null){
   page = Integer.parseInt(pagetemp);
  }
  if ("first".equals(pageType)){
   nowCurrentBar =1;
  }
  if ("last".equals(pageType)){
   nowCurrentBar =pf.getBarCount();
  }
  pf.setPage(page);

  if ((!"".equals(pageType)||pageType==null)&&(!"".equals(barType)||barType==null)){
   nowCurrentBar = pf.getCurrentBar();
  }
  ArrayList listNews = (ArrayList) ndao.queryPage(page, pf.getPageSie());
  session.setAttribute("listNews", listNews);
  session.setAttribute("pageList", pf.paging());
  session.setAttribute("currentBar", nowCurrentBar);
  session.setAttribute("nowpage",page);
  //int currentBar = (pf.getPage()-1)/pf.getBarSize()+1;
  //session.setAttribute("currentBar",currentBar);
  return mapping.findForward("pageList");
  
 }

 

JSP 分页公用控件

工作几年,做的项目挺多,发现 差不多每个项目前端分页用的控件都不太一样,但都差不多。所以本人把分页控件做下记录,以供以后自己用。                     首先,JSP页面端   ...
  • bruce_wenf
  • bruce_wenf
  • 2015年03月16日 17:14
  • 680

jsp自定义分页标签page

日常工作项目里,分页是十分常见的,网上也有大把的分页插件,性能和美观程度都比较不错,但是有时候并不一定能满足我们的需求,因为大部分的分页插件都是在客户端分页,有的甚至需要你一次性查询出所有的数据放入内...
  • johnjobs
  • johnjobs
  • 2013年03月11日 16:16
  • 2331

jsp分页查询及显示

%@page import="com.hyb.util.Page"%> %@page import="com.hyb.biz.News"%> %@page import="com.hyb.biz....
  • han_ying_ying
  • han_ying_ying
  • 2014年12月20日 10:07
  • 1002

jsp实现分页(限定显示指定页数)和页面跳转功能

本文主要介绍在jsp中实现分页功能和页面跳转功能,能够实现数据的分页显示和跳转到指定页面的功能,具体效果如图                         由于该功能是一个书城项目的一部分,所以数...
  • pyy542718473
  • pyy542718473
  • 2017年05月19日 19:35
  • 3306

JQuery插件——通用分页组件

在实际项目开发中,通用的分页组件是必不可少的。下面描述的是关于JavaScript版的分页组件。该组件是基于jquery之上开发的。        该组件包括        jquery-...
  • hsany330
  • hsany330
  • 2016年01月14日 20:53
  • 1320

PageHelper分页插件使用

需要的jar包 com.github.pagehelper pagehelper 4.0.1 插件的配置 ...
  • nz360
  • nz360
  • 2016年08月26日 10:54
  • 650

Mybatis分页助手和通用Mapper的使用

1、Mybatis分页助手的简介      1.1 Mybatis分页助手简介            1.2 详细介绍 https://www.oschina.net/p/mybatis_pageh...
  • zbw18297786698
  • zbw18297786698
  • 2016年12月30日 19:54
  • 5788

jsp通用高大上分页

分页效果650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/7A/24/wKiom1ajJtawuMhbAAATQuF_jYU555.p...
  • jethai
  • jethai
  • 2016年08月28日 14:09
  • 210

JSP通用分页框架

转载自:http://blog.csdn.net/u012706811/article/details/50685355 写一个通用的分页框架,这样一个项目里面如果想做分页,只需要改动少数参...
  • u012377333
  • u012377333
  • 2016年02月27日 14:02
  • 1743

Jsp页面分页技术实现文档

Jsp页面分页技术实现文档 分页的设计思路: 1.1:在jsp中直接分页      这种分页方法将分页代码统一编写在jsp中,开发比较简单,但是在页面比较多的时候维护起来比较麻烦复杂。 1.2...
  • lidongya1181
  • lidongya1181
  • 2016年06月28日 16:31
  • 2157
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSP通用分页程序(测试版)
举报原因:
原因补充:

(最多只允许输入30个字)