love fish大鹏一曰同风起,扶摇直上九万里

常用链接

统计

积分与排名

friends

link

最新评论

Tomcat数据库连接池 + JavaBean + 分页技术 + JDBC3.0 + 大型数据库- -

主要特色:  
1.使用最新的JDBC3.0数据库驱动。  
2.大幅度减化了JSP的反复调用JavaBean,可以直接写SQL,无须再使用连接数据库连接池。  
3.将大量的工作交给JavaBean做,JSP负责页面控制。  
4.最大特色是极其简单,程序编写也极其简单,非常适合初学者。  
5.使用的是"汤母猫"数据库连接池,方便快速。  
 
《page.jsp》*******************************************************************  
文件名《page.jsp》  
<%@  page  language="java"  import="java.sql.*,  my.*"  %>  
<%@  page  contentType="text/html;  charset=gb2312"  %>  
<jsp:useBean  id="pagi"  scope="page"  class="my.Pagi"/>  
<html>  
<body>  
<table    align="center"  border=1>    
<%    
String  CountQuery="select  count(*)  from  商品资料";      
String  query  =  "select  *  from  商品资料";      
ResultSet  rs  =  pagi.querySql(CountQuery,query,  request);      
String  footer  =  pagi.PageFooter();    
%>  
<tr>  
<td  >商品编号</font></td>  
<td  >商品名称</font></td>  
</tr>  
<%  
if  (pagi.intPageCount>0)      
{      
int  i=0;      
while  (rs.next())      
{      
i++;      
if  (i>((pagi.intPage-1)*pagi.intPageSize)  &&(i<=pagi.intPage*pagi.intPageSize))      
{      
%>  
<tr>  
<td><%=rs.getString(1)%></td>  
<td><%=rs.getString(2)%></td>  
</tr>  
<%  
}  
}    
}    
out.println("<tr><td  colspan=2>"+footer+"</td></tr>");  
rs.close();    
pagi.close_all();  
%>  
</table>  
</body>  
</html>  
 
 
****************************************文件名《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  (intPage<1)    
intPage=1;    
}  
 
       CountTopicrs=db.executeQuery(Countsql);  //@@@@@@@@@@@@获取总记录数的结果集。    
 
if  (CountTopicrs.next())      
{  
intCountTopic=CountTopicrs.getInt(1);      
}  
intPageCount  =  (intCountTopic+intPageSize-1)/intPageSize;    //获取总页数。  
 
if  (intPage>intPageCount)//如果当前页大于总页数,则当前页等于总页数。    
{  
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  +=  "查询到<font  color=red>"+getCountTopic()+"</font>条记录"+  
"        共<font  color=red>"+getPageCount()+"</font>页";      
str  +="  第<font  color=red>"+getIntPage()+"</font>页  ";      
if(intPage>1)    
str  +=  "  <A  href="  +  HttpFile  +  "?pages=1"+">首页</A>  ";      
else    
str  +=  "  首页  ";      
if(intPage>1)  
str  +=  "  <A  href="  +  HttpFile  +  "?pages="  +  prev  +  ">上一页</A>  ";      
else  
str  +=  "  上一页  ";      
if(intPage<intPageCount)      
str  +=  "  <A  href="  +  HttpFile  +  "?pages="  +  next  +  ">下一页</A>  ";      
else    
str  +=  "  下一页  ";      
if(intPageCount>1&&intPage!=intPageCount)      
str  +=  "  <A  href="  +  HttpFile  +  "?pages="  +  intPageCount  +    
">尾页</A>";      
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();}      
}      
}  
 
 
***************************************《汤母猫中的数据库连接池的设置》********************************************************************************  
……  
……  
……  
<Context  path="/SQL"  docBase="D:\SQL_JSP"  debug="0"  reloadable="true"  crossContext="true">  
       <Resource  name="jdbc/bn"  auth="Container"  type="javax.sql.DataSource"/>  
<ResourceParams  name="jdbc/bn">  
       <parameter>  
               <name>factory</name>  
               <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>  
               </parameter>  
 
       <parameter>

posted on 2006-05-25 09:26 liaojiyong 阅读(365) 评论(0)  编辑  收藏 所属分类: Java


只有注册用户登录后才能发表评论。


网站导航: