mysql连接池连接JSP

现在假如项目目录名为: test
MySQL数据库用户名为:root ,数据库密码为:JSP
MySQL建立一个数据库为:JSPtest
首先写一个跟开发项目名相同的xml文件:test.XML

程序代码:
<Context path="/test" reloadable="true" docBase="test">
              <Resource name="jdbc/ JSPtest" auth="Container" type=" Javax.sql.DataSource"/>
              <ResourceParams name="jdbc/ JSPtest">
                <parameter>
                <name>factory</name>
                  <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
                </parameter>
                <parameter>
                 <name>username</name>
                 <value>root</value>
                </parameter>
                <parameter>
                 <name>password</name>
                 <value> JSP</value>
                </parameter>
                <parameter>
                <name>driverClassName</name>
                <value>com. MySQL.jdbc.Driver</value>
                </parameter>
                <parameter>
                <name>url</name>
                <value>jdbc: MySQL://localhost:3306/ JSPtest?autoReconnect=true</value>
                </parameter>
                
                <parameter>
                <name>initialSize</name>
                <value>20</value>
                </parameter>
                <parameter>
                <name>maxActive</name>
                <value>30</value>
                </parameter>
                <parameter>
                   <name>maxWait</name>
                  <value>10000</value>
                </parameter>
            </ResourceParams>
</Context>


次文件为连接池配置文件。
将次文件放在  Tomcat5/conf/Catalina/localhost 目录下!

然后写一个取得数据库连接池连接的类: DatabaseConnection.Java

程序代码:
package test;
import  Java.sql.*;
import  Javax.naming.*;
import  Javax.sql.DataSource;

public class DatabaseConnection {
    public static Connection getConnection() throws SQLException,NamingException
    {
        try
        {
            
            Context initCtx = new  Javax.naming.InitialContext(); 
            Context envCtx = (Context) initCtx.lookup(" Java:comp/env"); 
            DataSource ds = (DataSource)envCtx.lookup("jdbc/ JSPtest"); 
  
            return ds.getConnection();
        }
        catch(SQLException e)
        {
            throw e;
        }
        catch(NamingException e)
        {
            throw e;
        }
        
    }
}

写好这个类后,项目中的任何JSPServlet都可以把该包进行导入!
直接调用次类就可以进行数据库连接池的连接了
我个人感觉这个方法比较简单 每个项目写这个XML文件就可以了!不用去配置其他文件!
如有那些地方不妥!请大家指正!

转载:北天JAVA技术网(www.java114.com)
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的 Java Web 应用程序,用于连接 MySQL 数据库并监听在线人数: 1. 在 pom.xml 文件中添加 MySQL Connector/J 依赖: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.25</version> </dependency> ``` 2. 在 web.xml 文件中添加 MySQL 数据库连接池: ```xml <resource-ref> <res-ref-name>jdbc/mysql</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> <resource-env-ref> <resource-env-ref-name>jdbc/mysql</resource-env-ref-name> <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type> </resource-env-ref> ``` 3. 在 context.xml 文件中配置 MySQL 数据库连接池: ```xml <Context> <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" driverClassName="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/yourdatabase?useSSL=false&serverTimezone=UTC" username="yourusername" password="yourpassword"/> </Context> ``` 4. 编写 Java 代码,用于查询当前在线用户数量: ```java package com.example; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; import javax.sql.DataSource; @WebListener public class OnlineUserListener implements ServletContextListener { private DataSource dataSource; private Connection connection; public void contextInitialized(ServletContextEvent event) { try { Context context = new InitialContext(); dataSource = (DataSource) context.lookup("java:comp/env/jdbc/mysql"); connection = dataSource.getConnection(); } catch (NamingException | SQLException e) { e.printStackTrace(); } // 每隔 10 秒钟查询一次在线用户数量 Thread thread = new Thread(new Runnable() { @Override public void run() { while (true) { try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } int count = getOnlineUserCount(); event.getServletContext().setAttribute("onlineUserCount", count); } } }); thread.start(); } public void contextDestroyed(ServletContextEvent event) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } private int getOnlineUserCount() { int count = 0; try (PreparedStatement statement = connection.prepareStatement("SELECT COUNT(*) FROM online_users"); ResultSet resultSet = statement.executeQuery()) { if (resultSet.next()) { count = resultSet.getInt(1); } } catch (SQLException e) { e.printStackTrace(); } return count; } } ``` 这个监听器在应用程序启动时会创建一个 MySQL 数据库连接,并启动一个线程,每隔 10 秒钟查询一次在线用户数量,并将结果保存到 ServletContext 中。你可以在 JSPServlet 中使用以下代码来获取在线用户数量: ```java int count = (int) getServletContext().getAttribute("onlineUserCount"); ``` 这样,你就可以在 Java Web 应用程序中连接 MySQL 数据库并监听在线人数了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值