java - 使用jsp连接到tomcat服务器中的oracle数据库时出错

标签 java oracle jsp tomcat jdbc

什么都试过了还是不能解决问题。 我使用的是Windows 8企业版(如果这与问题有关)

  • 甲骨文 11.2.0
  • JDK 1.7.0
  • Apache tomcat 服务器 8.0
  • 编辑:记事本

我在 d: 上安装了 oracle,在 c: 上安装了 tomcat 服务器。 我把oracle的lib目录下的jar文件ojdbc6.jar复制到tomcat的lib目录下。 然后我在环境变量(系统变量)中创建了一个类路径,其值为 "C:\Program Files\Apache Software Foundation\Tomcat 8.0\lib\ojdbc6.jar"

我的程序在记事本中如下(.jsp文件):

<%@ page import="java.sql.*" %>
<html>
   <body>
       <%
           Connection conn;
           Statement st; ResultSet rs;
           new oracle.jdbc.OracleDriver();
           String dbURL="jdbc:odbc:oracle:thin:@localhost:1521:XE";
           String userId="system";
           String pwd="moon";
           conn=DriverManager.getConnection(dbURL,userId,pwd);
           st=conn.createStatement();
           rs= st.executeQuery("SELECT * FROM login"); 
           while(rs.next())
           {
               System.out.println(rs.getString(1)+""+rs.getString(2));
           }
       %>

   </body>
</html>

我检查了我所有的服务都在为 oracle 和 tomcat 服务器运行。``

编辑

根据 Chanda 的评论,错误是:

HTTP 状态 500 - 在第 14 行处理 JSP 页面/page2.jsp 时发生异常。第 14 行是 conn=DriverManager.getConnection(dbURL,userId,pwd)

java.lang.ClassNotFoundException: org.apache.jsp.new_jsp 服务器遇到内部错误,无法完成此请求。

最佳答案

我不建议您这样做。 Scriptlet 代码和数据库调用不属于 JSP。这是一个更长的讨论。

但紧迫的问题是您的连接 URL 不正确:

String dbURL="jdbc:odbc:oracle:thin:@localhost:1521:XE";

应该是

String dbURL="jdbc:oracle:thin:@localhost:1521:XE"

Tomcat 将忽略所有系统环境变量。我建议您永远不要那样设置 CLASSPATH。

正确的做法是将 ojdbc6.jar 放在 Tomcat 服务器的/lib 文件夹中。

在您的网络应用程序的 WEB-INF/lib 中添加其他第 3 方 JAR。

       Connection conn;
       Statement st; 
       ResultSet rs;
       String dbURL="jdbc:odbc:oracle:thin:@localhost:1521:XE";
       String userId="system";
       String pwd="moon";
       try {
           Class.forName("oracle.jdbc.OracleDriver");
           conn=DriverManager.getConnection(dbURL,userId,pwd);
           st=conn.createStatement();
           rs= st.executeQuery("SELECT * FROM login"); 
           while(rs.next()) {
               System.out.println(rs.getString(1)+" "+rs.getString(2));
           }
       } catch (Exception e) {
           e.printStackTrace();
       } finally {
           DatabaseUtils.close(rs);  // implement static methods to do this.
           DatabaseUtils.close(st);
           DatabaseUtils.close(conn);
       }

我会推荐这样的东西:

public class DatabaseUtils {
    public static void close(Connection c) {
        try {
            if (c != null) {
                c.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    // I'll leave the others for you.
}

关于java - 使用jsp连接到tomcat服务器中的oracle数据库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23955391/

相关文章:

java - 无限循环中断方法签名而没有编译错误

java - HTTP 状态 500 - servlet fitTrackerServlet 的 Servlet.init() 抛出异常

java - 部署 Spring MVC 应用程序时出现问题 |未找到匹配的编辑器或转换策略

java - 如何将变量从 Activity 传递到 Adapter

java - 按 Java java.sql.Timestamp 中的方式检索 Oracle 日期/时间戳字段,无需转换为 DST

java - 使用 Oracle STANDARD_HASH,在 JAVA 中重现哈希

java - VersionResourceResolver 不起作用

java - 将 StringArray 的值从 java 类打印到 JSP 中

java - 易失变量语义

sql - ORA-00054 删除表时资源繁忙