转载

在JSP中三种连接字符串的配置

很多初学者会不知道怎么配置连接字符串而烦恼,今天笔者就写一些很实用的三种配置连接字符串的方式,当然简单的那种我没有写,那种在公司的开发中也不实用,总结不好请指教。

一、连接池方式:

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

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

  1. <Resource name="jdbc/pubs"   
  2.          auth="Container" type="javax.sql.DataSource"  maxActive="100"    
  3.          maxIdle="30" maxWait="10000"   username="sa"   password="120010"   
  4.         driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"    
  5.        url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=books"/> 
  6.  
  7.   2000:  
  8.    driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"    
  9.         url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=books"/> 
  10.   2005:   
  11.    driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"    
  12.         url="jdbc:sqlserver://localhost:1433;DatabaseName=books"/> 

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

  1. <resource-ref> 
  2.     <res-ref-name>jdbc/pubs</res-ref-name> 
  3.     <res-type>javax.sql.DataSource</res-type> 
  4.     <res-auth>Container</res-auth> 
  5. </resource-ref> 

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

  1. import javax.naming.Context;  
  2.   import javax.naming.InitialContext;  
  3.   import javax.naming.NamingException;  
  4.   import javax.sql.DataSource;  
  5.  
  6.  //得到Connection对象的方法  
  7.  public static Connection getConnection(){    
  8.   try {     
  9.    Context ic = new InitialContext();  
  10.    DataSource source = (DataSource)ic.lookup("java:comp/env/jdbc/bbs");  
  11.    con = source.getConnection();  
  12.   }catch(NamingException ex){  
  13.    ex.printStackTrace();  
  14.   }catch(SQLException ex){  
  15.    ex.printStackTrace();  
  16.   }  
  17.   return con;  
  18.  } 

二、读取属性文件方式

  1. *.properties文件  
  2. driverName=com.microsoft.sqlserver.jdbc.SQLServerDriver  
  3. url=jdbc:sqlserver://localhost:1433;DatabaseName=books 
  4. user=sa 
  5. password=123 
  6.  
  7.  
  8. //读取*.properties文件的类  
  9. import java.io.InputStream;  
  10. import java.util.Properties;  
  11.  
  12. public final class Env extends Properties {  
  13.  private static Env instance;  
  14.    
  15.  public static Env getInstance(){  
  16.   if(instance != null){  
  17.    return instance;  
  18.   }else{  
  19.    makeInstance();  
  20.    return instance;  
  21.   }  
  22.  }  
  23.    
  24.  //synchronized 同步方法,保证同一时间只能被一个用户调用  
  25.  private static synchronized void makeInstance(){  
  26.   if(instance == null){  
  27.    instance = new Env();  
  28.   }  
  29.  }  
  30.    
  31.  private Env(){  
  32.   InputStream is =getClass().getResourceAsStream("db.properties");//配置文件位置  
  33.   try{  
  34.    load(is);  
  35.   }catch(Exception ex){  
  36.    System.err.println("请确认读取的文件是否存在!");  
  37.   }  
  38.  }  
  39.    
  40.  public static void main(String[] args) {  
  41.   System.out.println(getInstance().getProperty("driverName"));  
  42.  }  

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

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

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

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

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

  1. <context-param> 
  2.   <param-name>driverName</param-name> 
  3.   <param-value>com.microsoft.sqlserver.jdbc.SQLServerDriver</param-value> 
  4.  </context-param> 
  5.    
  6.  <context-param> 
  7.   <param-name>url</param-name> 
  8.   <param-value>jdbc:sqlserver://localhost:1433;DatabaseName=bbs</param-value> 
  9.  </context-param> 
  10.    
  11.  <context-param> 
  12.   <param-name>userName</param-name> 
  13.   <param-value>sa</param-value> 
  14.  </context-param> 
  15.    
  16.  <context-param> 
  17.   <param-name>passWord</param-name> 
  18.   <param-value>123</param-value> 
  19.  </context-param> 

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

  1. import java.sql.Connection;  
  2.  import java.sql.ResultSet;  
  3.  
  4.  import javax.servlet.ServletContext;  
  5.  import javax.servlet.ServletContextEvent;  
  6.  import javax.servlet.ServletContextListener;  
  7.  import javax.servlet.http.HttpServlet;  
  8.  
  9.  public class ContextListener extends HttpServlet implements ServletContextListener {  
  10.   /**  
  11.    * 销毁servlet   
  12.    */  
  13.   public void contextDestroyed(ServletContextEvent sc) {  
  14.  
  15.   }  
  16.     
  17.   /**  
  18.    * 初始化   
  19.    */  
  20.   public void contextInitialized(ServletContextEvent sc) {  
  21.    System.out.println("开启:");  
  22.    ServletContext servletContext = sc.getServletContext();  
  23.      
  24.    String driverName = servletContext.getInitParameter("driverName");  
  25.    String url = servletContext.getInitParameter("url");  
  26.    String userName = servletContext.getInitParameter("userName");  
  27.    String passWord = servletContext.getInitParameter("passWord");  
  28.      
  29.    BaseDAO.setDriverName(driverName);  
  30.    BaseDAO.setUrl(url);  
  31.    BaseDAO.setUser(userName);  
  32.    BaseDAO.setPassword(passWord);  
  33.   }  
  34.  } 

3、在公共类BaseDao中

  1. import java.sql.Connection;  
  2.  import java.sql.DriverManager;  
  3.  import java.sql.ResultSet;  
  4.  import java.sql.SQLException;  
  5.  import java.sql.Statement;  
  6.  
  7.  import javax.naming.Context;  
  8.  import javax.naming.InitialContext;  
  9.  import javax.naming.NamingException;  
  10.  import javax.sql.DataSource;  
  11.         
  12.  import org.apache.commons.dbcp.BasicDataSource; //连接池要到包  
  13.  /*  
  14.   * 获取数据库连接  
  15.   */  
  16.  public class BaseDAO {  
  17.   private static Connection con;  
  18.   private static String driverName;  
  19.   private static String url;  
  20.   private static String userName;  
  21.   private static String passWord;  
  22.  
  23.   //获取连接对象Connection  
  24.   public static Connection getConnection(){    
  25.    BasicDataSource dataSource = new BasicDataSource();  
  26.    dataSource.setDriverClassName(driverName);  
  27.    dataSource.setUrl(url);  
  28.    dataSource.setUsername(userName);  
  29.    dataSource.setPassword(passWord);  
  30.    try{  
  31.     con = dataSource.getConnection();  
  32.    } catch(SQLException ex) {  
  33.     ex.printStackTrace();  
  34.    }  
  35.    return con;  
  36.   }  
  37.     
  38.   /*  
  39.    * 配置:从web.xml  
  40.    */  
  41.   //驱动名称  
  42.   public static String getDriverName() {  
  43.    return getDriverName();  
  44.   }  
  45.   public static void setDriverName(String driverName) {  
  46.    BaseDAO.driverName = driverName;  
  47.   }  
  48.     
  49.   //URL  
  50.   public static String getUrl(){  
  51.    return getUrl();  
  52.   }  
  53.   public static void setUrl(String url) {  
  54.    BaseDAO.url = url;    
  55.   }  
  56.     
  57.   //用户名  
  58.   public static String getUser(){  
  59.    return getUser();  
  60.   }  
  61.   public static void setUser(String userName) {  
  62.    BaseDAO.userName = userName;  
  63.   }  
  64.   //密码  
  65.   public static String getPassWord(){  
  66.    return getPassWord();  
  67.   }  
  68.   public static void setPassword(String passWord) {  
  69.    BaseDAO.passWord = passWord;  
  70.   }  
  71.  } 

正文到此结束
Loading...