实现 jsp分页功能,数据库用的是 SQLserver 2000 ,代码如下:
显示页面:bookmanage.jsp (我用了 frameset,所以 <a> 标签里会有 target 属性)
....
<%
int curPage = 0; // 当前页面页数
if (request.getParameter("curPage") != null){
curPage = ((Integer) request.getAttribute("curPage")).intValue();
}
List<BookDetail> bookList = new BookDAO().getBookDetails(curPage, 4);
%>
....
<a href="pageAction.jsp?action=prePage&curPage=<%= curPage %>" target="main"><< 上一页</a>
<a href="pageAction.jsp?action=nextPage&curPage=<%= ++curPage %>" target="main">下一页 >></a>
....处理页面:pageAction.jsp
...
<%
String action = request.getParameter("action");
final int size = 4; // 每页有4条记录
int curPage = Integer.parseInt(request.getParameter("curPage"));
if ("prePage".equals(action)){
curPage--;
if(curPage >= 0) {
request.setAttribute("curPage", new Integer(curPage));
}else{
curPage = 0;
request.setAttribute("curPage", new Integer(curPage));
}
}
if ("nextPage".equals(action)){
int max = new BookDAO().getBookDetailsAmount(); // 得到book所有记录个数
if(curPage <= Math.round(max/size + 0.5f) - 1 ) {
request.setAttribute("curPage", new Integer(curPage));
}else{
curPage = Math.round(max/size + 0.5f) - 1;
request.setAttribute("curPage", new Integer(curPage));
}
}
pageContext.forward("bookmanage.jsp");
%>BookDAO类
...
private final String tableName = "book";
...
public ArrayList<BookDetail> getBookDetails(int curPage, int size) throws Exception {
ArrayList<BookDetail> bookDetails;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql = "select top " + size + " * from " + tableName
+ " where id not in (select top " + curPage * size
+ " id from " + tableName + " )";
try {
conn = getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
bookDetails = new ArrayList<BookDetail>();
while (rs.next()) {
String id = rs.getString("id");
String name = rs.getString("name");
String title = rs.getString("title");
double price = rs.getDouble("price");
int year = rs.getInt("yr");
String description = rs.getString("description");
String saleAmount = rs.getString("saleAmount");
BookDetail bookDetail = new BookDetail(id, name, title, price,
year, description, saleAmount);
bookDetails.add(bookDetail);
}
return bookDetails;
} finally {
closeResultSet(rs);
closeStatement(stmt);
closeConnection(conn);
}
}
...
当然我这个分页最主要的就是 sql 语句,完整语句是:
select top 4 * from book where id not in (select top 8 id from book) 这里显示的是第二个页面。
注意:关键字 top 在 SQLserver 里有用,在 mysql 里需用其他关键字。好像是 limit
虽然能够实现,但本人有些细节还请高人指点。
JSP分页实现
本文介绍了一种使用JSP和SQL Server 2000实现分页功能的方法。通过具体的代码示例展示了如何通过bookmanage.jsp和pageAction.jsp两个页面进行前后页切换,并通过BookDAO类实现SQL查询来获取指定页数的数据。

532

被折叠的 条评论
为什么被折叠?



