servlet调用数据库封装类提示,无法获取Connection对象!!!

servlet调用数据库封装类进行查询时,提示ps = conn.preparedStatement(sql);语句是NUllPOINTEREXCEPTION,但在main方法中测试数据库正常连接

我把有问题的代码提炼成一个新的模板,因为我查了很多,都是说Connection conn对象获取异常。网上说的一些解决办法,我都试过了,如提升Tomcat版本,还是不行。下面的代码中无法获取conn对象,跟我的demo问题一摸一样,不知道如何解决!!!

index.jsp文件源码

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<!DOCTYPE HTML>


My JSP 'index.jsp' starting page


<%
String temp =(String) request.getAttribute("info");
if(temp != null){
out.print(temp);

}
%>
<h1>index.jsp页面!!!</h1>
<hr>
<form action = "ConnectionServlet" method="post">
    <input type ="submit" value = "提交"/>
</form>


ConnectionServlet.java源码

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

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ConnectionServlet extends HttpServlet{

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    Connection conn = ConnectionClass.getConnection();
    if(conn != null){
        request.setAttribute("info", conn);         
    } else {
        request.setAttribute("info", "conn为空!!!");
    }
    request.getRequestDispatcher("index.jsp").forward(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    this.doGet(request, response);
}

}

ConnectionClass.java源码

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionClass {
public static Connection getConnection(){
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/user","root","sunliqian");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">

ConnectionServlet
ConnectionServlet


ConnectionServlet
/ConnectionServlet

求大佬解决!!! 没有金币。。。

1个回答

main方法这句话能跑?

 Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/user","root","sunliqian");

你可能是把mysql的驱动jar没放到tomcat上,,,apache-tomcat-7.0.57\lib,,,tomcat下面有个lib包,,把mysql的jar放进去就行了。。

main运行和tomcat运行不是一个平台

Small_Mouse0
小鼠标丶 回复sun_li_qian: 不用谢互相学习,,main运行和tomcat上的项目运行不是一个平台,,main方法可以使用你path中配置的jar,,tomcat上的项目运行在tomcat服务器上,它是不能用你eclipse中配置的jar的,两个运行平台不一样,,不知道这样解释能不能明白,,对你有帮助请采纳
接近 3 年之前 回复
sun_li_qian
sun_li_qian 回复小鼠标丶: main方法确实能跑,问题确实是lib包中没有mysql驱动包。**但是我在myeclipse中配置path中添加了mysql的驱动包了,它为啥没有部署到程序中了?** 谢谢,你的解答,非常感谢!!! 我是一枚初学者!非常感谢!!!
接近 3 年之前 回复
Small_Mouse0
小鼠标丶 main运行和tomcat上的项目运行不是一个平台
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问