文档章节

JSP+JDBC_假分页

暗之幻影
 暗之幻影
发布于 2014/12/17 19:30
字数 935
阅读 18
收藏 0
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
	<head>
		<title>分页显示</title>
	</head>
	<body>
		<center>
			<h1>人员列表</h1>
			<hr><br>
			<%
				// 进行乱码处理
				request.setCharacterEncoding("GB2312");
			%>
			<%!
				final String jspUrl = "list_person.jsp";
			%>
			<%
				// 定义如下分页变量
				// 1、定义每页要显示的记录数
				int lineSize = 10;
				// 2、定义当前页
				int currentPage = 1;
				// 计算出总页数
				int pageSize = 0;
				// 总记录数
				int allRecorders = 0;
				// 加入查询关键字变量
				String keyWord = "";
			%>
			<%
				// 接收查询关键字
				keyWord = request.getParameter("kw");
				// 接收传过来的当前页
				try {
					currentPage = Integer.parseInt(request.getParameter("cp"));
				} catch(Exception e) {
				}
			%>
			<%
				final String DBDRIVER = "org.gjt.mm.mysql.Driver";
				final String DBURL = "jdbc:mysql://localhost/test";
				final String DBUSER = "root";
				final String DBPASSWORD = "depravedAngel";
				Connection conn = null;
			%>
			<%
				try {
					Class.forName(DBDRIVER);
					conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
					String sql = null;
					PreparedStatement pstmt = null;
					ResultSet rs = null;
					if(keyWord == null) {
						sql = "SELECT COUNT(*) FROM person";
					} else {
						sql = "SELECT COUNT(*) FROM person WHERE uid LIKE ? OR name LIKE ?";
						
					}
					pstmt = conn.prepareStatement(sql);
					if(keyWord != null) {
						pstmt.setString(1,"%" + keyWord + "%");
						pstmt.setString(2,"%" + keyWord + "%");
					}
					rs = pstmt.executeQuery();
					if(rs.next()){
						allRecorders = rs.getInt(1);
					}
					rs.close();
					pstmt.close();
					
					// 计算总页数
      				pageSize = (allRecorders+lineSize-1)/lineSize;
      				if(keyWord == null) {
      					sql = "SELECT id,uid,name,password FROM person";
      				} else {
						sql = "SELECT id,uid,name,password FROM person WHERE uid LIKE ? OR name LIKE ?";
					}
					 
					pstmt = conn.prepareStatement(sql);
					if(keyWord != null) {
						pstmt.setString(1,"%" + keyWord + "%");
						pstmt.setString(2,"%" + keyWord + "%");
					}
					rs = pstmt.executeQuery();
			%>
			<script language="javaScript">
				function openPage(curpage)
				{
					document.spage.cp.value = curpage;
					document.spage.submit();	
				}
				function selOpenPage()
				{
					document.spage.cp.value = document.spage.selpage.value;
					document.spage.submit();
				}
			</script>
			<form name="spage" action="<%=jspUrl %>">
				输入查询关键字:<input type="text" name="kw" value="<%=keyWord %>">
				<input type="submit" value="查询">
				<br><br>
				<%
					if(allRecorders > 0) {
			    %>
					<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 uid = rs.getString(2);
							String name = rs.getString(3);
							String password = rs.getString(4);
				%>
				<tr>
					<td><%=id%></td>
					<td><%=uid%></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) {
				} finally {
					conn.close();
				}
			%>
		</center>
	</body>
</html>



数据库脚本:

--  删除表
DROP TABLE person;
-- 建立person表
CREATE TABLE person
(
	-- 生成一个流水号,观察显示的纪录数
	id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
	-- 用户的登陆ID
	uid VARCHAR(32),
	-- 用户的真实姓名
	name VARCHAR(32),
	-- 用户的登陆密码
	password VARCHAR(30)
);

-- 插入测试数据
INSERT INTO person(uid,name,password) VALUES('darkness01','堕落天使01','SKY01');
INSERT INTO person(uid,name,password) VALUES('darkness02','堕落天使02','SKY02');
INSERT INTO person(uid,name,password) VALUES('darkness03','堕落天使03','SKY03');
INSERT INTO person(uid,name,password) VALUES('darkness04','堕落天使04','SKY04');
INSERT INTO person(uid,name,password) VALUES('darkness05','堕落天使05','SKY05');
INSERT INTO person(uid,name,password) VALUES('darkness06','堕落天使06','SKY06');
INSERT INTO person(uid,name,password) VALUES('darkness07','堕落天使07','SKY07');
INSERT INTO person(uid,name,password) VALUES('darkness08','堕落天使08','SKY08');
INSERT INTO person(uid,name,password) VALUES('darkness09','堕落天使09','SKY09');
INSERT INTO person(uid,name,password) VALUES('darkness10','堕落天使10','SKY10');
INSERT INTO person(uid,name,password) VALUES('darkness11','堕落天使11','SKY11');
INSERT INTO person(uid,name,password) VALUES('darkness12','堕落天使12','SKY12');
INSERT INTO person(uid,name,password) VALUES('darkness13','堕落天使13','SKY13');
INSERT INTO person(uid,name,password) VALUES('darkness14','堕落天使14','SKY14');
INSERT INTO person(uid,name,password) VALUES('darkness15','堕落天使15','SKY15');
INSERT INTO person(uid,name,password) VALUES('darkness16','堕落天使16','SKY16');
INSERT INTO person(uid,name,password) VALUES('darkness17','堕落天使17','SKY17');
INSERT INTO person(uid,name,password) VALUES('darkness18','堕落天使18','SKY18');
INSERT INTO person(uid,name,password) VALUES('darkness19','堕落天使19','SKY19');
INSERT INTO person(uid,name,password) VALUES('darkness20','堕落天使20','SKY20');
INSERT INTO person(uid,name,password) VALUES('darkness21','堕落天使21','SKY21');
INSERT INTO person(uid,name,password) VALUES('darkness22','堕落天使22','SKY22');
INSERT INTO person(uid,name,password) VALUES('darkness23','堕落天使23','SKY23');

© 著作权归作者所有

暗之幻影
粉丝 20
博文 377
码字总数 71245
作品 0
南京
高级程序员
私信 提问
《牛腩新闻发布系统》—真、假分页

【前沿】 小编在学习的过程中,学习的过程中听到视频中老师简单介绍了一下真、假分页的区别,下面小编就这个知识点进行一下总结。 【内容】 真分页:由程序控制,每一次只返回一页大小的数据...

wxb141001yxx
2018/03/19
0
0
各位大神求助100W条数据,单表查询没有where条件53S,有什么思路来优化呢

看样子就是假分页造成的 SELECT G_O.* FROM (SELECT G_I.* FROM ( 没有分页的查询语句 ) G_I ) G_O LIMIT 0, 50

有梦为嘛
2016/12/02
666
16
extjs4实现前台分页(假分页)的问题

请问有没有人做过extjs4实现前台分页(假分页)的,最近项目需要,确不知道怎么办,试过一些方法,都没有用,还请懂得的大哥大姐给点思路,谢谢!

rk_icc
2012/08/28
2.5K
4
mybatis到底哪里好,为什么大家都说要用这个而不是hibernate和JPA呢?

问下各位大哥大姐们,我也是听了网上说的,mybatis好,于是再三抉择下,开始选用这个作为底层的ORM框架。好了,用了一阵,问题来了,处理对象嵌套的时候,要用到resuthandler这个就不说了,可...

蓝血的阿健
2015/10/15
19.9K
27
MySQL查询分页

数据库查询分页: Pagination //分页信息,请求内容包括{pageSize,pageNo,totalCount} PageData{Pagination, List} //返回信息 通过Pagination 计算出 begin 和 end, begin=pagination.getb...

满小茂
2016/01/18
74
0

没有更多内容

加载失败,请刷新页面

加载更多

GMTC2019|闲鱼-基于Flutter的架构演进与创新

作者:闲鱼技术-宗心 2012年应届毕业加入阿里巴巴,主导了闲鱼基于Flutter的新混合架构,同时推进了Flutter在闲鱼各业务线的落地。未来将持续关注终端技术的演变及趋势 Flutter的优势与挑战 ...

阿里云云栖社区
11分钟前
2
0
迪蒙人工智能共享停车吸引国际关注

  近来,华为创始人任正非多次提及人工智能。即便在华为生死攸关的关键时刻,任正非依旧不忘强调教育的重要性,“如果不重视教育,实际上我们会重返贫穷的,因为这个社会,最终是要走向人工智能的...

琴殇的
13分钟前
0
0
iOS开发之EventKitUI框架的应用

iOS开发之EventKitUI框架的应用 前面博客,有介绍EventKit这个框架的使用,使用EventKit可以与系统的日历和提醒应用进行交互,读写用户的日程事件。EventKitUI,顾名思义,其实基于EventKit框...

珲少
21分钟前
0
0
从MySQL源码看其网络IO模型

从MySQL源码看其网络IO模型 前言 MySQL是当今最流行的开源数据库,阅读其源码是一件大有裨益的事情(虽然其代码感觉比较凌乱)。而笔者阅读一个Server源码的习惯就是先从其网络IO模型看起。于是...

无毁的湖光-Al
22分钟前
0
0
WebService学习笔记

什么是Web Services? Web Services 是应用程序组件 Web Services 使用开放协议进行通信 Web Services 是独立的(self-contained)并可自我描述 Web Services 可通过使用UDDI来发现 Web Serv...

榴莲黑芝麻糊
38分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部