JSP连接SQL数据库实现数据分页显示

   一、整个JSP页面分成如下几个部分:

       1 实现与MySQL数据库的连接;

       2 实现数据的查询;

       3 JSP页面的具体显示;

 二、运行的结果如下:(说明:数据库MySQL、数据源:login、数据表:student)

    

三、代码实现如下:

<%@ page language="java" import="java.sql.*" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP连接SQL数据库实现数据分页显示</title>
</head>
<body>
<h1 align="center">JSP连接SQL数据库实现数据分页显示</h1>
<%
try
{//建立JDBC-ODBC桥驱动程序,用到java.lang包中的类Class,调用其方法forName().
	Class.forName("com.mysql.jdbc.Driver");
}
catch(ClassNotFoundException e){}
try
{//创建连接对象con,它属于Connection类,然后用类DriverManager调用getConnection().
	 String url="jdbc:mysql://localhost/login?characterEncoding=utf-8";
	Connection  con=DriverManager.getConnection(url,"root","");  //根据自己的用户名和密码进行更改
   Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);//创建SQL语句对象.
   ResultSet rs=stmt.executeQuery("SELECT* FROM student");//执行SQL语句并返回结果.
   int pageSize;//一页显示的记录数
   int totalItem;//记录总数
   int totalPage;//总页数
   int curPage;//待显示页码
   String strPage;
   int i;
   pageSize=10;//设置一页显示的记录数
   strPage=request.getParameter("page");//获得待显示页码
   if(strPage==null)
   {
    curPage=1;
   }
   else
   {
    curPage=java.lang.Integer.parseInt(strPage);//将字符串转换成整形
   }
   if(curPage<1)
   {
    curPage=1;
   }
   rs.last();//获取记录总数
   totalItem=rs.getRow();
   totalPage=(totalItem+pageSize-1)/pageSize;
   if(curPage>totalPage) curPage=totalPage;//调整待显示的页码
   if(totalPage>0)
   {//将记录指针到待显示页的第一条记录上
    rs.absolute((curPage-1)*pageSize+1);
   }
   i=0;
   %>
   <table border="1" align="center" bgcolor="#cccccc"><!--设置用以表格显示.-->
    <tr>
     <th width="50">学号</th>
     <th width="50">姓名</th>
    </tr>
   <%//显示数据
   while(i<pageSize && !rs.isAfterLast())
   {
   %>
    <tr>
     <td><%=rs.getString(1)%></td>
     <td><%=rs.getString(2)%></td>
    </tr>
   <%
   rs.next();
   i++;
   }
   rs.close();
   stmt.close();
   con.close();
   %>
   </table><p align="center">

   共<%=totalItem%>个记录,分<%=totalPage%>页显示,当前页是:第<%=curPage%>页<br />

   <%if(curPage>1){%><a href="page.jsp?page=1">首页</a><%}%>  

   <%if(curPage>1){%><a href="page.jsp?page=<%=curPage-1%>">上一页</a><%}%>  

   <%
   for(int j=1;j<=totalPage;j++)
   {
    out.print("  <a href='page.jsp?page="+j+"'>"+j+"</a>");
   }
   %>

     
   <%if(curPage<totalPage){%><a href="page.jsp?page=<%=curPage+1%>">下一页</a><%}%>  

   <%if(totalPage>1){%><a href="page.jsp?page=<%=totalPage%>">末页</a><%}%>

<%
}
catch(SQLException e1){out.println(e1);}
%>
</body>
</html>

  四、在运行时,可能会报错

   java.io.IOException: tmpFile.renameTo(classFile) failed

五 具体解决方案参考如下页面:

   http://www.360doc.com/content/16/0904/22/31406094_588431702.shtml

(我的是刷新页面后成功的)







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值