【问题标题】:Creating JDBC Connection with Oracle 10g using jsp使用 jsp 创建与 Oracle 10g 的 JDBC 连接
【发布时间】:2011-03-08 04:51:29
【问题描述】:

我可以使用 java 连接到 Oracle 10g(使用 ojdbc14.jar 驱动程序)。但是,当我在 servlet 或扩展名为 .jsp 的文件中使用相同的代码时,我得到了 class not found 异常。我无法理解为什么会这样。 java 和 jsp 中的 JDBC 是否有不同的连接字符串?这就是我用 java 和 jsp 连接到 oracle i 的方法:

Class.forName("oracle.jdbc.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:xe";
//Xe being the database name
String usr = "username";
String pwd = "pwd";

在 java 上工作正常,但在 jsp 上会出错。

【问题讨论】:

  • 您忘记告知错误。有无数种错误,每种错误都以自己的方式说明问题的原因。不告诉任何有关错误的信息将使原因难以确定并且问题难以解决。
  • 当我使用 oracle.jdbc.OracleDriver 时,它给了我 class not found 异常。
  • 我知道这篇文章已经很老了,但仍然想写下我可以在你的代码中看到的错误。您可以改用 oracle.jdbc.driver.OracleDriver 并尝试。
  • @somnathchakrabarti:这不是问题所在。问题是服务器无法找到 jar。在遵循 wds 的指示后,一切都开始正常了。
  • 好的,我明白了。我昨天遇到了一些类似的问题。尽管在系统类路径下添加了 classes.jar 和 ojdbc14.jar,我还必须在我的应用程序的 WEB_INF/lib 文件夹下手动添加它们。它奏效了。

标签: oracle jsp jdbc


【解决方案1】:

我找到了解决方案...

这很简单...我会专门针对 oracle 数据库和 apache tomcat 服务器。

从 oracle 或任何来源下载 ojdbc6.jar

将它放在你的 tomcat/lib/ 中(无论你使用 xampp 还是任何 amp 包,它都在那里) 重启你的服务器是必须的,否则你只会想知道 lolz。

试试这个代码吧..!!

<%@ page import="java.sql.*" %>

<HTML>
<HEAD>
<TITLE>Simple JSP to Oracle connection Example</TITLE>
</HEAD>
<BODY>
<%
    Connection conn = null;
    try
    {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");
        out.println("connected....!!");

    }

    catch(Exception e)
    {
        out.println("Exception : " + e.getMessage() + "");
    }


%>
</BODY>
</HTML>

【讨论】:

    【解决方案2】:
    <%@page import="java.sql.*"%>
    <%@page import="oracle.jdbc.driver.*" %>
    <%@page import="oracle.sql.*;" %>
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form id="form1" name="form1" method="get" action="but1.jsp">
    <label>
        Sr No:<input type="text" name="txt" /></br>
        Name: <input type="text" name="txt1" />
    </label>
    <p>&nbsp;</p>
    <p>
      <input type="submit" name="but1" id="but1" value="Submit">
    
    
      </input>   
        <% String s=request.getParameter("txt");
        System.out.print(s);
    
        String s1=request.getParameter("txt1");
    
    
    Connection con;
    
    Statement st;
    
    ResultSet rs;
    
    try{
           System.out.println("hi");
       Class.forName("oracle.jdbc.OracleDriver");
           System.out.println("1"); 
           con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","oracle-uname","oracle-password");
           System.out.println("2");
       st=con.createStatement();
           System.out.println("3");
       String query="insert into table1(srno, name) values ("+s+",'"+s1+"')";
           System.out.println("4");
           int rRs=st.executeUpdate(query);
           System.out.println("5");
           String q="Select * from table1 where srno="+s+"";
           System.out.println("cats");
       rs=st.executeQuery(q);
           System.out.println("catty");
           while(rs.next())
           {
                System.out.println("6");
        out.println("number is: "+rs.getString(1));%>
                </br>
                <%out.print("name is: "+rs.getString(2));           
           } 
        }
    
    catch(Exception ee)
    
    {
        System.out.println(ee.getMessage());
    }
    %>
    </body>
    </html>
    

    "jdbc:oracle:thin:@localhost:1521:XE"=路径

    设置路径.. 服务 > 数据库 > 驱动程序 > oracle 瘦 > 使用连接 > 添加 jar ojdbc6.jar > 下一步 > jdbc url(在底部)> 将 uname 设置为系统,并将密码设置为 oracle 密码 > 测试连接

    jdbc url 形成路径,即“jdbc:oracle:thin:@localhost:1521:XE”

    一切顺利

    【讨论】:

    • 那么,您的回答有什么意义?我不明白你的具体意思
    【解决方案3】:

    如果您使用的是 CLASSPATH 环境变量,您的应用服务器会忽略它。这可能就是为什么它“适用”于 Java 但不适用于 JSP。

    我建议您不要那样依赖 CLASSPATH。了解如何针对各种情况进行正确设置。

    我还建议不要将 scriptlet 代码放在 JSP 中。这将在短时间内成为维护方面的噩梦。

    如果您必须将数据库调用放在 JSP 中,请学习如何使用 JSTL 及其&lt;sql&gt; 标签。

    【讨论】:

      【解决方案4】:

      两者之间应该没有真正的区别。驱动程序 jar 在您的 WEB-INF/lib/ 子目录中吗?未找到类异常通常意味着在类路径中找不到您的 jar。

      【讨论】:

      • 驱动程序 jar 包含在类路径中。如果我在同一个项目中创建一个 java 文件,它工作正常。问题只出在 jsp 上。
      • 您使用的是哪个服务器?您在服务器文件夹中的哪个路径放置了 ojdbc14.jar ?
      • @Logan - 这不是他问你的。 JAR 在 WEB-INF/lib 中吗?如果您使用的是系统 CLASSPATH,您需要知道您的应用服务器会忽略它。
      • @Logan:您是否通过某种方式从 IDE 启动来运行应用程序服务器?可能是配置问题。
      • 我已经在项目中导入了jar并且没有使用系统类路径。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-07
      • 2012-04-26
      • 1970-01-01
      • 2014-02-22
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多