1.使用MySql数据库建一个表,并添加记录:
-- 删除表
DROP TABLE person ;
-- 建立person表
CREATE TABLE person
(
-- 生成一个流水号,观察显示的记录数
id int AUTO_INCREMENT NOT NULL PRIMARY KEY ,
-- 用户的登陆ID
uid varchar(32) ,
-- 用户的真实姓名
name varchar(32) ,
-- 用户的登陆密码
password varchar(20)
) ;
-- 插入测试数据
INSERT INTO person(uid,name,password) VALUES ('LXH01','李兴华01','MLDN01') ;
INSERT INTO person(uid,name,password) VALUES ('LXH02','李兴华02','MLDN02') ;
INSERT INTO person(uid,name,password) VALUES ('LXH03','李兴华03','MLDN03') ;
INSERT INTO person(uid,name,password) VALUES ('LXH04','李兴华04','MLDN04') ;
INSERT INTO person(uid,name,password) VALUES ('LXH05','李兴华05','MLDN05') ;
INSERT INTO person(uid,name,password) VALUES ('LXH06','李兴华06','MLDN06') ;
INSERT INTO person(uid,name,password) VALUES ('LXH07','李兴华07','MLDN07') ;
INSERT INTO person(uid,name,password) VALUES ('LXH08','李兴华08','MLDN08') ;
INSERT INTO person(uid,name,password) VALUES ('LXH09','李兴华09','MLDN09') ;
INSERT INTO person(uid,name,password) VALUES ('LXH10','李兴华10','MLDN10') ;
INSERT INTO person(uid,name,password) VALUES ('LXH11','李兴华11','MLDN11') ;
INSERT INTO person(uid,name,password) VALUES ('LXH12','李兴华12','MLDN12') ;
INSERT INTO person(uid,name,password) VALUES ('LXH13','李兴华13','MLDN13') ;
INSERT INTO person(uid,name,password) VALUES ('LXH14','李兴华14','MLDN14') ;
INSERT INTO person(uid,name,password) VALUES ('LXH15','李兴华15','MLDN15') ;
INSERT INTO person(uid,name,password) VALUES ('LXH16','李兴华16','MLDN16') ;
INSERT INTO person(uid,name,password) VALUES ('LXH17','李兴华17','MLDN17') ;
INSERT INTO person(uid,name,password) VALUES ('LXH18','李兴华18','MLDN18') ;
INSERT INTO person(uid,name,password) VALUES ('LXH19','李兴华19','MLDN19') ;
INSERT INTO person(uid,name,password) VALUES ('LXH20','李兴华20','MLDN20') ;
INSERT INTO person(uid,name,password) VALUES ('LXH21','李兴华21','MLDN21') ;
INSERT INTO person(uid,name,password) VALUES ('LXH22','李兴华22','MLDN22') ;
INSERT INTO person(uid,name,password) VALUES ('LXH23','李兴华23','MLDN23') ;
2.下面一步步实现我们的分页显示,新建一张jsp页面,先实现基本的将所有数据显示在一张页面中:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>分页显示</title>
</head>
<body>
<center>
<h1>人员列表</h1>
<hr>
<br>
<%
final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
final String DBURL = "jdbc:mysql://localhost/mldn" ;
final String DBUSER = "root" ;
final String DBPASSWORD = "mysqladmin" ;
Connection conn = null ;
%>
<%
try
{
Class.forName(DBDRIVER) ;
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
String sql = "SELECT id,uid,name,password FROM person" ;
PreparedStatement pstmt = null ;
pstmt = conn.prepareStatement(sql) ;
ResultSet rs = pstmt.executeQuery() ;
%>
<table border="1" width="80%">
<tr>
<td>编号</td>
<td>登陆名称</td>
<td>姓名</td>
<td>密码</td>
<td colspan="2">操作</td>
</tr>
<%
int i = 0 ;
while(rs.next())
{
i++ ;
int id = rs.getInt(1) ;
String userid = rs.getString(2) ;
String name = rs.getString(3) ;
String password = rs.getString(4) ;
%>
<tr>
<td><%=id%></td>
<td><%=userid%></td>
<td><%=name%></td>
<td><%=password%></td>
<td>更新</td>
<td>删除</td>
</tr>
<%
}
rs.close() ;
pstmt.close() ;
if(i==0)
{
%>
<tr>
<td colspan="6">没有任何数据!!</td>
</tr>
<%
}
%>
</table>
<%
}
catch(Exception e)
{
%>
<h2>系统出错!!!</h2>
<%
}
finally
{
conn.close() ;
}
%>
</center>
</body>
</html>
//变量i用于判断是否数据库中没有记录
将所有记录都显示在一张页面中,显然并不切实际
3.下面基于该代码逐步实现分页功能
a.定义一个变量记录每页显示的记录数,int lineSize;
b.定义一个变量记录当前的页数,int currentPage;
c.实现首页,上一页,下一页,尾页的按钮定义:
<script language="javaScript">
function openPage(curpage)
{
document.spage.cp.value = curpage ;
// alert(cupage) ;
document.spage.submit() ;
}
</script>
<form name="spage" action="<%=jspUrl%>">
<input type="button" value="首页" onClick="openPage(1)">
<input type="button" value="上一页" onClick="openPage(<%=currentPage-1%>)">
<input type="button" value="下一页" onClick="openPage(<%=currentPage+1%>)">
<input type="button" value="尾页">
<input type="hidden" name="cp" value="">
</form>
d.action中实现的是对本页做提交处理,所以在该页中应该获取一个参数cp,防止第一次传过来的是null所以抛出一个异常:
<%
// 接收传过来的当前页
try
{
currentPage = Integer.parseInt(request.getParameter("cp")) ;
}
catch(Exception e)
{}
%>
e.关键的是,对查询出的结果集的控制,每次最多取出lineSize个记录,在取出之前,先将前几页的记录空出:
<%
int i = 0 ;
for(int x=0;x<(currentPage-1)*lineSize;x++)
{
rs.next();
}
// 对于输出代码之前要求按显示的页数空出
for(int x=0;x<lineSize;x++)
{
if(rs.next())
{
i++ ;
int id = rs.getInt(1) ;
String userid = rs.getString(2) ;
String name = rs.getString(3) ;
String password = rs.getString(4) ;
%>
f.现在我们来实现对最后一页的显示,由于记录数不是固定的因此总页数需要计算得出,首先要算出总记录allRecorders
String sql = "SELECT COUNT(id) from person" ;
pstmt = conn.prepareStatement(sql) ;
ResultSet rs = pstmt.executeQuery() ;
if(rs.next())
{
allRecorders = rs.getInt(1) ;
}
rs.close() ;
pstmt.close() ;
// 计算总页数
pageSize = (allRecorders+lineSize-1)/lineSize ;
**********************************
尾页的动作改为:
<input type="button" value="尾页" onClick="openPage(<%=pageSize%>)">
g.到现在分页显示差不多完成了,还有一个问题就是,当翻至最后一页或第一页时再向后或者向前就会出现异常,解决方法是,在按钮中添加判断语句:
<input type="button" value="首页" onClick="openPage(1)" <%=currentPage==1?"disabled":""%>>
<input type="button" value="上一页" onClick="openPage(<%=currentPage-1%>)" <%=currentPage==1?"disabled":""%>>
<input type="button" value="下一页" onClick="openPage(<%=currentPage+1%>)" <%=currentPage==pageSize?"disabled":""%>>
<input type="button" value="尾页" onClick="openPage(<%=pageSize%>)" <%=currentPage==pageSize?"disabled":""%>>
<input type="hidden" name="cp" value="">
h.用下拉列表实现页间跳转:
跳转到
<select name="selpage" onChange="selOpenPage()">
<%
for(int x=1;x<=pageSize;x++)
{
%>
<option value="<%=x%>" <%=currentPage==x?"selected":""%>><%=x%></option>
<%
}
i.最后代码如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>分页显示</title>
</head>
<body>
<center>
<h1>人员列表</h1>
<hr>
<br>
<%!
final String jspUrl = "list_person_false_05.jsp" ;
%>
<%
// 定义如下分页变量
// 1、定义没页要显示的记录数
int lineSize = 10 ;
// 2、定义一个当前是第几页
int currentPage = 1 ;
// 计算出总页数
int pageSize = 0 ;
// 总记录数 / 每页显示的记录数
int allRecorders = 30 ;
%>
<%
// 接收传过来的当前页
try
{
currentPage = Integer.parseInt(request.getParameter("cp")) ;
}
catch(Exception e)
{}
%>
<%
final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
final String DBURL = "jdbc:mysql://localhost/mldn" ;
final String DBUSER = "root" ;
final String DBPASSWORD = "mysqladmin" ;
Connection conn = null ;
%>
<%
try
{
Class.forName(DBDRIVER) ;
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
PreparedStatement pstmt = null ;
String sql = "SELECT COUNT(id) from person" ;
pstmt = conn.prepareStatement(sql) ;
ResultSet rs = pstmt.executeQuery() ;
if(rs.next())
{
allRecorders = rs.getInt(1) ;
}
rs.close() ;
pstmt.close() ;
// 计算总页数
pageSize = (allRecorders+lineSize-1)/lineSize ;
sql = "SELECT id,uid,name,password FROM person" ;
pstmt = conn.prepareStatement(sql) ;
rs = pstmt.executeQuery() ;
%>
<script language="javaScript">
function openPage(curpage)
{
document.spage.cp.value = curpage ;
// alert(cupage) ;
document.spage.submit() ;
}
function selOpenPage()
{
document.spage.cp.value = document.spage.selpage.value ;
document.spage.submit() ;
}
</script>
<form name="spage" action="<%=jspUrl%>">
<input type="button" value="首页" onClick="openPage(1)" <%=currentPage==1?"disabled":""%>>
<input type="button" value="上一页" onClick="openPage(<%=currentPage-1%>)" <%=currentPage==1?"disabled":""%>>
<input type="button" value="下一页" onClick="openPage(<%=currentPage+1%>)" <%=currentPage==pageSize?"disabled":""%>>
<input type="button" value="尾页" onClick="openPage(<%=pageSize%>)" <%=currentPage==pageSize?"disabled":""%>>
<input type="hidden" name="cp" value="">
<font color="red" size="5"><%=currentPage%></font>
/
<font color="red" size="5"><%=pageSize%></font>
跳转到
<select name="selpage" onChange="selOpenPage()">
<%
for(int x=1;x<=pageSize;x++)
{
%>
<option value="<%=x%>" <%=currentPage==x?"selected":""%>><%=x%></option>
<%
}
%>
</select>
页
</form>
<table border="1" width="80%">
<tr>
<td>编号</td>
<td>登陆名称</td>
<td>姓名</td>
<td>密码</td>
<td colspan="2">操作</td>
</tr>
<%
int i = 0 ;
for(int x=0;x<(currentPage-1)*lineSize;x++)
{
rs.next();
}
// 对于输出代码之前要求按显示的页数空出
for(int x=0;x<lineSize;x++)
{
if(rs.next())
{
i++ ;
int id = rs.getInt(1) ;
String userid = rs.getString(2) ;
String name = rs.getString(3) ;
String password = rs.getString(4) ;
%>
<tr>
<td><%=id%></td>
<td><%=userid%></td>
<td><%=name%></td>
<td><%=password%></td>
<td>更新</td>
<td>删除</td>
</tr>
<%
}
}
rs.close() ;
pstmt.close() ;
if(i==0)
{
%>
<tr>
<td colspan="6">没有任何数据!!</td>
</tr>
<%
}
%>
</table>
<%
}
catch(Exception e)
{
%>
<h2>系统出错!!!</h2>
<%
}
finally
{
conn.close() ;
}
%>
</center>
</body>
</html>
注:代码由李兴华提供。
下载地址:
http://download.csdn.net/source/575919
发表评论
-
java面试总结(1)——基础知识
2012-07-05 15:54 8671、什么是多态? 多态,父类的引用指向子类的对象,使父类的引 ... -
递归-组合(用背包问题解)
2011-04-01 21:23 749求指定数据的组合,这里的指定数据用一个数组模拟所有可以选择 ... -
Servlet和JSP的线程安全问题
2011-03-25 10:50 773不要定义servlet的类变量,不要使用jsp中的s ... -
Java同步机制浅谈―synchronized
2011-03-25 10:20 991Java对多线程的支持 ... -
代码复用的规则
2011-03-24 17:25 650李炜 北京杰合伟业软件公司产品技术部经理2001 年 7 ... -
java多进程——Java Multiple process (PID)
2011-03-24 10:48 1539Java的多进程运行模式分析 一般我们在java中运行其 ... -
用JSP实现假分页
2008-08-08 10:29 7361.使用MySql数据库建一个表,并添加记录: -- 删除表 ... -
用MVC模式实现真分页
2008-08-23 21:01 526·我们在之前代码上实现一个搜索框 输入查询关键字:< ... -
位运算符
2008-08-24 19:35 339Java 定义的位运算(bitwise operators ) ... -
struts高级技术——解决重复提交和上传文件
2008-08-24 19:44 435·解决重复提交的工具——Token令牌<?xml:nam ... -
从class.forName()说java中的reflection(反射/映像)
2008-09-21 21:19 530先通过我们一个熟悉的例子来说明: 使用JDBC时,我们都会很 ... -
eclipse 自动补全的设置,不用按 alt-/ 了
2011-03-23 11:07 702偶然间看到了这个,或许有和我一样不喜欢按 alt-/ 兄弟用得 ... -
用MVC模式实现真分页
2008-08-23 21:01 1156·我们在之前代码上实现一个搜索框 输入查询关键字:< ... -
位运算符
2008-08-24 19:35 751Java 定义的位运算(bitwise operators ) ... -
java排序大全
2008-08-24 19:42 648java排序大全 插入排序: packag ... -
struts高级技术——解决重复提交和上传文件
2008-08-24 19:44 841·解决重复提交的工具——Token令牌<?xml:nam ... -
从class.forName()说java中的reflection(反射/映像)
2008-09-21 21:19 905先通过我们一个熟悉的例子来说明: 使用JDBC时,我们都会很 ...
相关推荐
用JSP实现的真分页和假分页,环境 Tomcat+mysql
jsp servlet 实现的真分页与假分页,jsp servlet 实现的真分页与假分页
绝对精简的JSP分页,经过本人亲测,绝对好用,方便不想复杂分页的朋友使用。 此分页方法是先将要分页的List对象放在Session中, 然后在页面中,用for循环取出数据。
简单实现真假分页,可以对真假分页都有一定的了解,但是由于时间重忙,没有将分页类封装....
NULL 博文链接:https://cheng330301560.iteye.com/blog/1197815
在jsp文件中,使用简单的javascript技术,实现假分页
JSP+JDBC_真分页(基于Oracle数据库分页)笔记JSP+JDBC_真分页(基于Oracle数据库分页)笔记JSP+JDBC_真分页(基于Oracle数据库分页)笔记
这代码是采用jsp和jdbc实现假分开页,效果不错的,注释非常的全面
本案例重点阐述了J2EE中分页代码的基本实现原理,通过假分页展示分页代码的开发,本章作为分页代码的一个开始单元,为后续代码的基础。 产品:JDK 1.5、Tomcat 5.0、MySQL数据库 技术:JAVA、JSP内置对象、SQL...
首先,提到分页就要先明确一个概念,何为真分页何谓假分页。 假分页:一次性从数据库读出表的所有数据一次性的返回给客户端,由js来控制每一页的显示。 真分页:由程序控制,每一次只返回一页大小的数据,显示到客户端...
很适用的自定义JSP分页标签,完整的源码.在实际项目中,是经常用到的.讲解一下:自定义分页标签实现步骤--1.编写一个分页标签处理类;...顺便补充一下:分页,有真分页(读多少取多少)和假分页(全部读在分页显示)!
真分页、假分页、分页组件 1、 分页算法的用处 2、 分页算法的实现:真分页、加分页 3、 将分页代码形成组件 基于Mysql数据库以及Oracle数据库都有详细的讲解
|-第2节 分页实现(上)_假分页 |-第3节 分页实现(下)_真分页 |-第4节 JavaBean |-第5节 上传组件Smartupload 第23天 项目及DAO设计模式 |-第1节 实例讲解:雇员管理(加入照片和翻页) |-第2节 DAO设计模式...
自定义校验函数,返回真则通过校验,返回假或字串则校验失败,返回的字串会出现在失败提示框中。 5.3.2.4 动态绑定校验函数 通过 setValidator实现 $("#region_id").setValidator(function(){ var value = $("#...