自己参考别人并动手写的一个jsp+servlet+javaBean实现数据分页代码例子,省去了数据库连接部分,给出核心代码。
1.首先创建实现分页功能的javabean
public class PageBean {
private int curPage = 1; //当前是第几页
private int maxPage; //一共有多少页
private int maxRowCount; //一共有多少行
public int rowsPerPage = 5; //每页多少行
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();
System.out.println("page=="+page);
int pageNum = Integer.parseInt(page);
System.out.println("pageNum=="+pageNum);
conn=DBUtil.getConnetion();
Statement stmt = conn.createStatement();
String strSql = "select * from receivemail limit "+pageNum * pageBean.rowsPerPage;//改成你的表
System.out.println("pageNum * pageBean.rowsPerPage=="+pageNum * pageBean.rowsPerPage);
ResultSet rset = stmt.executeQuery(strSql);
boolean flag = rset.absolute((curPage-1)*pageBean.rowsPerPage+1); //把结果集指针调整到当前页应该显示的记录的开始.
int i = 0;
while (rset.next()) {
//这里要和表的字段对应起来!!!!
ReceiveMail mail=new ReceiveMail();
mail.setReceiveid(rset.getInt("receivid"));
mail.setRecontent(rset.getString("scontent"));
mail.setUid(rset.getInt("uid"));
mail.setState(rset.getInt("state"));
mail.setStime(rset.getString("stime"));
mail.setSubject(rset.getString("subject"));
mail.setRecontent(rset.getString("recontent"));
mail.setRetime(rset.getString("retime"));
list.add(mail);
i++;
}
System.out.println("i=="+i);
DBUtil.CloseAll();
pageBean.setCurPage(pageNum);
pageBean.data = list;
return pageBean;
} catch (Exception e) {
e.printStackTrace();
System.out.println("PageBean显示本页数据逻辑erro");
throw e;
}
}
//获取总行数
public int getAvailableCount() throws Exception {
int ret = 0;
conn=DBUtil.getConnetion();
Statement stmt = conn.createStatement();
String strSql = "select * from receivemail";//改成你的表
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;
}
}
}
2.然后创建处理跳转的servlet
public class PageServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
//try (PrintWriter out = response.getWriter()) {
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
try
{
PageBean page1=new PageBean();
PageBean page2=page1.getResult(String.valueOf(request.getParameter("jumpPage").trim()));
//把PageBean保存到request对象中。注意:viewpage.jsp里jsp:useBean id必须为"page2"才可以!!!
request.setAttribute("page2",page2);
}
catch(Exception e)
{
System.out.println("servlet erro");
}
/**
*把视图派发到<span style="font-family: Arial, Helvetica, sans-serif;">newMail.jsp</span>
*/
javax.servlet.RequestDispatcher dis=request.getRequestDispatcher("newMail.jsp");
dis.forward(request,response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
3.最后创建展示页面
<body>
<div>
<table id="t" border="1">
<tr>
<th class="t1_1">邮件编号</th>
<th class="t1">发件人</th>
<th class="t1">主题</th>
<th class="t1">内容</th>
<th class="t1">发送时间</th>
<th class="t1_2">状态</th>
<th class="t1_2">回复内容</th>
<th class="t1_2">回复时间</th>
<th>操作</th>
</tr>
<script type="text/javascript">
function Jumping(){
document.PageForm.submit();
return ;
}
function gotoPage(pagenum){
document.PageForm.jumpPage.value = pagenum;
document.PageForm.submit();
return ;
}
</script>
<%
String s=String.valueOf(page2.getCurPage());
System.out.println("s=="+s);
try{
ArrayList list=page2.getResult(s).data;
System.out.println("list.size="+list.size());
for(int i=0;i<list.size();i++){
ReceiveMail mail=(ReceiveMail)list.get(i);
%>
<tr>
<td class="t2" ><%=mail.getReceiveid()%></td>
<td class="t2"><%=mail.getUid()%></td>
<td class="t2"><%=mail.getSubject()%></td>
<td class="t2"><%=mail.getScontent() %></td>
<td class="t2"><%=mail.getState() %></td>
<td class="t2_2"><%=mail.getStime() %></td>
<td class="t2_2"><%=mail.getRecontent() %></td>
<td class="t2_2"><%=mail.getRetime() %></td>
<td class="t2"><a href="javascript:openwindow('Detail_prize.jsp?id=',<%=mail.getReceiveid()%>,'<%=mail.getUid()%>')">回复</a></td>
</tr>
<%
} }catch(Exception e){
System.out.println("显示出错");
}
%>
</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" οnchange="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>
<%}%>
</div>
</body>
省略了EmaiBean这块封装代码。