当前位置: 首页 > 图文教程 > 网络编程 > JSP > 一个实用的JSP分页代码

JSP
GET 方式提交的含有特殊字符的参数
java big5到gb2312的编码转换
java Lucene 中自定义排序的实现
hibernate中的增删改查实现代码
jsp 定制标签(Custom Tag)
jsp基础速成精华讲解
IE cache缓存 所带来的问题收藏
关于JSP的一点疑问小结
JSP 多条SQL语句同时执行的方法
jsp include文件时的一个乱码解决方法
在JSTL EL中处理java.util.Map,及嵌套List的情况
jsp 页面显示的一些用法
根据Hibernte的cfg文件生成sql文件
五种 JSP页面跳转方法详解
JSP 防范SQL注入攻击分析
JSP 连接MySQL配置与使用
java eclipse 启动参数
jsp 页面上图片分行输出小技巧
解决jsp开发中不支持EL问题
JSP 页面中使用FCKeditor控件(js用法)

一个实用的JSP分页代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 113 ::
收藏到网摘: n/a

有一个页面请求action,action调用分页实现类,然后到显示分页页面 1.以下是实现分页的类PageResultSet
package page.bean;
import java.util.*;
public class PageResultSet {
/**
* 分页数据
*/
private Collection data = null;
/**
* 当前页
*/
private int curPage;
/**
* 每页显示的记录数
*/
private int pageSize;
/**
* 记录行数
*/
private int rowsCount;
/**
* 页数
*/
private int pageCount;
public PageResultSet(Collection data) {
this.data = data;
this.curPage = 1;
this.pageSize = 10;
this.rowsCount = data.size();
this.pageCount = (int) Math.ceil((double) rowsCount / pageSize);
}
public PageResultSet(Collection data, int curPage) {
this.data = data;
this.curPage = curPage;
this.pageSize = 10;
this.rowsCount = data.size();
this.pageCount = (int) Math.ceil((double) rowsCount / pageSize);
}
public PageResultSet(Collection data, int curPage, int pageSize) {
this.data = data;
this.curPage = curPage;
this.pageSize = pageSize;
this.rowsCount = data.size();
this.pageCount = (int) Math.ceil((double) rowsCount / pageSize);
}
/**
* getCurPage:返回当前的页数
*
* @return int
*/
public int getCurPage() {
return curPage;
}
/**
* getPageSize:返回分页大小
*
* @return int
*/
public int getPageSize() {
return pageSize;
}
/**
* getRowsCount:返回总记录行数
*
* @return int
*/
public int getRowsCount() {
return rowsCount;
}
/**
* getPageCount:返回总页数
*
* @return int
*/
public int getPageCount() {
return pageCount;
}
/**
* 第一页
*
* @return int
*/
public int first() {
return 1;
}
/**
* 最后一页
*
* @return int
*/
public int last() {
return pageCount;
}
/**
* 上一页
*
* @return int
*/
public int previous() {
return (curPage - 1 < 1) ? 1 : curPage - 1;
}
/**
* 下一页
*
* @return int
*/
public int next() {
return (curPage + 1 > pageCount) ? pageCount : curPage + 1;
}
/**
* 第一页
*
* @return boolean
*/
public boolean isFirst() {
return (curPage == 1) ? true : false;
}
/**
* 最后一页
*
* @return boolean
*/
public boolean isLast() {
return (curPage == pageCount) ? true : false;
}
/** * 获取当前页数据
*
* @return Collection
*/
public Collection getData() {
Collection curData = null;
if (data != null) {
int start = (curPage - 1) * pageSize;
int end = 0;
if (start + pageSize > rowsCount)
end = rowsCount;
else
end = start + pageSize;
ArrayList arrayCurData = new ArrayList();
ArrayList arrayData = null;
Vector vectorCurData = new Vector();
Vector vectorData = null;
boolean isArray = true;
if (data instanceof ArrayList) {
arrayData = (ArrayList) data;
isArray = true;
} else if (data instanceof Vector) {
vectorData = (Vector) data;
isArray = false;
}
for (int i = start; i < end; i++) {
if (isArray) {
arrayCurData.add(arrayData.get(i));
} else {
vectorData.add(vectorData.elementAt(i));
}
}
if (isArray) {
curData = (Collection) arrayCurData;
} else {
curData = (Collection) vectorCurData;
}
}
return curData;
}
/**
* 获取工具条
*
* @return String
*/
public String getToolBar(String fileName) {
String temp = "";
if (fileName.indexOf("?") == -1) {
temp = "?";
} else {
temp = "&";
}
String str = "<form method='post' name='frmPage' action='" + fileName + "'>";
str += "<p align='center'>";
if (isFirst())
str += "首页 上一页 ";
else {
str += "<a href='" + fileName + temp + "cur_page=1'>首页</a> ";
str += "<a href='" + fileName + temp + "cur_page=" + (curPage - 1) + "'>上一页</a> ";
}
if (isLast())
str += "下一页 尾页 ";
else {
str += "<a href='" + fileName + temp + "cur_page=" + (curPage + 1) + "'>下一页</a> ";
str += "<a href='" + fileName + temp + "cur_page=" + pageCount + "'>尾页</a> ";
}
str += " 共<b>" + rowsCount + "</b>条记录 ";
str += " 转到<select name='page' onChange="location='" + fileName
+ temp + "cur_page='+this.options[this.selectedIndex].value">";
for (int i = 1; i <= pageCount; i++) {
if (i == curPage)
str += "<option value='" + i + "' selected>第" + i + "页</option>";
else
str += "<option value='" + i + "'>第" + i + "页</option>";
}
str += "</select></p></form>";
return str;
}
}
2.一下是Action
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package struts.action;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import page.bean.DatabaseConn;
import page.bean.PageResultSet;
import page.bean.ContactBO;
import struts.form.LoginForm;
/**
* MyEclipse Struts
* Creation date: 04-02-2008
*
* XDoclet definition:
* @struts.action path="/login" name="loginForm" input="/login.jsp" scope="request" validate="true"
* @struts.action-forward name="sss" path="/index.jsp"
*/
public class LoginAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
ContactBO userBO=new ContactBO();
//先从业务处理逻辑类中取出数据(ArrayList或Vector格式)
Collection data;
try {
data = userBO.findContact(DatabaseConn.getConnection());
//再得到当前页curPage和每页记录数pageSize
//int curPage = Integer.parseInt((String)request.getParameter("cur_page"));
int curPage = 1;
String cur = request.getParameter("cur_page");
System.out.println("--------------: "+cur);
if(cur!=null && cur !=""){
curPage = new Integer(cur).intValue();
}
int pageSize=10;
//然后生成PageResultSet对象
PageResultSet dataList = new PageResultSet(data, curPage, pageSize);
request.setAttribute("usersList", dataList);
return mapping.findForward("sss");
} catch (Exception e) {
e.printStackTrace();
return mapping.getInputForward();
}
}
}
有一个页面请求action,action调用分页实现类,然后到显示分页页面
3.以下是显示分页的页面
<%@ page language="java" import="java.util.*,page.bean.Contact,page.bean.PageResultSet"
pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<table border="1">
<%
PageResultSet pageResultSet = (PageResultSet) request.getAttribute("usersList");
ArrayList usersList = (ArrayList) pageResultSet.getData();
for (int i = 0; i < usersList.size(); i++) {
Contact co = (Contact) usersList.get(i);
%>
<tr>
<td>
<%=co.getId() %>
</td>
<td>
<a href="login.do?id=<%=co.getId()%>"><%=co.getUsername()%></a>
</td>
<td>
<%=co.getMobile() %>
</td>
<td>
<%=co.getMail() %>
</td>
<td>
<%=co.getPhone() %>
</td>
<td>
<%=co.getMem() %>
</td>
<td>
<%=co.getLastcontact() %>
</td>
</tr>
<%
}
%>
</table>
<!-- 显示分页工具栏 -->
<%=pageResultSet.getToolBar("login.do")%>
</body>
</html>