JSP+JDBC_真分页(基于MySql数据库分页)

本文介绍了一个使用Java和JSP实现的人员列表分页显示案例。该案例通过接收查询关键字和当前页码参数,实现了对数据库中人员信息的分页查询,并能够动态显示查询结果和分页导航。此外,还提供了简单的页面跳转功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<%@ 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 || "".equals(keyWord)) {
						sql = "SELECT COUNT(*) FROM person";
					} else {
						sql = "SELECT COUNT(*) FROM person WHERE uid LIKE ? OR name LIKE ?";
						
					}
					pstmt = conn.prepareStatement(sql);
					if(!(keyWord == null || "".equals(keyWord))) {
						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 || "".equals(keyWord)) {
      					sql = "SELECT id,uid,name,password FROM person limit "
      					      + (currentPage-1)*lineSize + "," + lineSize;
      				} else {
						sql = "SELECT id,uid,name,password FROM person WHERE uid LIKE ? OR name LIKE ? limit "
      					      + (currentPage-1)*lineSize + "," + lineSize;
					}
					 
					pstmt = conn.prepareStatement(sql);
					if(!(keyWord == null || "".equals(keyWord))) {
						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;
					 
					// 对于输出代码之前要求按显示的页数空出
					while(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>

转载于:https://my.oschina.net/darkness/blog/357358

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值