2 cyq6567916 cyq6567916 于 2016.09.11 00:17 提问

Servlet访问数据库报错500

这是网页提示的错误
HTTP Status 500 - 查询失败


type Exception report

message 查询失败

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

exception

java.lang.RuntimeException: 查询失败
Dao.EmpDao.finAll(EmpDao.java:32)
web.SqlServlet.service(SqlServlet.java:23)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1429)
org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
util.DBUtil.getConnection(DBUtil.java:36)
Dao.EmpDao.finAll(EmpDao.java:16)
web.SqlServlet.service(SqlServlet.java:23)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1856)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1705)
org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1420)
org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
util.DBUtil.getConnection(DBUtil.java:36)
Dao.EmpDao.finAll(EmpDao.java:16)
web.SqlServlet.service(SqlServlet.java:23)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
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/7.0.67 logs.

这是我的代码,我用测试代码访问数据库的时候,都没有问题,一旦用Servlet访问就出现500问题
package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

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

import Dao.EmpDao;
import entity.Emp;

public class SqlServlet extends HttpServlet {

@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    req.setCharacterEncoding("utf-8");
    res.setContentType("text/html;charset=utf-8");
    EmpDao dao = new EmpDao();
    List<Emp> list = dao.finAll();
    PrintWriter out = res.getWriter();
    out.println("<table border='1px' cellspacing='0' width='40%'>");
    out.println("  <tr>");
    out.println("   <th>编号</th>");
    out.println("   <th>姓名</th>");
    out.println("   <th>职位</th>");
    out.println("   <th>月薪</th>");
    out.println("  </tr>");
    for(Emp emp:list){
        out.println("<tr>");
        out.println("   <td>"+emp.getEmpno()+"</td>");
        out.println("   <td>"+emp.getEname()+"</td>");
        out.println("   <td>"+emp.getJob()+"</td>");
        out.println("   <td>"+emp.getSal()+"</td>");
        out.println("</tr>");
    }
    out.println("</table>");
    out.close();
}

}

下面是dao包的代码package Dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import entity.Emp;
import util.DBUtil;

public class EmpDao {
public List finAll(){
Connection con = null;
try {
con=DBUtil.getConnection();
String sql = "select * from student";
PreparedStatement ps = con.prepareStatement(sql);
List list = new ArrayList();
ResultSet rs = ps.executeQuery();
while(rs.next()){
Emp emp = new Emp();
emp.setEmpno(rs.getInt("empno"));
emp.setEname(rs.getString("ename"));
emp.setJob(rs.getString("job"));
emp.setSal(rs.getDouble("sal"));
list.add(emp);
}
return list;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("查询失败",e);
}finally{
DBUtil.close(con);

    }
}

}

请各位大神帮帮忙 谢谢

7个回答

YouBeHui
YouBeHui   2016.09.11 16:39
已采纳

500问题是响应问题,说明响应出错,org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver' 和 java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver 很明显的说明了你服务器中没有添加oracle6.jar类似的驱动包,添加进去就可以了

cyq6567916
cyq6567916 多谢,我把包放错地方了,我放在了main包里,应该放在WEB-INF包里。
接近 2 年之前 回复
Evankaka
Evankaka   Ds   Rxr 2016.09.11 12:04

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'
这里说得很明白了,你没有添加Oracle用java连接的驱动包。

cyq6567916
cyq6567916 谢谢
接近 2 年之前 回复
qq_29594393
qq_29594393   Ds   Rxr 2016.09.11 00:40

产生错误的原因有太多可能,一般都是一些细节的问题,只能靠自己检查解决

cyq6567916
cyq6567916 多谢
接近 2 年之前 回复
Ro_bot
Ro_bot   2016.09.11 01:20

应该是你部署web时没有把Oracle数据库的jar包部署到,检查下

cyq6567916
cyq6567916 谢谢
接近 2 年之前 回复
cyq6567916
cyq6567916   2016.09.11 08:36

我检查两天了 而且直接把老师的代码复制过来也不行
jar包? 我测试是可以链接数据库的 但是用Sevlet就不行 我就是在Servlet工程包下测试的 jar包应该没有问题

cyq6567916
cyq6567916   2016.09.11 08:37

细节我一步一步检查两天了 大神 你一句细节就给我打发走了。。。。
而且最后我直接复制老师的代码都没有用

qq_35903284
qq_35903284   2017.03.07 23:49

应该是服务器端的问题

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
访问servlet报500错误记录
问题背景: 写了个Servlet方法,在项目中调用,各个配置文件都做了正确配置,之前一直正常使用,中途同事替换项目,并且替换了tomcat版本之后就怎么都访问不了,总是报500错误! 一开始思路错误,总以为是配置文件漏了,或者被系统拦截器拦截了,但检查之后依然报500错误; 。 。 。  后面无奈只好度娘,翻到有网友说可能JDK版本不适配原因(这个一开始也检查过,以为JDK版本都是对的
Servlet报错500的问题
今天在自己配置Servlet的运行环境的时候碰到一个问题。发现Servlet写完后用浏览器打开相应地址总是报错404和500.下面直接上解决方法: 首先,打开webapp文件夹中的web.xml, 使用文本编辑器打开,在第三行的servlet-class标签中将完整的包路径全部写入。修改项目代码如下: HW com.bomkala.servlet.HelloWorldServlet
解决Servlet 500错误
在Eclipse中写程序创建了包,把HelloWorld.class的整个包一起放到WEB-INF / classes中在web.xml中的servlet-class名也要包括包名如: com.servletJsp .HelloWorld
在eclipse中启动servlet报错500 404
博主近来学习JSP,在eclipse中创建servlet调试时出现问题,于是,不停地百度,不停地创建项目,然后删了再建,建了再删,搞得头都大了,最后发现问题出在一个小地方。在这里,博主很想吐槽一下网上的一些解决方法的贴子,不知道是转载还是怎么滴,几乎是千篇一律,都说的差不多,这样也就罢了,问题是还写的不详细,具体怎么做也没说清楚。所以,一方面博主想把自己解决问题的方法记录下来,以便后面查阅,另一方
servlet(简单应用,500和404错误)
Servlet是位于web服务器端内部的服务器端的java应用程序,可以对web浏览器和其它http客户端程序发送数据进行处理。 1. 生命周期 (1) 在web容器启动或者客户端第一次请求服务器时,容器加载servlet类并将其放到实例池中; (2) 实例化后调用init()进行初始化操作; (3) 容器通过service()方法处理不同的http请求,并做出响应; (4) 关闭web容器时,容器调用destroy()方法进行资源释放,在这之后servlet对象会被当作垃圾被回收器回收。
tomcat6.0发布项目打开jsp页面报错:HTTP Status 500 - javax.servlet.ServletException
今天遇到一个tomcat的部署的问题,问题根源在于server.xml 的配置里。 错误如标题,说HTTP Status 500 - javax.servlet.ServletException:XXX文件找不到,几经查找测试,程序并没有错误,有人说是jsp-api.jar和serlet-api.jar包冲突,调试发现并不能解决问题,后来才发现问题的所在: 开始的server.xml 配置对H
Servlet运行原理及404、500、405异常原因和解决方法总结
一、Servlet运行原理 比如,在浏览器地址栏输入          http://ip:port/web01/hello 整个通信流程如下图所示: 分步解释:          1、浏览器依据ip,port建立与servlet容器(容器同时也是一个简单的web服务器)之间的连接。          2、浏览器将请求数据打包(按照http协议,该数据包也称为请求数据包)。
在运行jsp,servlet程序时问题会出现404或者500错误
HTTP Status 404 ,The requested resource is not available. 或者是 找不到你指定的类 我们在运行jsp,servlet程序时问题会出现404或者500错误,在检查看了所有的路径一致,没有问题之后还是会有这样的问题,真的是让人抓狂啊。 下面我们一起来解决这个问题: 1、把Tomcat服务器关闭; 2、打开你要跳转
关于php 无法正常连接mysql 数据库,界面显示内部错误,返回值500
以上为部署mysql + php 时遇到的问题
Oracle ebs 500 Internal Server Error
现象: 浏览器访问erp网址登陆,报500错误: 500 Internal Server Error Servlet error: An exception occurrred...... 查看oacore日志,看到以下报错: java.lang.NoClassDefFoundError: Could not initialize class oracle.apps.