当前位置:  技术问答>java相关

关于分页……

    来源: 互联网  发布时间:2015-05-07

    本文导语:  不用Vector,如何实现象csdn这样的分页方式?????? | Hafele今天又重新看了JSP论坛(v1.0)的代码,觉得里面有很多是重复的,如分页技术;现在写了一个分页   JavaBean,等有更多的时间再整...

不用Vector,如何实现象csdn这样的分页方式??????

|
Hafele今天又重新看了JSP论坛(v1.0)的代码,觉得里面有很多是重复的,如分页技术;现在写了一个分页  

JavaBean,等有更多的时间再整理一下JSP论坛的代码。当然里面的还有很多逻辑可以用JavaBean来写的,有待  

慢慢改进。不过在此声明,我对JavaBean也不是很了解,希望高手多多指点,当然更希望这些垃圾代码能够对  

你有所帮助。  
该JavaBean必须调用另一个连接数据库的JavaBean,该JavaBean所用到的数据库是MySql,不过你可以通过  

修改Linkdb.java来将其改为另一种数据库。为了使代码容易理解,我尽量做了解释。代码具体如下:  

一、连接数据库的JavaBean:Linkdb.java  

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Linkdb.java%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
package pagination;  

import java.sql.*;  

public class Linkdb {  
String strDriver="org.gjt.mm.mysql.Driver";  
//使用时请具体修改数据库名称,用户名和密码。  
String strConn="jdbc:mysql://localhost/forum?user=root&password=admin";  
private Connection conn = null;  
private Statement stmt = null;  
ResultSet rs = null;  

public Linkdb()  
{  
//连接MySql_jdbc驱动程序  
try {  
Class.forName(strDriver).newInstance();  
} catch (Exception E) {  
System.err.println("不能连接MySql数据库!");  
}  
}  
//执行Select语句  
public ResultSet executeQuery(String sql) {  
rs = null;  
try {  
conn = DriverManager.getConnection(strConn);  
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);  
rs = stmt.executeQuery(sql);  
}catch(SQLException ex) {  
System.err.println("执行SQL语句出错:" + ex.getMessage());  
}  
return rs;  
}  

//执行Insert,Update语句  
public void executeUpdate(String sql) {  
stmt = null;  
rs=null;  
try {  
conn = DriverManager.getConnection(strConn);  
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);  
stmt.executeQuery(sql);  
stmt.close();  
conn.close();  
}  
catch(SQLException ex) {  
System.err.println("执行SQL语句出错: " + ex.getMessage());  
}  
}  

public void closeStmt(){  
try{  
stmt.close();  
}  
catch(SQLException e){  
e.printStackTrace();  
}  
}  

public void closeConn(){  
try{  
conn.close();  
}  
catch(SQLException e){  
e.printStackTrace();  
}  
}  
}  

二、分页的JavaBean:Pagi.java  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Pagi.java%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
package pagination;  

import java.util.*;  
import java.sql.*;  
import java.io.*;  
import javax.servlet.*;  
import javax.servlet.http.*;  

public class Pagi  
{  
ResultSet CountTopicrs=null; //初始化总记录数Rs变量  
ResultSet Pagirs=null; //初始化分页时Rs变量  

public int intCountTopic=0; //主题总数  
public int intPageSize; //每页显示主题数  
public int intPageCount; //总页数  
public int intPage=1; //当前页数  
// int i;  

public String nowPage; //初始化当前页intPage变量,以准确便获取当前页。  
public String HttpFile; //当前的地址栏的文件。  

Linkdb db; //定义Linkdb类的一个对象。  
//定义构造器,初始化每页显示的主题数和数据库的连接。  
public Pagi(){  
intPageSize=2;  
db = new Linkdb();  
}  

//Countsql:总记录的Query字符串。[形式为select count(*) from tablename]  
//Pagisql :要分页的Query字符串。[形式为select * from tablename where ...]  
//request :参数传递过程中的变量。[用来控制翻页时的pages变量]  

public ResultSet querySql(String Countsql,String Pagisql,HttpServletRequest request)  
throws SQLException{  
//获取当前文件名。  
HttpFile=request.getRequestURI();  

//获取当前页,将数值赋予intPage变量。[分页栏中必须要有pages参数]  
nowPage=request.getParameter("pages");  

if (nowPage==null){ intPage=1; }  
else{ intPage=Integer.parseInt(nowPage);  

if (intPageintPageCount)  
{  
intPage=intPageCount;  
}  
//关闭总主题数的数据集。  
CountTopicrs.close();  

//获取执行分页的结果集。  
Pagirs=db.executeQuery(Pagisql);  
return Pagirs;  
}//end querySql function.  

//获取记录总数。  
public int getCountTopic()  
{  
return intCountTopic;  
}  

//获取总页数。  
public int getPageCount()  
{  
return intPageCount;  
}  

//获取当前页数。  
public int getIntPage()  
{  
return intPage;  
}  

//获取当前页的数据。boodata为True,表示要加入该数据到当前页。  
//这里可能会在JSP调用时影响速度[因为调用时要多一层循环],因此放到JSP中嵌入,待改进。  
//该代码暂时保留。  
// public boolean getData(){  
// boolean boodata=false;  
// if (intPageCount>0)  
// {  
// try  
// {  
// while (Pagirs.next())  
// {  
// i++;  
/// if (i>((intPage-1)*intPageSize) &&(i1)  
str += " 第一页 ";  
else str += " 第一页 ";  

if(intPage>1)  
str += " 上一页 ";  
else str += " 上一页 ";  

if(intPage1&&intPage!=intPageCount)  
str += " 最后页";  
else str += " 最后页 ";  

return str;  
}  

} //end.  

三、调用实例:testpage.jsp  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%testpage.java%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  
  
  
  

  
  
0)  
{  
int i=0;  
while (rs.next())  
{  
i++;  
String aa="";  
String bb="";  
if (i>((pagi.intPage-1)*pagi.intPageSize) &&(i  
  
  
  
  
  
给分,ok?

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 初学jsp,关于分页的问题,给100分!
  • 关于截分文件的问题?分不够可再加
  • 重分悬赏!!!哪儿有关于JAVA,JSP的各种对象,方法,属性的详细的中文参考书下载.(140分,分批给)
  • 哪一位高手能提供关于进程池的完整的概念?30分奉送!!
  • 关于JSP的图例,毕业答辩用的.给100分
  • 请问那位大虾有关于EJB(包括Servlet,jsp)的项目例子 100分奉送呀!
  • 放500分,各位把自己知道关于Linux的网址贴出来吧
  • 编程语言 iis7站长之家
  • ★★★快来抢100分★★★:哪里有关于jbuilder开发的源程序??
  • 100分:关于FreeBSD中loader的问题
  • 100分!关于管道的问题
  • 100分求救,谁有做好的关于JSP于数据库操作的源代码?
  • 关于ssl,100分!!
  • 关于Bochs-2.0.2(UNIX模拟环境),价格100分
  • 200分求救:关于OpenNMS。在线等!!!:)
  • 一个关于rsh的问题(100分)
  • 关于自动的备份问题(100分)
  • 100分求助:关于linux下配置sendmail的问题
  • 关于AIX5L编译问题……急 100分
  • 80分请教关于内核的module机制


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3