<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*" %>
<html>
<head>
<title>網(wǎng)上書店留言板</title>
</head>
<body>
<a href="say.html">我要留言</a><br>
<%
Context ctx=new InitialContext();
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/bookstore");
Connection conn=ds.getConnection();
//創(chuàng)建可滾動的結(jié)果集。
Statement stmt=conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rs=stmt.executeQuery("select * from guestbook order by gst_time desc");
//移動游標(biāo)到結(jié)果集的最后一行。
rs.last();
//得到當(dāng)前行的行數(shù),也就得到了數(shù)據(jù)庫中留言的總數(shù)。
int rowCount=rs.getRow();
if(rowCount==0)
{
out.println("當(dāng)前沒有任何留言!");
return;
}
String strCurPage=request.getParameter("page");
//表示當(dāng)前的頁數(shù)。
int curPage;
if(strCurPage==null)
curPage=1;
else
curPage=Integer.parseInt(strCurPage);
//定義每頁顯示的留言數(shù)。
int countPerPage=5;
//計算顯示所有留言需要的總頁數(shù)。
int pageCount=(rowCount+countPerPage-1)/countPerPage;
//移動游標(biāo)到結(jié)果集中指定的行。如果顯示的是第一頁,curPage=1,
//游標(biāo)移動到第1行。
rs.absolute((curPage-1)*countPerPage+1);
//如果是第1頁,則顯示不帶鏈接的文字,如果不是第1頁,
//則給用戶提供跳轉(zhuǎn)到第一頁和上一頁的鏈接。
if(curPage==1)
{
%>
第一頁
上一頁
<%
}
else
{
%>
<a href="index.jsp?page=<%=1%>">第一頁</a>
<a href="index.jsp?page=<%=curPage-1%>">上一頁</a>
<%
}
//如果當(dāng)前頁是最后一頁,則顯示不帶鏈接的文字,如果不是最后一頁,
//則給用戶提供跳轉(zhuǎn)到最后一頁和下一頁的鏈接。
if(curPage==pageCount)
{
%>
下一頁
最后頁
<%
}
else
{
%>
<a href="index.jsp?page=<%=curPage+1%>">下一頁</a>
<a href="index.jsp?page=<%=pageCount%>">最后頁</a>
<%
}
int i=0;
//以循環(huán)的方式取出每頁要顯示的數(shù)據(jù),因為在前面針對要顯示的頁數(shù),
//調(diào)用了rs.absolute((curPage-1)*countPerPage+1);
//所以是從游標(biāo)所在的位置取出當(dāng)前頁要顯示的數(shù)據(jù)。
while(i<countPerPage && !rs.isAfterLast())
{
out.println("<hr color=\"blue\" size=\"2\"><br>");
out.println("用戶名:"+rs.getString("gst_user"));
out.println(" ");
Timestamp ts=rs.getTimestamp("gst_time");
long lms=ts.getTime();
Date date=new Date(lms);
Time time=new Time(lms);
out.println("留言時間:"+date+" "+time);
out.println(" ");
out.println("用戶IP:"+rs.getString("gst_ip")+"<br>");
out.println("主題:"+rs.getString("gst_title")+"<br>");
out.println("內(nèi)容:"+rs.getString("gst_content"));
i++;
rs.next();
}
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>