1

我试图做大量的 JSP 脚本来从数据库调用,然后我了解到这不是一个好主意,所以现在,我有点迷路了。

FirstExample.java:

 package p;

 //STEP 1. Import required packages
import java.sql.*;


public class FirstExample {
   // JDBC driver name and database URL
static final String JDBC_DRIVER = "oracle.jdbc.OracleDriver";  
static final String DB_URL = "url";

//  Database credentials
static final String USER = "user";
static final String PASS = "pw";

public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
  //STEP 2: Register JDBC driver
 Class.forName("oracle.jdbc.OracleDriver");

  //STEP 3: Open a connection
  System.out.println("Connecting to database...");
  conn = DriverManager.getConnection(DB_URL,USER,PASS);

  //STEP 4: Execute a query
  System.out.println("Creating statement...");
   stmt = conn.createStatement();
 //  String sql;
       ResultSet rs = stmt.executeQuery("some query");
System.out.println(rs);
  //STEP 5: Extract data from result set
  while(rs.next()){
     //Retrieve by column name
  //         int id  = rs.getInt("some column");
         System.out.println (rs.getString(1) + "," + rs.getString(2));
  //   int age = rs.getInt("some age");
 //    String first = rs.getString("first");
  //   String last = rs.getString("last");

     //Display values
 //      System.out.print("some column: " + id);
 //    System.out.print(",some age: " + age);
//     System.out.print(", First: " + first);
//       System.out.println(", Last: " + last);
  }
  //STEP 6: Clean-up environment
  rs.close();
  stmt.close();
  conn.close();
}catch(SQLException se){
  //Handle errors for JDBC
  se.printStackTrace();
}catch(Exception e){
  //Handle errors for Class.forName
  e.printStackTrace();
}finally{
  //finally block used to close resources
  try{
     if(stmt!=null)
        stmt.close();
  }catch(SQLException se2){
  }// nothing we can do
  try{
     if(conn!=null)
        conn.close();
  }catch(SQLException se){
     se.printStackTrace();
  }//end finally try
}//end try
System.out.println("Goodbye!");
}//end main
}//end FirstExample

我需要将此结果输入 JDBCQuery2.jsp,其中显示:

<%@ page language="java" import="p.FirstExample" %>
<% FirstExample object = new FirstExample();


//FirstExample.init();    

%>
<h3>Connection ok</h3>

这会正确加载包,但我需要 .java 中方法的结果,我不知道如何使用上面的 init 调用方法。我应该使用init吗?最终,我想将 java 引用与 ajax 调用相关联,但现在有人可以帮我将查询结果拉入我的 JSP 吗?任何帮助将不胜感激

4

1 回答 1

2

从 JSP 调用 Java main() 方法不是 JSP 的工作方式。

一般来说,对于一个基本的纯 JSP 解决方案,您要做的就是将连接信息放在 web.xml 中。然后,您编写一个扩展 HttpServlet 类的 servlet,并在您为此类覆盖的 init() 方法中从 ServletContext 访问该信息。一旦您的 servlet 被容器加载,就会发生这种初始化。之后,对该 servlet 的服务方法(例如 doGet())的调用可以重定向到您的 JSP。然后,您可以通过多种方式访问​​连接信息;例如,通过 Java scriptlet 访问 ServletContext 属性或通过 EL 访问 applicationScope。

这听起来很复杂,但它是基本的 JSP/Servlet 机制。您的问题似乎表明您是 JSP 的新手,并且可能需要通过教程来运行。

根据您的环境和您正在尝试做的事情,有更复杂的方法可以做到这一点。

于 2013-03-08T04:16:16.613 回答