配置tomcat web工程数据源

1 拥有必要的开发环境:tomcat+eclipse+jdk

2 安装mysql数据库:用户名/密码:root/admin

3 下载jar包:mysql-connector-java-5.0.8-bin.jar,commons-collections-3.1.jar,commons-dbcp-1.2.1.jar,commons-pool-1.2.jar

确保会引起找不到类 NoClassDefine错误,如找不到连接类,配置是factory生产失败,collectionlist错误等等麻烦的错误

4 该功能需要在web工程中调用,利用Container容器,上下文,java工程调用可能会失败

5 在tomcat中的server.xml内容开头编码格式可能为utf-8,会提示错误,将格式改为gbk的就可以了

6 配置使用数据源,有几个部分,tomcat中:server.xml,contex.xml;工程中web.xml

7 配置数据源前,可以先用java直接连接调用数据库,已验证所需数据均正确

配置 server.xml 部分内容:

<Context path="/alltest" docBase="D:\webdev\workspace\alltest\Web" debug="0" reloadable="true">
					 <Resource name="jdbc/test" auth="Container"
              type="javax.sql.DataSource"
              factory="org.apache.commons.dbcp.BasicDataSourceFactory"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://10.136.16.161:3306/test"
              username="root"
              password="admin"
              maxActive="80"
              maxIdle="10"
              maxWait="-1"/>
				</Context>


 

path:web访问路径

docBase:工程代码路径

Resource:配置工程所需要数据源

name:配置的数据源名称,名称可以随便取,但在java程序中调用时,需对应

type:数据源类型

factory:创建数据池的工厂(之前因缺包commons-dbcp-1.2.1.jar,commons-pool-1.2.jar,老报错)

driverClassName:连接mysql驱动(如连接oracle数据源,需修改)

url:连接数据库地址

username:数据库登陆用户名

password:username对应密码

maxActive:最大活动连接数

maxIdle:最大闲置连接数(顾名思义)

maxWait:最大等待连接数

 

配置context.xml:网上其他有的说需要配置这个文件,但我没有配,也能引用数据源

 

工程web.xml文件内容:

  <resource-ref>
  	<res-ref-name>jdbc/test</res-ref-name>
  	<res-type>javax.sql.DataSource</res-type>
  	<res-auth>Container</res-auth>
  </resource-ref>

res-ref-name:对应server.xml数据源配置中name

res-type:对应server.xml数据源配置中type

res-auth:对应server.xml数据源配置中auth

 

8 测试代码:

	public void sqltest()
	{
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		try
		{
			Context initcontext = new InitialContext();
			DataSource ds = (DataSource)initcontext.lookup("java:/comp/env/jdbc/test");
			conn = ds.getConnection();
			if(!conn.isClosed())
				System.out.println("连接数据库成功。。。");
			else
				System.out.println("连接数据库失败。。。");
			//用来执行sql
			stmt = conn.createStatement();
			String sql = "select username from table1";
			//获取结果集
			rs = stmt.executeQuery(sql);
			while(rs.next())
			{
				String name = rs.getString("username");
				System.out.println("用户:" + name);
			}
		}catch(Exception ex)
		{
			ex.printStackTrace();
			System.out.println("error:" + ex.getMessage());
		}finally
		{
			//关闭数据库,否则会连接数过大
			try
			{
				rs.close();
				stmt.close();
				conn.close();
			}catch(Exception ex)
			{
				ex.printStackTrace();
			}
		}
	}

在web工程中某个jsp调用一下这个函数就可以了。


引用:http://blog.csdn.net/dyllove98/article/details/7706218

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章