<%@ page contentType="text/html;charset=gbk" pageEncoding="gbk"%>
<%@ page  import="java.sql.*"%>   
<html>
    <head>
      <title>北京魔乐科技</title>
</head>
<body>
<center>
            <%!
  int pageCounts= 0;//当前的页数
  int pageRows = 4;//每页显示的行数
  int curRow = 0;//当前指针所指的行数
  int maxRows = 0;//数据库中总的行数
  int maxCount = 0;//总的页数
 String keyWord=new String();
  
%>
<form action = "test_demo.jsp" method = "get">
       <input type = "text" name = "sear" >
   <input type = "submit" value = "查询">
    <input type = "reset" value = "重置">
</form>
   <%//*****数据库连接
        Connection con=null;
PreparedStatement stm=null;
ResultSet rs=null;
Class.forName("oracle.jdbc.driver.OracleDriver");
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oracle","scott","tiger");
stm=con.prepareStatement("select deptno,ename,job,mgr,sal from empo where deptno like ? or ename like ? or job like ? order by deptno,ename",ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
keyWord=request.getParameter("sear");//接受表单参数用来进行模糊查询
    if(!(keyWord==null|| "".equals(keyWord))){
stm.setString(1,"%"+keyWord+"%");
stm.setString(2,"%"+keyWord+"%");
stm.setString(3,"%"+keyWord+"%");

}else{
stm.setString(1,"%%");
stm.setString(2,"%%");
stm.setString(3,"%%");

}

rs=stm.executeQuery();
rs.last();//定位到最后一行
maxRows=rs.getRow();//得到查询回来的行数
System.out.println(maxRows);
maxCount=(maxRows%pageRows==0)?(maxRows/pageRows):(maxRows/pageRows+1);//计算最大页数
                   String page0 = (String)request.getParameter("pageCounts");//返回当前的页数
if(!(page0==null||"".equals(page0))){
pageCounts = Integer.parseInt(page0);
if(pageCounts>maxCount){
   pageCounts=1;
}else{
     if(pageCounts<1){
 pageCounts=maxCount;
 }
}
}
else{
pageCounts = 1;
}
  
%>
<a href = "test_demo.jsp?pageCounts=1&sear=<%=keyWord%>">首页</a>
<a href = "test_demo.jsp?pageCounts=<%=pageCounts-1%>&sear=<%=keyWord%>">上一页</a>
<a href = "test_demo.jsp?pageCounts=<%=pageCounts+1%>&sear=<%=keyWord%>">下一页</a>
<a href = "test_demo.jsp?pageCounts=<%=maxCount%>&sear=<%=keyWord%>">尾页</a>
<%
        

curRow = (pageCounts-1)*pageRows+1;  //计算指针在当前页的第一行

rs.absolute(curRow);//定位第一行
%>
        <table border = "1">
<tr>
<td>员工编号</td>
<td>员工姓名</td>
<td>员工职务</td>
<td>员工经理</td>
<td>员工薪水</td>
</tr>
<%
     try{
        for(int i = 0;i<pageRows;i++){
        if(!rs.isAfterLast()){
               %>  <!--  如下输出-->
          <tr>
     <td><%=rs.getInt(1)%></td>
    <td><%=rs.getString(2)%></td>
   <td><%=rs.getString(3)%></td>
      <td><%=rs.getInt(4)%></td>
     <td><%=rs.getFloat(5)%></td>
 </tr>
             <% 
rs.next();}else{

   }}}catch(Exception e){
       System.out.println(e);
   }
   %>
   <%
       rs.close();
   stm.close();
   con.close();
   %>

当前页数<%=pageCounts%>

</center>
         </table>
</body>
</html>
当只进入页面时如果直接点击下一页,就会报错,经检查if(!(keyWord==null|| "".equals(keyWord)))条件为真,但是进一步检查,keyWord输出为null 但是又 不等于null即:
System.out.println(keyWord);输出:null
System.out.println(keyWord==null);输出为:falseJSP分页数据库String