2013-03-07 80 views
1

我试图从一个DB调用一大堆JSP脚本来调用,然后我知道这不是一个好主意,所以现在我有点迷路了。将.java的结果写入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中?任何帮助将不胜感激

回答

2

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

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

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

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