使用配置文件连接jdb连接池时出现问题

使用jndi实现数据库连接。

<%@page import="java.sql.Connection"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.*"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">







<%
//1.得到Context接口对象
Context ctx = new InitialContext();
    //2.通过ctx到配置文件中查找指定的名称
    DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql");

    //3.通过ds得到连接对象
    Connection conn = ds.getConnection();

    //4.对连接判断
    if (conn != null) {

        out.println("数据库连接成功!");

    }
%>


             1. 下载指定的数据库驱动jar包,放入容器tomcat lib中。  


             2.  开始配置tomcat配置文件: conf--->context.xml  


             3.  在context.xml中要配置一个资源的标签。  

                            这三步没有问题 主要是通过ds得到连接对象老是出错

HTTP Status 500 - An exception occurred processing JSP page /jndi/testjndi2.jsp at line 39

type Exception report

message An exception occurred processing JSP page /jndi/testjndi2.jsp at line 39

description The server encountered an internal error that prevented it from fulfilling this request.

exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /jndi/testjndi2.jsp at line 39

36: DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql");
37:
38: //3.閫氳繃ds寰楀埌杩炴帴瀵硅薄
39: Connection conn = ds.getConnection();
40:
41: //4.瀵硅繛鎺ュ垽鏂�
42: if (conn != null) {

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:579)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:461)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause
javax.servlet.ServletException: java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'null'
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:909)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:838)
org.apache.jsp.jndi.testjndi2_jsp._jspService(testjndi2_jsp.java:183)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause
java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'null'
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2184)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2056)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1532)
org.apache.jsp.jndi.testjndi2_jsp._jspService(testjndi2_jsp.java:159)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause
java.sql.SQLException: No suitable driver
java.sql.DriverManager.getDriver(Unknown Source)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2168)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2056)
org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1532)
org.apache.jsp.jndi.testjndi2_jsp._jspService(testjndi2_jsp.java:159)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.49 logs.

可能是server.xml文件配置问题,具体参考server.xmlserver.xml

错误信息提示的已经很明显 driverClassName 和 url 都没有配置 driverClassName配置的应该是空字符‘’,url应该是直接就没有配置,所以提示null
你检查下配置信息吧 看看context.xml 中的resouce配置了没有

javax.servlet.ServletException: java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'null'
写的很清楚了 comp/env/jdbc/mysql.xml没有url

我记得是tomcat版本不同,tomcat9只需要在项目目录下配置一个server.xml即可