单利模式和连接数据卡-06-20

单例模式,内存中只有一个类,一个类只能实例化一次

饿汉模式

public class Person{

prvaite static Person p=new Person();

private Person(){}

public void  static Person getInstance(){

return p;

}

}

懒汉模式

public clas Person{

prvaite  static Person p=null;

private Person(){}

public void  static Person getInstance(){

if(p==null){

synchronized(Person.class){

p=new Person();

}

}

return p;

}

}

配置文件

driverClassName=com.mysql.jdbc.Driver

url=jdbc:mysql://127.0.0.1:3306/day17?characterEncoding=utf8

username=root

password=root

读取配置文件

package com.bdqn.until;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import java.util.Properties;

public class ConfigManager {

//

    private static ConfigManager cm ;

    Properties properties;

    private  ConfigManager(){

//        String file = "D:\\workspace\\login\\src\\properties\\database.properties";

//        inputStream = new FileInputStream(file);

        String file = "database.properties";

        InputStream inputStream = ConfigManager.class.getClassLoader().getResourceAsStream(file);

        properties = new Properties();

        try {

            properties.load(inputStream);

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

    public static  ConfigManager  getCm(){

        if(cm == null){

            synchronized(ConfigManager.class){

                cm = new ConfigManager();

            }

        }

        return  cm;

    }

    public String getProRes(String para){

        return  properties.getProperty(para);

    }

    public static void main(String[] args) {

        System.out.println(ConfigManager.getCm().getProRes("driver"));

    }

}

配置数据源

Tomcat 

context.xml

根节点添加Resource节点

<Resource name="jdbc/news"

              auth="Container"  type="javax.sql.DataSource"  maxActive="100"

              maxIdle="30" maxWait="10000" username="root"  password="root"

              driverClassName="com.mysql.jdbc.Driver"

              url="jdbc:mysql://127.0.0.1:3306/news"/>

  name=指定Resource的JNDI名称

  auth=指定管理Resource的Manager(Container由容器创建和管理,Application由Web应用创建和管理)

  type=指定Resource的java类

  maxActive=指定连接池中处于活动状态的数据库连接的最大数量

  maxIdle=指定连接池中处于空闲状态的数据库的最大数量

  maxWait=指定连接池中连接处于空闲的最长时间,超过这个时间会提示异常,取值为-1,表示可以无限期等待,单位为毫秒(ms)

这里不要忘记:还需要将数据库的驱动jar包添加到,Tomcat安装目录下的lib文件夹中。

// 获取数据库连接

  public Connection getConnection2() {

   try {

    //初始化上下文

    Context cxt=new InitialContext();

    //获取与逻辑名相关联的数据源对象

    DataSource ds=(DataSource)cxt.lookup("java:comp/env/jdbc/news");

    conn=ds.getConnection();

   } catch (NamingException e) {

    e.printStackTrace();

   } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

   }

   return conn;

  }

还有一点要注意:测试连接是否成功,需要在jsp页面输出connection,而不是在java类中Run As,应为数据源配置在Tomcat中需要把Web项目放入Tomcat容器中运行。jsp页面代码如下:

示例:

<%

BaseDao baseDao=new BaseDao();

Connection connection=baseDao.getConnection2();

 %>

<%=connection %>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容