Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > 网站开发经验总结1--Tomcat与Mysql连接
【标  题】:网站开发经验总结1--Tomcat与Mysql连接
【关键字】:Tomcat,Mysql
【来  源】:http://blog.csdn.net/czzju/archive/2007/04/18/1569053.aspx

网站开发经验总结1--Tomcat与Mysql连接

Your Ad Here   这段时间,公司业务转向,我负责开发企业网站。由于项目的目标与我原来的技术背景有很大差异,因此在开发中边开发边学习,也走了不少弯路,遇到各种非常奇怪的问题,其中有版本配合,中文资源,软件配置等等。为了解决问题,我也上论坛,访问大牛的BLOG,百度、google,总之通过前辈们的指点,项目终于初见规模了。乘QA测试的间隙,我对自己使用的技术,遇到问题的解决方法进行归纳与总结。

        一、Tomcat与Mysql连接

        我从事的项目是中小型的网站,使用的服务器是Tomcat,数据库是Mysql。Tomcat的版本是5.0.28,Mysql的版本是5.0.22,JDK版本是1.4.2.14。注意,在构架网站时,各个软件的版本是非常重要的,在这上面我就吃了不少苦头,这恐怕是每位初学者肯定会碰到的问题和应付的代价。在文章中我也会将我在版本上遇到的问题与解决方案加以说明。

        网站的开发,在需求分析完成后,就是数据库的设计,数据库表单与字段设计不是我今天要讨论的问题。我们的焦点集中在如何使我们的数据库使用方便,更健壮。

       1、安装

       这个环境很简单,在网上google一下就可以找到各种版本安装手册与要点。

      step1:安装j2sdk-1.4.2.14

      step2:安装Tomcat5.0.28

      step3:安装Mysql5.0.22

      step4:安装mysql-connector-java-5.0.4-bin.jar到TOMCAT\common\lib

      step5:设置环境变量

      安装完毕,可以开工了:)

     2、获得数据库

    “获得链接” 对于初学者来说,应该不是什么难事,网上大量的入门文章都给出了简单而直观的方法,如在jsp文件中插入java代码如下:

 

    String server = "127.0.0.1";   // Can't use localhost , you must use IP or CNAME 
    
String port = "3306";  //change to your port 
    
String db = "publish";  //change to your db name
    
String user = "root"; //change to your username
    
String pass = "123456"; //change to your password
    
String URL="jdbc:mysql://"+server+":"+port+"/"+db+"?useUnicode=true&characterEncoding=GBK&user="+user+"&password="+pass;
        Class.forName(driverName).newInstance(); //载入驱动器
        conn = DriverManager.getConnection(url); //连接到数据库

           其中conn就是数据库链接。但是这样的代码在项目中使用却是一个灾难,使用用户名、密码、服务器名等信息散布在程序的各个角落,这是让维护代码的工程师想想就崩溃的事情。

          显然关于用户名、密码、服务器名等信息应该在配置文件中,在配置文件修改后,服务器重新发布就可以生效了,而不再需要程序员的干涉。

          在我的项目中我的配置文件内容如下:

<Context path="/ProServer" reloadable="true" >
 
<Resource name="jdbc/database" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" password="123456" maxIdle="10"  maxWait="10000"  username="user"  url="jdbc:mysql://localhost:3306/dbname?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8"  maxActive="50" removeAbandoned = "true" removeAbandonedTimeout="300" logAbandoned = "false"/>
  
  
<Resource auth="Container" description="DB Connection" name="jdbc/database" type="javax.sql.DataSource"/>
  
<ResourceParams name="jdbc/database">
    
<parameter>
      
<name>url</name>
      
<value>jdbc:mysql://localhost:3306/dbname?useUnicode=true&amp;characterEncoding=utf8</value>
    
</parameter>
    
<parameter>
      
<name>password</name>
      
<value>12345678</value>
    
</parameter>
    
<parameter>
      
<name>maxActive</name>
      
<value>5</value>
    
</parameter>
    
<parameter>
      
<name>maxWait</name>
      
<value>5000</value>
    
</parameter>
    
<parameter>
      
<name>driverClassName</name>
      
<value>com.mysql.jdbc.Driver</value>
    
</parameter>
    
<parameter>
      
<name>username</name>
      
<value>root</value>
    
</parameter>
    
<parameter>
      
<name>maxIdle</name>
      
<value>10</value>
    
</parameter>
  
</ResourceParams>
 
  
</Context>

         在配置文件中,我们可以看到有两个<Resource>这是分别针对Tomcat5.5(第一个)和Tomcat5.0(第二个)进行设置。其中<name>maxActive</name>表示Mysql的最大链接数,如果超过该链接数,程序将无法获得链接。

        有了配置文件,我们设计一个类对其进行分析:

 

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class Comm {
    
private static Context initialContext;
    
private static DataSource dataSource;

    
public static Context getInitialContext() throws NamingException {
          
if (initialContext == null{
              initialContext 
= new InitialContext();
          }

          
return initialContext;
    }

    
    
public static DataSource getDataSource() throws NamingException{
        
if(dataSource == null){
            Context ctx 
= getInitialContext();
            dataSource 
= (DataSource) ctx.lookup("java:comp/env/jdbc/dbname");
        }

        
return dataSource;
    }

}

        这样,我们通过调用Comm中的静态方法getDataSource()就可以得到数据源。在这之后,我们就可以设计正对数据库进行操作的类了,如下所示:

import java.sql.*;
import javax.sql.DataSource;
import Comm;

public class dbconn {
     
public dbconn(){}
     
//declare variable
     private DataSource ds;
     
private Connection conn = null;
     
private ResultSet rs = null;

     
public Connection getConn(){  //get database connection
      try{
                           ds 
= DreyeComm.getDataSource();
          conn 
= ds.getConnection();
             }

      
catch(Exception e){
          e.printStackTrace();
      }

         
return conn ;
     }

     
     
public void destroyConn(){
        
try{
           conn.close();
        }

        
catch(Exception e){
           e.printStackTrace();
        }

     }


     
public ResultSet executeSQL(String str) {
      
try{
        Statement stmt 
= conn.createStatement(); //语句接口
        rs = stmt.executeQuery(str);  //获得结果集
      }

      
catch(Exception e){
        e.printStackTrace();
      }

        
return rs;
     }

     
     
public void updateSQL(String str){
        
try{
             Statement stmt 
= conn.createStatement(); //语句接口
             stmt.executeUpdate(str);  //获得结果
        }

       
catch(Exception e){
             e.printStackTrace();
        }

                       }

}

          从代码中我们可以,使用dbconn类,我们可以轻松的实现数据库的各种操作。

          3、总结

          上面我们给出了在Tomcat中链接Mysql较好的一种解决方案,使用这种方式进行中小型网站的数据库开发是相对合适的。最后,在开发中还有一些注意事项:

  •  在配置文件中有一段设置:useUnicode=true&amp;characterEncoding=utf8,该处的设置定义了访问数据库时使用的编码未“utf8”,这就方便的开发人员,不再需要在每次访问数据库时进行:set name ‘utf8’的设置了。这应该是一个小技巧
  • 在获得数据库链接后(使用dbconn类的getConn()方法),完成数据库处理,就应该关闭链接。因为配置文件中也有设置数据库的最大链接数,因此,只用不释放,很快就会使资源耗尽,这与java的自动释放无关。在个问题很容易在jsp文件中使用用到数据库的bean时产生。不过这个问题也很容易发现,只要在测试时将maxActive设为很小,如果系统报错无法获得链接,就是没有很好的释放链接。  
Java中请求HTTPS加密的源代码:【上一篇】
比较Template method、Strategy和Builder模式随想:【下一篇】
【相关文章】
  • 用JSP调用以Web应用形式部署在Tomcat 5.5中的SCA服务组件的例子
  • 为你的MySQL数据库加铸23道安全门
  • Mysql常用数学函数
  • Java开源旅程之二 MyEclipse上配置服务器(Tomcat为例)
  • Tomcat+DB2数据库连接池设置
  • 也谈Apache、PHP和mySQL的配置
  • mysql cluster disk data storage 在mysql cluster中的运用
  • Tomcat5.5+mysql数据库连接池的配置
  • mysql常用命令四(数学函数用法代码)
  • mysql常用命令五(重要的语句用法)
  • 【随机文章】
  • 关于web应用程序安全的思考(二)
  • Ulead SmartSaver Pro 3.0秘籍点点通(一)
  • 数据完整性概述
  • 一个清爽便利的Windows游戏窗口
  • Perl6与唐宗汉
  • 大话 C89/C99
  • 关于:”有多少女生会嫁给没房的男人“的调查
  • 使用Hibernate的一个完整例子
  • 用OLLYDBG给Win设置大师 脱壳
  • 使用Annotation设计持久层
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.