单例模式:一个类里面只有一个实例,此实例只有自身能调用
properties里面的参数 不需要写引号不加任何符号
mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://127.0.0.1:3306/数据库
mysql.user=用户名
mysql.pwd=密码
mysql.port=端口号
/**
* 饿汉模式
*
*
*/
public class HungrySingle {
// 内部自己创建好实例,私有属性(不建议在外部直接调用我们的成员变量)
private static final HungrySingle sInstance = new HungrySingle();
//私有的构造方法
private HungrySingle() {
}
//创建一个方法,使外部可以得到此实例
public static HungrySingle getInstance() {
return sInstance;
}
}
/**
* 懒汉模式
*
*
*/
public class LazySingle {
//创建私有实例
private static LazySingle sInstance = null;
//定义私有的构造 ,禁止外部直接创建示例
private LazySingle() {
}
//创建方法,使外部可以调用我们的私有对象实例
public static LazySingle getInstance() {
if (sInstance == null) {
//加上synchronized保证对象的访问的线程安全
synchronized (LazySingle.class) {
sInstance = new LazySingle();
}
}
return sInstance;
}
}
//饿汉式:
public class Singleton{
private static Singleton singleton = new Singleton ();
private Singleton (){}
public static Singleton getInstance(){return singletion;}
}
//懒汉式:
public class Singleton{
private static Singleton singleton = null;
public static synchronized Singleton getInstance(){
if(singleton==null){
singleton = new Singleton();
}
return singleton;
}
}
配置数据源
tomcat-conf-context里配置
添加
<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文件夹中。
使用JNDI获取连接对象
lookup(java:comp/env/数据源名称");
//java:comp/env/这是Java的语法要求,必须写上。
//这里的数据源名称就是上面的jdbc/news,这个news是项目名。
编写代码获取数据源
// 获取数据库连接
public Connection getConnection2() {
try {
//初始化上下文
Context cxt=new InitialContext();
//获取与逻辑名相关联的数据源对象
DataSource ds=(DataSource)cxt.lookup("java:comp/env/jdbc/news");
conn=ds.getConnection();
} catch (NamingException e) {
// TODO Auto-generated catch block
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 %>