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

我建议至少进行两项更改。

  1. 添加out.print("Error: " + e.getMessage());到您的捕获块。您的评论“没有堆栈,只是简单的空白页面”让我认为您不知道e.printStackTrace();打印到日志而不是浏览器中的页面。System.out.println()也不会打印到页面。
  2. 替换%><%= name%><%out.print(name);。每次您想打印某些东西时,关闭和重新打开 scriptlet 标签是一种混乱而可怕的做法。

        <%
            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 回答