您的位置:首页 > 编程语言 > Java开发

非常简洁可读性非常强的分页JavaBean

2006-07-07 01:24 316 查看
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 类我博客上的其他文章里可以找到.叫连接池那篇文章.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: