免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1077 | 回复: 0
打印 上一主题 下一主题

Tomcat数据库连接池 + JavaBean + 分页技术 + JDBC3.0 + 大型数据库 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-26 00:29 |只看该作者 |倒序浏览
主要特色:  
1.使用最新的JDBC3.0数据库驱动。  
2.大幅度减化了JSP的反复调用JavaBean,可以直接写SQL,无须再使用连接数据库连接池。  
3.将大量的工作交给JavaBean做,JSP负责页面控制。  
4.最大特色是极其简单,程序编写也极其简单,非常适合初学者。  
5.使用的是"汤母猫"数据库连接池,方便快速。  

《page.jsp》*******************************************************************  
文件名《page.jsp》  
  
  
  
  
  
   
  
  
商品编号  
商品名称  
  
0)      
{      
int  i=0;      
while  (rs.next())      
{      
i++;      
if  (i>((pagi.intPage-1)*pagi.intPageSize)  &&(i  
  
  
  
  
"+footer+"");  
rs.close();   
pagi.close_all();  
%>  
  
  
  


****************************************文件名《pagi.java》*********************************************************  

文件名《pagi.java》  
package  my;      

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

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;  //当前页数   
public  String  nowPage;  //  int  i;  
public  String  HttpFile;//初始化当前页intPage变量,以准确便获取当前页。  //当前的地址栏的文件  
DB  db;  //定义Linkdb类的一个对象。  

public  Pagi()//定义构造器,初始化每页显示的主题数和数据库的连接。  
{  
intPageSize=4;    //每页显示的记录数目  
db  =  new  DB();   
}  

//Countsql:总记录的Query字符串。[形式为select  count(*)  from  tablename]      
//Pagisql  :要分页的Query字符串。[形式为select  *  from  tablename  where  ...]      
//request  :参数传递过程中的变量。[用来控制翻页时的pages变量]      
public  ResultSet  querySql(String  Countsql,String  Pagisql,HttpServletRequest  request)throws  Exception  
{  
HttpFile=request.getRequestURI();    //获取当前文件名。   
nowPage=request.getParameter("pages");    //获取当前页,将数值赋予intPage变量。[分页栏中必须要有pages参数]   
if  (nowPage==null)  
{   
intPage=1;   
}  
else  
{   
intPage=Integer.parseInt(nowPage);   
if  (intPageintPageCount)//如果当前页大于总页数,则当前页等于总页数。   
{  
intPage=intPageCount;      
}      
CountTopicrs.close();    //关闭总主题数的数据集。  
               db.close_all();  
Pagirs=db.executeQuery(Pagisql);    //@@@@@@@@@@@@@@@获取执行分页的结果集。   
return  Pagirs;      
}//end  querySql  function.      

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

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


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

public  String  PageFooter()   
{      
String  str  =  "";      
int  next,  prev;      
prev=intPage-1;      
next=intPage+1;      
str  +=  "查询到"+getCountTopic()+"条记录"+  
"        共"+getPageCount()+"页";      
str  +="  第"+getIntPage()+"页  ";      
if(intPage>1)   
str  +=  "  首页  ";      
else   
str  +=  "  首页  ";      
if(intPage>1)  
str  +=  "  上一页  ";      
else  
str  +=  "  上一页  ";      
if(intPage下一页  ";      
else   
str  +=  "  下一页  ";      
if(intPageCount>1&&intPage!=intPageCount)      
str  +=  "  尾页";      
else  
str  +=  "  尾页  ";      

return  str;      
}   
       public  void  close_all()   
{  
               db.close_all();  
}  
}  



************************************************文件名《DB.java》********************************************************  
文件名《DB.java》  
package  my;  

import  java.sql.*;  
import  javax.naming.*;  
import  javax.sql.DataSource;  
//一个用于查找数据源的工具类。  
public  class  DB  {  
private  Connection  con=null;  
private  Statement  stmt=null;  
ResultSet  rs=null;  

public    ResultSet  executeQuery(String  sql)  throws  Exception  
{  
rs=null;  
try  
{        
Context  initCtx  =  new  javax.naming.InitialContext();   
                       Context  envCtx  =  (Context)  initCtx.lookup("java:comp/env");   
                       DataSource  ds  =  (DataSource)envCtx.lookup("jdbc/bn");   
       con=ds.getConnection();  
       stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);  
rs=stmt.executeQuery  (sql);  
}  
catch(SQLException  e){throw  e;}  
catch(NamingException  e){throw  e;}  

return  rs;  
}  


       //执行Insert,Update语句      
public  void  executeUpdate(String  sql)  throws  Exception  
{  
stmt  =  null;      
rs=null;      
try  
{      
       Context  initCtx  =  new  javax.naming.InitialContext();   
                       Context  envCtx  =  (Context)  initCtx.lookup("java:comp/env");   
                       DataSource  ds  =  (DataSource)envCtx.lookup("jdbc/bn");   
       con=ds.getConnection();  
       stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);  
stmt.executeQuery(sql);      
stmt.close();      
con.close();      
}  
catch(SQLException  ex)   
{  
System.err.println("执行SQL语句出错:  "  +  ex.getMessage());      
}  
}  


//  关闭stmt和关闭连接  
public  void  close_all()      
{      
try{  
stmt.close();  
con.close();  
}      
catch(SQLException  e){e.printStackTrace();}      
}      
}  


***************************************《汤母猫中的数据库连接池的设置》********************************************************************************  
……  
……  
……  
  
         
  
         
               factory  
               org.apache.commons.dbcp.BasicDataSourceFactory  
                 

      


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/25374/showart_190549.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP