[转帖]在JSP中三种连接字符串的配置_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3756 | 回复: 0   主题: [转帖]在JSP中三种连接字符串的配置        下一篇 
xiaoyang
注册用户
等级:上士
经验:253
发帖:75
精华:0
注册:2011-10-19
状态:离线
发送短消息息给xiaoyang 加好友    发送短消息息给xiaoyang 发消息
发表于: IP:您无权察看 2011-10-20 12:54:29 | [全部帖] [楼主帖] 楼主

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

一、连接池方式:

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

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

  1. <Resourcename="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.   2000:  
  7. driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"    
  8. url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=books"/>
  9.   2005:   
  10. driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"    
  11. 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.  //得到Connection对象的方法  
  6.  public static Connection getConnection(){   
  7.  try {   
  8.  Context ic = new InitialContext();  
  9.  DataSource source = (DataSource)ic.lookup("java:comp/env/jdbc/bbs");  
  10.  con = source.getConnection();  
  11.  }catch(NamingException ex){  
  12.  ex.printStackTrace();  
  13.  }catch(SQLException ex){  
  14.  ex.printStackTrace();  
  15.  }  
  16.  return con;  
  17.  } 

二、读取属性文件方式

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

注意类的调用:譬如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.  import javax.servlet.ServletContext;  
  4.  import javax.servlet.ServletContextEvent;  
  5.  import javax.servlet.ServletContextListener;  
  6.  import javax.servlet.http.HttpServlet;  
  7.  public class ContextListener extends HttpServlet implements ServletContextListener {  
  8.  /**  
  9.  * 销毁servlet   
  10.  */  
  11.  public void contextDestroyed(ServletContextEvent sc) {  
  12.  
  13.  }  
  14.    
  15.  /**  
  16.  * 初始化   
  17.  */  
  18.  public void contextInitialized(ServletContextEvent sc) {  
  19.  System.out.println("开启:");  
  20.  ServletContext servletContext = sc.getServletContext();  
  21.    
  22.  String driverName = servletContext.getInitParameter("driverName");  
  23.  String url = servletContext.getInitParameter("url");  
  24.  String userName = servletContext.getInitParameter("userName");  
  25.  String passWord = servletContext.getInitParameter("passWord");  
  26.    
  27.  BaseDAO.setDriverName(driverName);  
  28.  BaseDAO.setUrl(url);  
  29.  BaseDAO.setUser(userName);  
  30.  BaseDAO.setPassword(passWord);  
  31.  }  
  32.  } 

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




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论