jsp分页完善版

时间:2025-01-19 22:37:02

明天要考网络工程师了,而且这两天校运会,把那个分页的完善了下,明天考试,祈祷吧,我根本都没看书啊,所以只能去长见识了。100大洋啊,下个学期我想考考证了,不然以后出去麻烦了。呵呵,不多说还是说说自己对分页的理解吧。

    这次的代码在上次的代码上基本是上没有什么变动只是对那种翻页做了下改进啊,以下是说明。

 <%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>www.mldn.cn,高端java培训</title>
<style type="css/text">
.wh
{
font-size:22px;
font-weight:bold;
} </style>
<script language="JavaScript">
function go(num){
document.getElementById("npage").value=num;
document.myform.submit();
} </script> </head>
<body>
<%!public static String DBDRIVER = "org.gjt.mm.mysql.Driver";
public static String DBURL = "jdbc:mysql://localhost:3306/test";
public static String DBUSER = "root";
public static String DBPASS = "adminmysql";%> <%
Connection conn = null;//定义链接对象
PreparedStatement pstmt = null;
ResultSet rs = null;
%>
<%
try {
Class.forName(DBDRIVER);
conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
} catch (Exception e) {
}
%> <%
int pageSize = 3;//定义每一页显示多少条
int pageNow = 1;//现在显示的是第多少页
int rowCount = 0;//总共有多少行数据
int pageCount = 1;//一共有多少页
int list_num[] = { 1, 3, 5, 10, 20, 30 }; pageNow = request.getParameter("npage") == null ? pageNow : Integer
.parseInt(request.getParameter("npage")); pageSize = request.getParameter("select_size") == null ? pageSize
: Integer.parseInt(request.getParameter("select_size"));//接受pageSize的大小 String sql = "select count(empno) from emp";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if (rs.next()) {
rowCount = rs.getInt(1);//获取一共获得多少条数据
} if (rowCount % pageSize == 0) {
pageCount = rowCount / pageSize;
} else {
pageCount = rowCount / pageSize + 1;
} String sql2 = "select empno,ename,job,hiredate,sal from emp limit ?,?";
pstmt = conn.prepareStatement(sql2);
pstmt.setInt(1, (pageNow - 1) * pageSize);
pstmt.setInt(2, pageSize);
rs = pstmt.executeQuery();
%>
<!-- -->
<center>
<h1>员工信息</h1>
<hr>
<form action="emp_fenye.jsp" name="myform" method="post">
<input type="button" value="第一页" onclick="go(1)"
<%=pageNow == 1 ? "disabled" : ""%>> <input type="button"
value="上一页" onclick="go(<%=pageNow - 1%>)"
<%=pageNow == 1 ? "disabled" : ""%>> <input type="button"
value="下一页" onclick="go(<%=pageNow + 1%>)"
<%=pageNow == pageCount ? "disabled" : ""%>> <input type="button"
value="尾页" onclick="go(<%=pageCount%>)"
<%=pageNow == pageCount ? "disabled" : ""%>> <input type="hidden"
name="npage" value="1">跳转到 <select name="page_select"
onchange="go(this.value)">
<%
for (int i = 1; i <= pageCount; i++) {
%>
<option value="<%=i%>" <%=i== pageNow ? "selected" : ""%>><%=i%>
<%
}
%> </select>页 每页显示<select name="select_size" onchange="go(1)"> <%
for (int i = 0; i < list_num.length; i++) {
%>
<option value="<%=list_num[i]%>"
<%=list_num[i] == pageSize ? "selected" : ""%>><%=list_num[i]%>
<%
}
%> </select>条
</form>
<table border="1" bgcolor="F2F2F2">
<tr>
<td>员工ID</td>
<td>员工姓名</td>
<td>员工工作</td>
<td>员工应聘时间</td>
<td>员工工资</td>
</tr> <%
while (rs.next()) {
%>
<tr>
<td><%=rs.getInt(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><%=rs.getDate(4)%></td>
<td><%=rs.getFloat(5)%></td>
</tr>
<%
}
%>
<%
try { pstmt.close();
conn.close();
} catch (Exception e) {
}
%> </table>
</center>
</body>
</html>

    对其中部分代码说明:

    

 每页显示<select name="select_size" onchange="go(1)">

                     <%
for(int i=0;i<list_num.length;i++){
%>
<option value="<%=list_num[i]%>"
<%=list_num[i]==pageSize?"selected":""%>><%=list_num[i]%>
<%
}
%></select>条

    在这里,一点下拉框就会触发go()事件就会重新加载整个页面,那么此时在request那里就可以接受到pageSize的大小,这句话<%=list_num[i]==pageSize?"selected":""%>就可以进行判断selected的作用只是用于显示。当时我在这里想了半天都没想明白,所以就把这句话给加上了。

    本来我的代码都是在编辑器中编辑的,所以是在网页上运行,但是我在IE上运行的时候脚本调试不了,在火狐和google浏览器上的调试结果额差不多,都是js那里的问题。所以最后我又给弄近eclipse里面运行才好,今天我又看到了一种分页,是数字分页,暂时我还不会,希望有时间研究一下。至于调用servlet的,应该不是很难的,只要在jsp页面里接收servlrt里面设置的参数(list)就可以了吧。