美文网首页
单利模式和连接数据卡-06-20

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

作者: 我去你家歇会呗 | 来源:发表于2019-06-20 09:18 被阅读0次

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

    饿汉模式

    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 %>

    相关文章

      网友评论

          本文标题:单利模式和连接数据卡-06-20

          本文链接:https://www.haomeiwen.com/subject/ambrqctx.html