您的位置:首页 > 数据库

在Jsp中三种连接数据库的配置

2009-06-21 20:04 288 查看
很多初学者会不知道怎么配置连接字符串而烦恼,今天笔者就写一些很实用的三种配置连接字符串的方式,当然简单的那种我没有写,那种在公司的开发中也不实用,总结不好请指教。有几个数据库驱动包和连接池包可以到我的空间下载,已上传了,有不懂的联系油箱:devid_pitoushi@Live.cn

一、连接池方式:

1、连接迟3个包+sqlserver驱动包复制到tomcat\common\lib

2、配置tomcat\conf\context.xml,注意2000和2005 驱动名字和路径

<Resource name="jdbc/pubs"

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

maxIdle="30" maxWait="10000" username="sa" password="120010"

driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=books"/>

2000:

driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=books"/>

2005:

driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"

url="jdbc:sqlserver://localhost:1433;DatabaseName=books"/>

3、在工程web.xml添加节点

<resource-ref>

<res-ref-name>jdbc/pubs</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

4、得到连接的方法内导如以下几个包:

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.sql.DataSource;

//得到Connection对象的方法

public static Connection getConnection(){

try {

Context ic = new InitialContext();

DataSource source = (DataSource)ic.lookup("java:comp/env/jdbc/bbs");

con = source.getConnection();

}catch(NamingException ex){

ex.printStackTrace();

}catch(SQLException ex){

ex.printStackTrace();

}

return con;

}

==================================================================================

二、读取属性文件方式

*.properties文件

driverName=com.microsoft.sqlserver.jdbc.SQLServerDriver

url=jdbc:sqlserver://localhost:1433;DatabaseName=books

user=sa

password=123

//读取*.properties文件的类

import java.io.InputStream;

import java.util.Properties;

public final class Env extends Properties {

private static Env instance;

public static Env getInstance(){

if(instance != null){

return instance;

}else{

makeInstance();

return instance;

}

}

//synchronized 同步方法,保证同一时间只能被一个用户调用

private static synchronized void makeInstance(){

if(instance == null){

instance = new Env();

}

}

private Env(){

InputStream is =getClass().getResourceAsStream("db.properties");//配置文件位置

try{

load(is);

}catch(Exception ex){

System.err.println("请确认读取的文件是否存在!");

}

}

public static void main(String[] args) {

System.out.println(getInstance().getProperty("driverName"));

}

}

注意类的调用:譬如String url = Env.getInstance().getProperties("url");就能得到相应的字符窜

驱动driverName,用户user, 密码password获取方式同上

==================================================================================

三、读取xml文件中的节点方式

首先报连接池包3个和1个数据库驱动包复制到工程下WEB-INF\lib中

1、工程下的web.xml要添加以下节点:

<context-param>

<param-name>driverName</param-name>

<param-value>com.microsoft.sqlserver.jdbc.SQLServerDriver</param-value>

</context-param>

<context-param>

<param-name>url</param-name>

<param-value>jdbc:sqlserver://localhost:1433;DatabaseName=bbs</param-value>

</context-param>

<context-param>

<param-name>userName</param-name>

<param-value>sa</param-value>

</context-param>

<context-param>

<param-name>passWord</param-name>

<param-value>123</param-value>

</context-param>

2、新建一个普通类继承HttpServlet类,并实现ServletContextListener监听接口,如下:

import java.sql.Connection;

import java.sql.ResultSet;

import javax.servlet.ServletContext;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

import javax.servlet.http.HttpServlet;

public class ContextListener extends HttpServlet implements ServletContextListener {

/**

* 销毁servlet

*/

public void contextDestroyed(ServletContextEvent sc) {

}

/**

* 初始化

*/

public void contextInitialized(ServletContextEvent sc) {

System.out.println("开启:");

ServletContext servletContext = sc.getServletContext();

String driverName = servletContext.getInitParameter("driverName");

String url = servletContext.getInitParameter("url");

String userName = servletContext.getInitParameter("userName");

String passWord = servletContext.getInitParameter("passWord");

BaseDAO.setDriverName(driverName);

BaseDAO.setUrl(url);

BaseDAO.setUser(userName);

BaseDAO.setPassword(passWord);

}

}

3、在公共类BaseDao中

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource; //连接池要到包

/*

* 获取数据库连接

*/

public class BaseDAO {

private static Connection con;

private static String driverName;

private static String url;

private static String userName;

private static String passWord;

//获取连接对象Connection

public static Connection getConnection(){

BasicDataSource dataSource = new BasicDataSource();

dataSource.setDriverClassName(driverName);

dataSource.setUrl(url);

dataSource.setUsername(userName);

dataSource.setPassword(passWord);

try{

con = dataSource.getConnection();

} catch(SQLException ex) {

ex.printStackTrace();

}

return con;

}

/*

* 配置:从web.xml

*/

//驱动名称

public static String getDriverName() {

return getDriverName();

}

public static void setDriverName(String driverName) {

BaseDAO.driverName = driverName;

}

//URL

public static String getUrl(){

return getUrl();

}

public static void setUrl(String url) {

BaseDAO.url = url;

}

//用户名

public static String getUser(){

return getUser();

}

public static void setUser(String userName) {

BaseDAO.userName = userName;

}

//密码

public static String getPassWord(){

return getPassWord();

}

public static void setPassword(String passWord) {

BaseDAO.passWord = passWord;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: