分页组件实现

<%@ 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_sp.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();
			%>
			<jsp:include page="split_page.jsp">
				<jsp:param name="jspUrl" value="<%=jspUrl %>"/>
				<jsp:param name="lineSize" value="<%=lineSize %>"/>
				<jsp:param name="allRecorders" value="<%=allRecorders %>"/>
				<jsp:param name="keyWord" value="<%=keyWord %>"/>
				<jsp:param name="currentPage" value="<%=currentPage %>"/>
				<jsp:param name="searchFlag" value="T"/>
			</jsp:include>
			
			<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>



<%@ page contentType="text/html;charset=gb2312"%>
<%
	// 进行乱码处理
	request.setCharacterEncoding("GB2312");

	// 页面连接路径
	String jspUrl = null;
	// 定义如下分页变量
	// 1、定义每页要显示的记录数
	int lineSize = 10;
	// 2、定义当前页
	int currentPage = 1;
	// 总记录数
	int allRecorders = 0;
	// 计算出总页数
	int pageSize = 0;
	// 加入查询关键字变量
	String keyWord = "";
	// 加入一个检索标记
	String searchFlag = "F";

	// 需要从外面接收以下参数
	// 当前页、每页显示的记录数、总记录数、查询关键字、连接地址
	jspUrl = request.getParameter("jspUrl");
	keyWord = request.getParameter("keyWord");
	searchFlag = request.getParameter("searchFlag");
	try {
		lineSize = Integer.parseInt(request.getParameter("lineSize"));
		currentPage = Integer.parseInt(request.getParameter("currentPage"));
		allRecorders = Integer.parseInt(request.getParameter("allRecorders"));
	} catch(Exception e) {
	}

	// 计算总页数
	pageSize = (allRecorders+lineSize-1)/lineSize;
%>
<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 %>">
<%
	// 是否加入检索框,“T”表示加入
	if("T".equals(searchFlag)){
%>
	输入查询关键字:<input type="text" name="kw" value="<%=keyWord.equals("null")?"":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>

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值