java web应用连接数据库&nbsp…

来源:互联网 发布:sql配置管理器在哪 编辑:程序博客网 时间:2024/06/05 09:59
java web 应用连接数据库的时候可以采用两种方式
            java.sql.*  DriverManager  获取数据库连接   然后使用statement  preparedstatement  resultset操作数据库。   这种方式存在的弊端是数据库名  用户名 密码都需要硬编码在代码中,一旦这些东西发生变化 那么整个程序需要重新编译
           javax.sql.*  使用DataSource的方案,这种方案采用连接池的方式,对于这样的资源 在web应用中 我们可以配置在context.xml中 这样  我们只需要查表的方式用JNDI  来获取连接池的连接,数据库名 用户名 密码的更改 只需要通过修改 context.xml  文件就可以了
           context.xml可以配置在2个地方
          (1)tomcat服务器 tomcat/conf/context.xml
                  直接在文件中加入
                 
             auth="Container"
             type="javax.sql.DataSource"
             driverClassName="org.gjt.mm.mysql.Driver"
             url="jdbc:mysql://localhost/testforjavajdbc"
             username="root"
             password="root"
             maxActive="100"
             maxIdle="30"
             maxWait="10000"/>
              服务器会在开启时加载资源,应用通过JNDI  可以用NAME的方式来访问资源

         (2)配置在应用 webroot/META-INF下
                 创建context.xml 文件



         type="javax.sql.DataSource"driverClassName="com.mysql.jdbc.Driver"
         url="jdbc:mysql://127.0.0.1:3306/testforjavajdbc"
         username="root" password="root" >


                需要注意  webapp中的文件 都要通过配置 web.xml  来实现被服务器发现,如果服务器找不到文件定义,那么可能报异常,e.g.如果只添加context.xml 不修改web.xml  那么app将会跑不起来
          需要在web.xml 中需要加
    
  jdbc/testforjavajdbc 
  javax.sql.DataSource 
  
        定义资源名和类型


    配置完成  程序中试一下
      Context ctx = new InitialContext();
          DataSourceods = (DataSource) ctx
               .lookup("java:comp/env/jdbc/testforjavajdbc");

          //Class.forName("com.mysql.jdbc.Driver");
          //
          //Connection con = DriverManager.getConnection(
          //"jdbc:mysql://localhost:3306/testforjavajdbc", "root",
          //"root");

          Connectioncon = ods.getConnection();
          Statementsql = con.createStatement();
          ResultSet rs= sql.executeQuery("select * from user");
          while(rs.next()) {
            System.out.println(rs.getString(1) + " " + rs.getString(2));
          }
         rs.close();
         sql.close();
         con.close();

     试验成功

可以参考 大神的案例http://blog.csdn.net/liaoxiaohua1981/article/details/6855328
0 0
原创粉丝点击