servlet连接池的初步使用

老师说过连接池只能在servlet中使用,不能写一个main()方法来实现,因为JNDI是tomcat内置的,

使用连接池需要配置context.xml文件

context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<!-- 
    注意标签的大小写  context.xml用小写,<Context>首字母用大写

    name: jndi中的名字,servlet中,就通过该名字获取数据源
    type: 对象的类型
    maxActive: 最大活动连接数(没有被使用的连接数)
    maxIdle: 最大连接数
    maxWait: 如果没有连接,等待连接的时间,-1表示无限等待
    ....
 -->

    <Resource
            name="myDataSource"
            auth="Container"
            type="javax.sql.DataSource"
            maxActive="5"
            maxIdle="10"
            maxWait="-1"
            driverClassName="oracle.jdbc.driver.OracleDriver"
            username="scott"
            password="sinstar"
            url="jdbc:oracle:thin:@localhost:1521:orcl"
            />



</Context>

DataS.java

package com.bright;

import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

import com.sun.xml.internal.bind.CycleRecoverable.Context;

public class dataS extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(req, resp);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        int i=0;
        ResultSet rs=null;

        try {
            //使用tomcat连接池    JNDI
            //1.获取InitialContext   (JNDI入口

            InitialContext initialContext=new InitialContext();

            //2.根据名称获取配置的数据源对象

    //      Context ctx=(Context)initialContext.lookup("java:comp/env");
    //      DataSource ds=(DataSource)ctx.lookup("myDataSource");

            //上面两句可以结合成下面一句,但是使用上面的两句会报错,用下面的不会
            DataSource ds2=(DataSource) initialContext.lookup("java:comp/env/myDataSource");

            //3.开始你的JDBC了

            Connection conn=ds2.getConnection();

            Statement st=conn.createStatement();
            rs=st.executeQuery("select * from regdit");

            while(rs.next()){
                System.out.println(rs.getString("name"));
            }
            //到了最后记住一定要释放资源,一定 一定 一定 不然由于设置了连接数,当一直连接达到了最大连接数后 会死机
            rs.close();
            st.close();
            conn.close();


        } catch (Exception e) {
            e.printStackTrace();
        }

    }


}

这样就可以使用了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值