数据库连接--DataSource连接方式

本文介绍了如何在Tomcat中配置DataSource以连接Oracle和MySQL数据库,包括将库文件复制到Tomcat目录、修改server.xml设置JNDI资源,以及在web.xml中声明资源引用。此外,展示了使用JSP和JSTL进行数据库查询的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Copy library到Tomcat
將classes12.jar和nls_charset12.jar copy到%Tomcat%/common/lib


設定server.xml
在%Tomcat%/conf裡找到server.xml,然後在裡面加上下面這段設定。

<DefaultContext crossContext="true" reloadable="true">
或<Context path="/modName" docBase="modName" debug="1" reloadable="true" crossContext="true">
<Resource auth="Container" name="jdbc/epmp" scope="Shareable" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/epmp">
 <parameter>
  <name>factory</name>
  <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
 </parameter>

 <!--Oracle-->
 <parameter>
  <name>url</name>
  <value>jdbc:oracle:thin:@hostname:1521:SID</value>
 </parameter>
 <parameter>
  <name>driverClassName</name>
  <value>oracle.jdbc.driver.OracleDriver</value>
 </parameter>
 <!--MySQL-->
 <parameter>
        <name>url</name>
        <value>jdbc:mysql://localhost:3306/forumdb?autoReconnect=true</value>
      </parameter>
 <parameter>
         <name>driverClassName</name>
         <value>com.mysql.jdbc.Driver</value>
      </parameter>

  <parameter>
   <name>username</name>
   <value>user</value>
  </parameter>
  <parameter>
   <name>password</name>
   <value>pwd</value>
  </parameter>
  <parameter>
   <name>maxActive</name>
   <value>20</value>
  </parameter>
  <parameter>
   <name>maxIdle</name>
            <value>10</value>
  </parameter>
  <parameter>
   <name>maxWait</name>
   <value>-1</value>
  </parameter>

</ResourceParams>
</DefaultContext>

</Context>

設定web.xml
如圖1設定JNDI的參照,設定好之後將可以在web.xml中發現WSAD為我們加入的內容。

<resource-ref>
 <res-ref-name>jdbc/epmp</res-ref-name>
 <res-type>javax.sql.DataSource</res-type>
 <res-auth>Container</res-auth>
 <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
 
TestCode
Test.jsp

<%@ page import=" java.sql.*"%>

<%@ page import=" javax.naming.*"%>

<%@ page import=" javax.sql.*"%>

<html>

  <head>

    <title>DB Test</title>

  </head>

  <body>

  <h2>Results</h2>

<% 

 DataSource ds=null;

 Context ct = new InitialContext();

 ds = (DataSource) ct.lookup("java:comp/env/jdbc/yinhu");      

 Connection con=ds.getConnection();

 Statement sm=con.createStatement();

 ResultSet rs=sm.executeQuery("select ename from emp where deptno=10");

while(rs.next())

{

       String s=rs.getString("ename");

       out.println(s+"<br>");

}

%>

</body>

</html>

       <!--------------------------->

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 

<sql:query var="rs" dataSource="jdbc/TestDB">

select id, foo, bar from testdata

</sql:query>

 

<html>

  <head>

    <title>DB Test</title>

  </head>

  <body>

  <h2>Results</h2>

<c:forEach var="row" items="${rs.rows}">

    Foo ${row.foo}<br/>

    Bar ${row.bar}<br/>

</c:forEach>

  </body>

</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值