1:首先创建数据库链接类,我的博客前面有源码
2:创建封装你要分页的那个数据库表的Bean
3:封装实现分页功能的功能Bean 具体代码见下:
import java.util.ArrayList; import java.sql.*;
public class PageBean {
private int curPage = 1; //当前是第几页 private int maxPage; //一共有多少页 private int maxRowCount; //一共有多少行 public int rowsPerPage = 10; //每页多少行
Connection conn; public ArrayList data;
public PageBean() throws Exception { this.setPageBean(); } public int getCurPage() { return curPage; }
public int getMaxPage() { return maxPage; }
public int getMaxRowCount() { return maxRowCount; }
public int getRowsPerPage() { return rowsPerPage; }
public void setCurPage(int curPage) { this.curPage = curPage; }
public void setMaxPage(int maxPage) { this.maxPage = maxPage; }
public void setMaxRowCount(int maxRowCount) { this.maxRowCount = maxRowCount; }
public void setRowsPerPage(int rowsPerPage) { this.rowsPerPage = rowsPerPage; }
//得到要显示于本页的数据 public PageBean getResult(String page) throws Exception { try { PageBean pageBean = new PageBean(); ArrayList list = new ArrayList(); int pageNum = Integer.parseInt(page); Statement stmt = conn.createStatement(); String strSql = "select top " + pageNum * pageBean.rowsPerPage + " * from employee";//改成你的表 ResultSet rset = stmt.executeQuery(strSql); int i = 0; while (rset.next()) {
//这里要和表的字段对应起来!!!! Employee item=new Employee(); item.setEmp_id(rset.getString("emp_id")); item.setFname(rset.getString("fname")); item.setMinit(rset.getString("minit")); item.setLname(rset.getString("lname")); item.setJob_id(rset.getInt("job_id")); item.setJob_lvl(rset.getInt("job_lvl")); item.setPub_id(rset.getString("pub_id")); item.setHire_date(rset.getString("hire_date")); list.add(item);
i++; } ConnectionManager.closeResultSet(rset); ConnectionManager.closeStatement(stmt); pageBean.setCurPage(pageNum); pageBean.data = list; return pageBean; } catch (Exception e) { e.printStackTrace(); throw e;
} } //获取总行数 public int getAvailableCount() throws Exception { int ret = 0; conn = ConnectionManager.getConnection(); Statement stmt = conn.createStatement(); String strSql = "select * from employee";//改成你的表 ResultSet rset = stmt.executeQuery(strSql); while (rset.next()) { ret++; } return ret; } //初始化时对PageBean进行设置 public void setPageBean() throws Exception {
//得到总行数 this.setMaxRowCount(this.getAvailableCount());
if (this.maxRowCount % this.rowsPerPage == 0) { //根据总行数计算总页数 this.maxPage = this.maxRowCount / this.rowsPerPage; } else { this.maxPage = this.maxRowCount / this.rowsPerPage + 1; } }
}
|
4:建立中间中转的Servlet PageServlet: 代码如下:
public void init() throws ServletException { }
//Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { PageBean page1=new PageBean(); PageBean page2=page1.getResult((String)request.getParameter("jumpPage"));
//把PageBean保存到request对象中。注意:viewpage.jsp里jsp:useBean id必须为才可以"page2"!!! request.setAttribute("page2",page2); } catch(Exception e) { e.printStackTrace(); }
/** *把视图派发到viewForum.jsp */ javax.servlet.RequestDispatcher dis=request.getRequestDispatcher("viewpage.jsp"); dis.forward(request,response);
}
|
5:现在建立现实JSP页面 viewpage.jsp:
<%@ page contentType="text/html; charset=GBK" import="java.util.*,pagetest.Employee" %> <jsp:useBean id="page2" scope="request" class="pagetest.PageBean"/> <script language="JavaScript" type="text/JavaScript"> function Jumping(){ document.PageForm.submit(); return ; }
function gotoPage(pagenum){ document.PageForm.jumpPage.value = pagenum; document.PageForm.submit(); return ; } </script> <html> <head> <title> 分页功能 </title> </head> <body bgcolor="#ffffff"> <table border="1"> <% String s=String.valueOf(page2.getCurPage()); try{ ArrayList list=page2.getResult(s).data; for(int i=0;i<list.size();i++){ Employee emp=(Employee)list.get(i); %> <tr> <td><%=emp.getEmp_id()%></td> <td><%=emp.getFname()%></td> <td><%=emp.getHire_date()%></td> <td><%=emp.getJob_id()%></td> <td><%=emp.getJob_lvl()%></td> <td><%=emp.getLname()%></td> <td><%=emp.getMinit()%></td> <td><%=emp.getPub_id()%></td> </tr> <% } }catch(Exception e){} %> </table> <%if(page2.getMaxPage()!=1){ %> <form name="PageForm" action="pageservlet" method="post"> 每页 <%=page2.rowsPerPage%> 行 共 <%=page2.getMaxRowCount()%>行
第 <%=page2.getCurPage()%> 页 共 <%=page2.getMaxPage()%>页 <BR> <% if (page2.getCurPage() == 1) { out.print(" 首页 上一页"); } else { %> <a HREF="javascript:gotoPage(1)">首页</A> <a HREF="javascript:gotoPage(<%=page2.getCurPage()-1%>)">上一页</A> <%}%> <% if (page2.getCurPage() == page2.getMaxPage()) { out.print("下一页 尾页"); } else { %> <a HREF="javascript:gotoPage(<%=page2.getCurPage()+1%>)">下一页</A> <a HREF="javascript:gotoPage(<%=page2.getMaxPage()%>)">尾页</A> <%}%> 转到第 <SELECT name="jumpPage" onchange="Jumping()"> <% for (int i = 1; i <= page2.getMaxPage(); i++) { if (i == page2.getCurPage()) { %> <OPTION selected value="<%=i%>"><%=i%> </OPTION> <%} else {%> <OPTION value="<%=i%>"><%=i%> </OPTION> <%} }%> </SELECT> 页 </form> <%}%> </body> </html>
|
现在运行 就可以看到效果
阅读(21432) | 评论(1) | 转发(0) |