Page.java
package com.china3cts;
import java.sql.*;
import java.io.*;
import java.lang.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.china3cts.dbop;
public class Page extends HttpServlet
{
private int Pno;
private int Page;
private int Total;
private int Pages;
private String GSQL;
private String MSQL;
private dbop conn;
public void setGSQL(String inGSQL)
{
this.GSQL=inGSQL;
}
public void setMSQL(String inMSQL)
{
this.MSQL=inMSQL;
}
public int getTotal()
{
return this.Total;
}
public int getPage()
{
return this.Page;
}
public int getPages()
{
return this.Pages;
}
public void setPno(int inPno)
{
this.Pno=inPno;
}
public int getPno()
{
return this.Pno;
}
public ResultSet PageMe(HttpServletRequest request,HttpServletResponse response)
throws IOException, ServletException
{
PrintWriter out = response.getWriter();
//获取当前页
String strPage=request.getParameter("page");
if (strPage==null)
{
Page=1;
}
else
{
Page=Integer.parseInt(strPage);
}
//获取总记录数
dbop conn=new dbop();
ResultSet rs=null;
try
{
rs=conn.execute(MSQL);
if(rs.next())
{
Total=rs.getInt(1);
}
else
{
Total=0;
}
rs.close();
}
catch (SQLException e)
{
out.println(e.toString());
}
//获取总页数
if (Pno==0)
{
Pno=20;
}
Pages=(Total+Pno-1)/Pno;
//获取已分好页的记录.
if (Total>0)
{
try
{
Prs=conn.execute(GSQL);
}
catch (Exception e)
{
out.println(e.toString());
}
}
else
{
return null;
}
return rs;
}
}
测试调用JSP.test.jsp
<%@ page contentType="text/html;charset=GBK"%>
<%@ page language="java" import="java.sql.*" %>
<jsp:useBean id="pm" scope="page" class="com.china3cts.Page" />
<%
String MSQL="Select count(id) from table";
String GSQL="Select * from table order by id Asc";
pm.setPno(10);
pm.setGSQL(GSQL);
pm.setMSQL(MSQL);
ResultSet rs=pm.PageMe(request,response);
int Total=pm.getTotal();
int Pages=pm.getPages();
int Page=pm.getPage();
int Pno=pm.getPno();
out.print("<br>Total:");
out.print(Total);
out.print("<br>Page:");
out.print(Page);
out.print("<br>Pages:");
out.print(Pages);
out.print("<br>Pno:");
out.print(Pno);
%>
解释与说明:
1为什么说是简洁呢?
这个只是把一些内在的东西封闭了.比如.参数page
2为什么可读呢?省去了一堆判断的东西.比如.页数据啊什么的.
看到if else就烦人.对吧.
实际运用的时候也就五行搞定了.
String MSQL="Select count(id) from table";
String GSQL="Select * from table order by id Asc";
pm.setPno(10);
pm.setGSQL(GSQL);
pm.setMSQL(MSQL);
ResultSet rs=pm.PageMe(request,response);
3,这个豆豆只是把记录作一下分页的属性提取.
并没有真正意义上去分页.谈不上什么高效与否.
但是你得到了RS,就随便你怎么分了.想怎么分就怎么分.
用vector或者其他的都随你便了.
简单的就如这个可以了.
i = (intPage-1) * intPageSize;
for(j=0;j<i;j++) RS.next();
//out.print(sql);
i=0;
while(i<intPageSize && RS.next())
{
// 数据显示....
i++;
}
5:dbop 类我博客上的其他文章里可以找到.叫连接池那篇文章.