根据官方网站Tomcat-Mysql连接池配置实例

官网地址
http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html
========================================================================

我用的是apache-tomcat-6.0.16  mysql6.0.12

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


1.先从Mysql中新建数据库javatest,插入表testdata中数据
create database javatest;
use javatest;
create table testdata (id int not null auto_increment primary key,foo varchar(25), bar int);
insert into testdata values(null, 'hello', 12345);

====================================
context.xml

<Context path="/DBTest" docBase="D:/myeclipse_workspace/DBTest/WebRoot"
        debug="5" reloadable="true" crossContext="true">

  <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="root" password="pain" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/>

</Context>
====================================
web.xml

    
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
  <description>MySQL Test App</description>
  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/TestDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>
</web-app>


====================================
test.jsp

<%@ 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>

====================================
需要用到jstl.jar、mysql-connector-java-5.1.8-bin.jar、standard.jar包


http://localhost:8080/DBTest/test.jsp

====================================
最后JSP显示结果:
----------
Results
Foo hello
Bar 12345

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

此段是写给自己的,可以不看

不知道为何,不用Myeclipse可以显示正确,一用Myeclipse会出错,麻烦我两天的问题,竟然出现在Myeclipse身上。先改一下JRE环境,排除一下,看看是不是这个问题

1、window->preference->java-compiler->compiler compliance 设置compiler compliance level:为 1.6

2、window ->preference ->java ->Installed JRES里面把MYECLIPSE自带的删除,添加你自己的JDK

3、项目上右键/Preferences/Java Compiler 里改为1.5以上

至于为何为Myeclipse会出错,再找找看吧
========================================================================
用另一种JSP方法亦可
test2.jsp

<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*,com.DBConnection.*" %>
<%
try
{

   Context ctx = new InitialContext();
   DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/TestDB");
   Connection conn = ds.getConnection();
} catch (NamingException e) {
   System.out.println(e.getMessage());
} catch (SQLException e) {
   e.printStackTrace();
}
out.println("connection pool connected !!haha");  
%>
========================================================================

dataSource="jdbc/TestDB" 和 (DataSource)ctx.lookup("java:comp/env/jdbc/TestDB") 是两种获得JNDI不同的方法,同样是可行的,不同之处,前者是硬连接,后者是虚拟的,后者可移植性比较好。

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

mysql-connector-java-5.1.8-bin.jar 放到D:/Program Files/apache-tomcat-6.0.16/lib下,我用的是tomcat6.总之放到lib下即可。jstl.jar,stand.jar放到DBTest/WEB-INF/lib下

context.xml中的docBase目录要可能改一下,改成test.jsp所在的实际目录。

还要修改context.xml中的username="root" password="root",把用户名和密码改成你自己Mysql的用户名和密码

其中名字的更改请看我的csdn博客painrthur:http://blog.csdn.net/paincupid/archive/2009/08/23/4474586.aspx

 

虽然这个小例子搞了整整两天,才搞定,不过也学到不少东西,真的快要吐了,不过也学到不少东西。希望以后能进步快一些。

 

实例下载:http://download.csdn.net/source/1598723

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

注意事项:

 

1. 把Myeclipse里的Tomcat的JDK设成现在的Java JDK路径。

我用的Myeclipse7:window-Perference-Myeclispe Enterprise Workbench-Servers-Tomcat-Tomcat 6.x-JDK设一下。

 

2.  把项目WEB-INF/lib下多余的包去掉,否则Tomcat重复加载会报以下错误:

An error occurred at line: 25 in the generated java file The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory

 

改完这两项后,以前的项目能运行了,不知道为何。也不知道是不是这两处的原因,至少现在不会报错了。满足了......

 

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


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

 

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

网上还有一种配置context.xml的方法:

 

<Context>
<Resource
 name="jdbc/TestDB"
 auth="Container"
 type="javax.sql.DataSource"
 maxActive="100"
 maxIdle="30"
 maxWait="10000"
 username="root"
 password="pain"
 driverClassName="com.mysql.jdbc.Driver"
 url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;mysqlEncoding=utf8"/>
</Context>

 

这样写的好处是不用指定test.jsp的路径!

你可能感兴趣的:(根据官方网站Tomcat-Mysql连接池配置实例)