}
public ResultSet getRs() {
return rs;
}
public void setRs(ResultSet rs) {
this.rs = rs;
}
}
5、TablePage.java
package bean;
import java.sql.ResultSet;
public class PageProperties {
private int currentPage;//当前页号
private int totalPages;//总页数
private int totalRecords;//总数据条数
private ResultSet rs;//动态结果集
public PageProperties() {
super();
}
public PageProperties(int currentPage, int totalPages, int totalRecords,
ResultSet rs) {
super();
this.currentPage = currentPage;
this.totalPages = totalPages;
this.totalRecords = totalRecords;
this.rs = rs;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getTotalPages() {
return totalPages;
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public int getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
public ResultSet getRs() {
return rs;
}
public void setRs(ResultSet rs) {
this.rs = rs;
}
}
6、Page.java这是主要处理类,Servlet
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import util.PostgreSQL_Util;
import bean.PageProperties;
import bean.TablePage;
public class Page extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
/**
* 通过TablePage设置分页属性
*
*/
TablePage tb=new TablePage();
//获取当前表格显示的页码
int currentPage=tb.currentPage(tb.getStrPage(request, "page"));
System.out.println(currentPage);
//设置每页显示数据条数
tb.setPageRecord(10);//设置每页显示10条数据
/**
* 通过xxSQL_Util设置JDBC连接及数据处理
*/
PostgreSQL_Util postgres=new PostgreSQL_Util();
try {
ResultSet rs_count=postgres.executeQuery("select count(*) as c from student");
rs_count.next();
//获得总的数据条数
int totalRecords=rs_count.getInt("c");
//根据数据表的总数据条数获取页面显示表格的总页数
int totalPages=tb.getTotalPages(totalRecords);
if(currentPage>totalPages){
currentPage=totalPages;//保证最后一页不超出范围
}
//根据数据库表信息和当前页面信息获得动态结果集
ResultSet rs=tb.getPageResultSet(postgres.executeQuery("select * from student"), currentPage);
/**
* 将数据加入javaBean
*/
PageProperties pp=new PageProperties(currentPage, totalPages, totalRecords, rs);
/**
* 将javaBean转发至前端
*/
request.setAttribute("result", pp);
request.getRequestDispatcher("tablePage.jsp").forward(request, response);
} catch (SQLException e) {
System.out.println("Class Page:"+e.getMessage());
// e.printStackTrace();
}
}
}
7、tablePage.jsp前台显示效果
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="bean.PageProperties"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
简单数据分页
初步看,感觉后台代码实在是繁琐,但这是考虑到程序健壮性与可移植性,方便代码重用。以后要用,根据自己的需要在属性
文件(config.xml)中配置相关JDBC驱动,在jsp页面通过request获得后台Servlet(Page.jsp)的转发结果("result"),结合页面
属性(PageProperties.java类)即可实现效果。
当然,这也是因为个人学习,倾向于多用点东西。
希望本文所述对大家jsp程序设计有所帮助。