本页为listtempdemo.jsp
<%@ page contentType="text/html" pageEncoding="GBK" %>
<%@ page import="java.sql.*" %>
<html>
     <head>
      <title>欢迎进入我的网站!</title>
 </head>
 <body>
  <%
    int intPageSize = 3;//每页显示的记录数
int intRowCount = 0;//总的记录行数
int intPageCount = 0 ;//总的页数
int intPage = 0;//待显示的页数
int prevPage = 0;//上一页
int nextPage = 0;//下一页
  %>
  <% 
     if(request.getParameter("intPage") == null){
    intPage = 1;
}else{
    intPage = Integer.parseInt(request.getParameter("intPage"));  
}
  %>
      <%!
     public static final String DBDRIVER ="org.gjt.mm.mysql.Driver";
 public static final String DBURL = "jdbc:mysql://localhost:3306/TWW";
 public static final String DBUSER = "root" ;
 public static final String DBPASS = "mysqladmin";
  %>
  <%
     Connection conn = null;
 PreparedStatement pstmt = null;
 ResultSet rs = null;
  %>
   <%
  try{
     Class.forName(DBDRIVER);
 conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
 String sql = "select empno,ename,job,hiredate,sal from temp";
 pstmt = conn.prepareStatement(sql);
 rs = pstmt.executeQuery();
  %>
 <center>
       <table  border="1" width="90%">
        <tr>
    <td>雇员编号</td>
<td>雇员姓名</td>
<td>雇员职位</td>
    <td>雇佣日期</td>
<td>雇用工资</td>
</tr>
 <% 
 rs.last();
     intRowCount = rs.getRow();
 intPageCount = (intRowCount + intPageSize -1) / intPageSize;
 rs.beforeFirst();
 rs.absolute((intPage-1)* intPageSize  +  1);
 %>

<% 
   for(int i=0;i<intPageSize;i++){
       int empno = rs.getInt(1);
   String ename = rs.getString(2);
   String job = rs.getString(3);
   java.util.Date date = rs.getDate(4);
   float sal = rs.getFloat(5);
        %> 
     <tr>
       <td><%=empno%></td>
       <td><%=ename%></td>
       <td><%=job%></td>
       <td><%=date%></td>
       <td><%=sal%></td>
 </tr>
<%
 rs.next();  
}
%>
                 </table>
</center>
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      <% 
   if(intPage==1){//如果当前显示的是第一页
      nextPage = intPage + 1;
  out.print("<font face=宋体 size=2>首页&nbsp;&nbsp;</font>"); 
  out.print("<font face=宋体 size=2>上一页&nbsp;&nbsp;</font>");
  out.print("<a href=listtempdemo.jsp?intPage=" + nextPage + "><font face=宋体 size=2>下一页&nbsp;&nbsp;</font>");
  out.print("<a href=listtempdemo.jsp?intPage=" + intPageCount + " ><font face=宋体 size=2>末页</font>");
   }else if(intPage == intPageCount){//如果当前页是最后一页
       prevPage = intPage - 1;
   out.print("<a href=listtempdemo.jsp?intPage=1 ><font face=宋体 size=2>首页&nbsp;&nbsp;</font>");
   out.print("<a href=listtempdemo.jsp?intPage=" + prevPage + " ><font face=宋体 size=2>上一页&nbsp;&nbsp;</font>");
   out.print("<font face=宋体 size=2>下一页&nbsp;&nbsp;</font>");
   out.print("<font face=宋体 size=2>末页</font>");
   }else{//既不是第一页也不是最后一页
       prevPage = intPage - 1;
   nextPage = intPage + 1;
   out.print("<a href=listtempdemo.jsp?intPage=1><font face=宋体 size=2>首页&nbsp;&nbsp;</font>");
   out.print("<a href=listtempdemo.jsp?intPage=" + prevPage + " ><font face=宋体 size=2>上一页&nbsp;&nbsp;</font>");
   out.print("<a href=listtempdemo.jsp?intPage=" + nextPage + "><font face=宋体 size=2>下一页&nbsp;&nbsp;</font>");
   out.print("<a href=listtempdemo.jsp?intPage=" + intPageCount + " ><font face=宋体 size=2>末页</font>");
   }
  
 %>
 <%
 }catch(Exception e){
    e.printStackTrace();
 }finally{
    rs.close();
pstmt.close();
conn.close();
 }
 %>   </body>
</html>数据库脚本为
DROP table  IF exists temp ;
create table temp(
    empno      INT(4)      PRIMARY KEY,
    ename      VARCHAR(10)    NOT NULL,
    job          VARCHAR(9)      NOT NULL,
    hiredate     DATE ,
    sal           FLOAT(7,2)
);
INSERT INTO temp (empno,ename,job,hiredate,sal) VALUES(2001,'田微微','工程师','2003-01-18',90000.00);
INSERT INTO temp (empno,ename,job,hiredate,sal) VALUES(2002,'田微微1','工程师1','2003-01-18',90000.00);
INSERT INTO temp (empno,ename,job,hiredate,sal) VALUES(2003,'田微微2','工程师2','2003-04-18',90000.00);
INSERT INTO temp (empno,ename,job,hiredate,sal) VALUES(2004,'田微微3','工程师3','2003-05-18',90000.00);
INSERT INTO temp (empno,ename,job,hiredate,sal) VALUES(2005,'田微微4','工程师4','2003-05-18',90000.00);
INSERT INTO temp (empno,ename,job,hiredate,sal) VALUES(2008,'田微微','工程师','2003-01-18',90000.00);
INSERT INTO temp (empno,ename,job,hiredate,sal) VALUES(2009,'田微微1','工程师1','2003-01-18',90000.00);
INSERT INTO temp (empno,ename,job,hiredate,sal) VALUES(2010,'田微微2','工程师2','2003-04-18',90000.00);
INSERT INTO temp (empno,ename,job,hiredate,sal) VALUES(2011,'田微微3','工程师3','2003-05-18',90000.00);
INSERT INTO temp (empno,ename,job,hiredate,sal) VALUES(2012,'田微微4','工程师4','2003-05-18',90000.00);

解决方案 »

  1.   

    String sql = "select empno,ename,job,hiredate,sal from temp";
    这个SQL语句没看出有体现分页的意思啊?
    JSP 只负责显示,servlet负责响应啊   
    看看这句话
    "select * from (select empno,ename,job,hiredate,sal,rownum as num from temp) where 
    num >  x and num <=y"   我觉得这个才有点分页的意思啊
      

  2.   

    不使用PreparedStatement
    使用statementStatement pstmt = conn.createStatement(int resultSetType, int resultSetConcurrency)  ResultSet rs = pstmt.executeQuery(sql)换成这句试试
      

  3.   

    Statement pstmt = conn.createStatement(Result.TYPE_SCROLL_INSENITIVE,ResultSet.CONCUR_READ_ONLY);