在tomcat下配置mysql的数据库连接池及Servlet

本文介绍如何在Tomcat环境下配置MySQL数据库连接池,并通过Servlet进行数据访问。包括配置步骤、注意事项及常见错误排查。

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

这几天在tomcat下配置mysql的数据库连接池,再使用servlet进行数据访问。碰到不少问题,百度查了不少资料,不是很完整,试了很久,总算调通了。记录下来,供大家参考。

TomcatMySQL的安装就不追溯,很简单。

一、配置数据库连接池

这块网上很多材料有误导,搞一大堆参数。实际上,在Tomcat的首页上就有相关配置的说明:

 https://img-blog.youkuaiyun.com/20131026230453281?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnVzaHVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

1、进入Tomcat首页,如上图。

2、找到JDBC DataSources,点击进入。

打开tomcat\conf\Context.xml,将这句话拷贝进去,修改成你自己的MySQL的配置即可:

<Resource name="jdbc/你的数据库别名" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="MySQL用户名" password="MySQL用户密码" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test"/>

标黄的是要按照你的mysql的配置进行修改,其他不用动。

MySQL的资料上有另外一种写法,但创建JNDI时,DataSource总是空的,误人不浅:Chapter 11. Using Connector/J with Tomcat。

3、打开tomcat\conf\web.xml,将以下信息加入,放在</web-app>之前即可。

<resource-ref>

        <description>DB Connection</description>

        <res-ref-name>jdbc/你的数据库别名</res-ref-name>

        <res-type>javax.sql.DataSource</res-type>

        <res-auth>Container</res-auth>

</resource-ref>

4、很重要的一步,就是要将MySQLJDBC引擎拷贝到tomcat\lib下。

二、配置Servlet

Servlet的配置有时不小心,也容易造成出错。

1、打开tomcat\conf\web.xml,参考其他Servlet的写法,将以下信息加入。

    <servlet-mapping>

        <servlet-name>DataServiceServlet</servlet-name>

        <url-pattern>/DataServiceServlet</url-pattern>

</servlet-mapping>

    <servlet>

        <servlet-name>DataServiceServlet</servlet-name>

        <servlet-class>com.xxx.DataServiceServlet</servlet-class>

</servlet>

值得注意的是,以上的servlet-class就是你创建的Servlet,要包含路径。

不写servlet-mapping,就会老找不到servlet类:The requested resource is not available.。机关重重。

 

三、在Servlet中使用数据库连接池

有了以上两步,数据库连接池的使用就很简单了。

import javax.servlet.http.*;

import javax.servlet.*;

import java.io.*;

import java.sql.*;

import javax.sql.*;

import javax.naming.*;

。。。。。。

InitialContext ctx = null;

DataSource ds = null;

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

String sql = "SELECT t1,t2 FROM test where t1=?";

try {

ctx = new InitialContext();

ds = (DataSource) ctx.lookup("java:comp/env/jdbc/你的数据库别名");

conn = ds.getConnection();

ps = conn.prepareStatement(sql);

} catch (SQLException se) {

System.out.println("SQLException: " + se.getMessage());

} catch (NamingException ne) {

System.out.println("NamingException: " + ne.getMessage());

}

这里有点变态的是lookup中的java:comp/env/jdbc/千万别少了,否则就无法定位到数据库配置,很是郁闷

四、访问Servlet

在你的HTML中,随便写个formaction中的内容就是你的servlet

<form action="DataServiceServlet" method="POST">

      <input type="text" name="t1"/>

      <input type="submit" value="Submit" />

</form>

 

OK,大功告成,恭喜你成为一个伟大的程序员。


注:本人使用的是MySQL 5.6.14,Tomcat 7.0.42,Eclipse Version: Kepler Service Release 1

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值