0

OS win 8.1 jdk 1.8 データベース Oracle 12_c エンタープライズ ide netbeans jsp を学習しようとしています 次のページをコーディングし、データベース接続に odbc6.jar ファイルを追加しました .....

<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<html>
    <head>
        <title>Sample jsp</title>
    </head>
    <body>
        <%
            try {
                Class.forName("oracle.jdbc.OracleDriver");
                Connection conn = DriverManager.getConnection("jdbc:oracle:thin@localhost:1521:orcl", "system", "mono");
                PreparedStatement ps = conn.prepareStatement("SELECT * FROM person");
                // ps.setInt(1, qid);
                ResultSet rs = ps.executeQuery();

                System.out.println("ID\tName\tPhone");
                while (rs.next()) {
                    //int id = rs.getInt(1);
                    String name = rs.getString(2);
                    String phone = rs.getString(3);
        %><%=   name%><%
                                }
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
        %>
    </body>
</html>

しかし、私は空白のページを取得しています:(同じコードがJava SEアプリでうまく動作しています.....正しい方向に私を向けてください..

4

1 に答える 1

0

少なくとも 2 つの変更をお勧めします。

  1. out.print("Error: " + e.getMessage());catch ブロックに追加します。あなたのコメント「no stacktaces nothing just blank page」はe.printStackTrace();、ブラウザのページではなくログに出力されることを知らないと思います。System.out.println()また、ページに印刷されません。
  2. に置き換え%><%= name%><%ますout.print(name);。何かを印刷するたびに、スクリプトレット タグを閉じてから再度開くという、厄介で恐ろしい慣習です。

        <%
            try 
            {
                System.out.println("ID\tName\tPhone"); //Print in background
                out.print("<P>ID\tName\tPhone"); //Print to actual page
                while (rs.next()) 
                {
                    //int id = rs.getInt(1);
                    String name = rs.getString(2);
                    String phone = rs.getString(3);
                    out.print(name); //Print without closing/opening scriptlet
                }
             }
             catch (Exception e) 
             {
                //Might not want to show the user the exact error in production though.
                out.print("Error: " + e.getMessage()); //print error to page
                e.printStackTrace(); //print error to log
             }
        %>
    

また、ブロックのインデントを改善する必要もあります。

于 2014-04-11T18:19:34.857 に答える