当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > RedHatLinux网络服务器构架实务(七)

Linux服务器
linux下用cron定时执行任务的方法
.htaccess绑定域名到子目录的方法
linux apache下虚拟主机配置方法
apache 局域网访问配置方案
linux Apache服务器系统安全设置与优化
linux中mac地址绑定方法
linux托盘不断闪烁之解决方法
Apache配置 虚拟转向实例
Apache No space left on device的解决办法
Apache rewrite的重写相关的参数说明
LINUX入门级常用命令20条整理
Ubuntu设置开机自动挂载所有格式硬盘分区
5个可能被你忽略的Linux安全设置方法
学习Apache的mod rewrite、access写法
改版时保留原链接,创建新的URL的方法
rsync中文手册之使用rsync实现网站镜像和备份linux
rsync 数据同步使用详解
linux URL的301重定向代码分析
eclipse3.2.2 + MyEclipse5.5 + Tomcat5.5.27 配置数据库连接池
Apache服务器二级域名的完美实现

Linux服务器 中的 RedHatLinux网络服务器构架实务(七)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 69 ::
收藏到网摘: n/a


vi/home/www/cnmsql.jsp
##源代码如下:

<%@pagelanguage="java"import="java.sql.*"%>
<%
Class.forName("org.gjt.mm.mysql.Driver");
Connectionconn=DriverManager.getConnection("jdbc:mysql://host_name/db_name","user_name","password");
Statementstmt=conn.createStatement();
ResultSetrs=stmt.executeQuery("select*fromprov");
rs.next();
out.print(rs.getString("prov_id")+""+rs.getString("prov_name")+"<br>");
rs.next();
out.print(rs.getString("prov_id")+""+rs.getString("prov_name")+"<br>");
rs.previous();
out.print(rs.getString("prov_id")+""+rs.getString("prov_name")+"<br>");
rs.last();
out.print(rs.getString("prov_id")+""+rs.getString("prov_name")+"<br>");
rs.first();
out.print(rs.getString("prov_id")+""+rs.getString("prov_name")+"<br>");
rs.close();
stmt.close();
conn.close();
%>

4测试该程序
lynxhttp://www.yesgo.loc/cnmysql
##正确的结果应该是:

1安徽
2北京
1安徽
34台湾
1安徽

例二:使用连接池连接数据库
1建立数据源
vi/usr/local/resin/conf/resin.conf

<resource-ref>
<res-ref-name>jdbc/yesgo</res-ref-name>//数据源名称
<res-type>javax.sql.DataSource</res-type> //数据源类型
<init-paramdriver-name="org.gjt.mm.mysql.Driver"/>//数据库驱动
<init-paramurl="jdbc:mysql://localhost/yesgo"/>//连接串
<init-paramuser="your_user_name"/>//用户名
<init-parampassword="your_password"/>//密码
<init-parammax-connections="20"/>//最大连接数
<init-parammax-idle-time="30"/> //延时时间
</resource-ref>

2创建JSP源文件
touch/home/www/testpool.jsp
chown-Rwww/home/www/testpool.jsp
chgrp-rroot/home/www/testpool.jsp
chmod771/home/www/testpool.jsp

vi/home/www/testpool.jsp
##源代码如下:

<%@pagelanguage="java"import="java.sql.*,com.caucho.sql.*;"%>
<%
DBPoolpool=newDBPool();
Connectionconn=pool.getPool("data_source_name").getConnection();
Statementstmt=conn.createStatement();
ResultSetrs=stmt.executeQuery("select*fromprov");
rs.next();
out.print(rs.getString("prov_id")+rs.getString("prov_name")+"<br>");
rs.next();
out.print(rs.getString("prov_id")+rs.getString("prov_name")+"<br>");
rs.previous();
out.print(rs.getString("prov_id")+rs.getString("prov_name")+"<br>");
rs.last();
out.print(rs.getString("prov_id")+""+rs.getString("prov_name")+"<br>");
rs.first();
out.print(rs.getString("prov_id")+rs.getString("prov_name")+"<br>");
rs.close();
stmt.close();
conn.close();
%>

3调试该程序
lynxhttp://www.yesgo.loc/testpool.jsp
##处理的结果跟例一是一样的:

1安徽
2北京
1安徽
34台湾
1安徽

例三:使用处理层连接数据库
##本例告诉你如何使用组件
##其实你完全可以写一个bean来处理数据库,而不用象例二那么罗索。只用四条语句就可以取出数据库中的所有数据并显示出来,这样做实现了处理层和逻辑层的彻底分离,由逻辑层发出指令、由处理层去响应相关处理,记录集也不会返回到逻辑层的jsp页面,而由处理层的bean处理,使得代码非常精简,效率也更高。至于如何书写组件不是本文档的重点,下面仅给出一个组件的例子并说明逻辑层的调用方法,你会发现其实逻辑层是个官僚,处理层是下属,呵呵。

1创建处理层组件

下面的组件是我为公司写的数据库处理组件的简化版本,考虑到篇幅和可读性等问题,这里我简化了它的功能(象数据分页、批量更新、获取字段数和字段名称,用set和get提高其扩展性、对其他连库方法的支持等都没有出现在下面的代码中),使之包含所有常用的功能并使之更加清晰和易于理解;其二,我将连库动作加到了构造函数中,这是个优点也是个缺点,优点是简化了连库动作,缺点是降低了通用性,我没有添加设置数据源等方法,从而每当变换一次数据库就需要改写组件中的连接池名称,这在做一个固定项目的时候是可以的,如果你需要set数据源,可以自行添加;
##使用组件的方法:
我这里说的是使用bean的通用方法,你建立自己的bean目录可以仿照该例子。在你的站点根目录下建立resin.conf中指定的存放bean的目录,我上面的举例是classes,那你就建立classes目录,那么classes就是你站点的class根目录。然后在下面依次建立com\gledecity\yesgo\sql,注意它们之间是父子关系,不是同级文件夹,然后将下面即将建立的DBBridge.java放到"站点根目录\classes\com\gledecity\yesgo\sql"目录下,然后将该文件上传到服务器端即可。上面的步骤在微软平台上使用UltraDev之类的开发工具即可完成,当然手工也可以。

源文件如下:

//------------------------------------------------------------------------------
//File:DBBridge.java
//Copyright(c)2001-2002Mr.FengjunZhao.AllRightsReserved.
//Author:赵凤君@06/18/01
//LastRevision:赵凤君@01/18/2002
//Description:数据库接口类。一个统一的数据库接口,实现了逻辑层和数据层的彻底分离,封装了常用的数据库操作。主要功能是:连接数据库、执行SQL语句、数据库取值操作、数据分页、清除数据、关闭数据库等。
//Version:简化版1.0
//------------------------------------------------------------------------------

//指定包目录
packagecom.gledecity.yesgo.sql;

//导入包
importjava.sql.*;
importcom.caucho.sql.*;

publicclassDBBridge{
//声明属性
privateDBPoolpool;
privateConnectionconn;
privateResultSetrs;
privateStatementstmt;

//--------------------------------------构造函数---------------------------------
publicDBBridge(){
 pool=null;
 conn=null;
 rs=null;
 stmt=null;
 try{open();}
catch(java.sql.SQLExceptionex){ex.toString();}
}
//

//连接数据库的方法
publicvoidopen()
throwsSQLException{
 if(conn!=null&&!conn.isClosed())
thrownewSQLException("Theconnectionhasbeenestablishedalready.");
 clear();
 pool=newDBPool();
 conn=pool.getPool("your_data_source_name").getConnection();
}

//执行SQL语句的方法,将JDBC中的executeQuary()和executeUpdate()两个方法//合而为一,注意返回值为整形,
publicintexecSQL(StringsqlStmt)
throwsSQLException{
 if(conn==null||conn.isClosed())
thrownewSQLException("Thisconnectionhasnotbeenestablishedyet.");
 if(sqlStmt==null)
thrownewSQLException("SQL-statementisnull.");
 clear();
 conn.setAutoCommit(true);
 stmt=conn.createStatement();
 if(sqlStmt.toUpperCase().startsWith("SELECT")){
rs=stmt.executeQuery(sqlStmt);
return-1;
 }
 else{
intnumRow=stmt.executeUpdate(sqlStmt);
clear();
returnnum