Servlet中的doGET不会在html页面中写入

时间:2014-02-09 15:28:12

标签: javascript html tomcat servlets

这是我的javascript部分

<script language=javascript type="text/javascript">
            function myFunction()   {

                var request = new XMLHttpRequest();
                request.open("GET", "http://localhost:8080/Test/Servlet");

                request.send();

                //document.write("Request GET enviado!");

            }
</script>

这是我的doGEt部分

@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        System.out.println("Request GET recebido!");

        // JDBC driver name and database URL
        String JDBC_DRIVER = "com.mysql.jdbc.Driver";
        String DB_URL = "jdbc:mysql://localhost:3306/Tests";

        //  Database credentials
        String USER = "fabio";
        String PASS = "hacking";

        Connection conn = null;
        Statement stmt = null;

        // Set response content type
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        try {
            // Register JDBC driver
            Class.forName(JDBC_DRIVER);

            // Open a connection
            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            // Execute SQL query
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT * FROM people";
            ResultSet rs = stmt.executeQuery(sql);


            out.println("<html><body>");
            // Extract data from result set
            while (rs.next()) {
                //Retrieve by column name
                int person_id = rs.getInt("person_id");
                String first_name = rs.getString("first_name");
                String last_name = rs.getString("last_name");

                //Display values
                out.println("Person ID: " + person_id + " | ");
                out.println("First name: " + first_name + " | ");
                out.println("Last name: " + last_name + "<br>");

            }
            out.println("</body></html>");

            // Clean-up environment
            out.close();
            rs.close();
            stmt.close();
            conn.close();

        } catch (Exception e) {
            System.out.println(e);
        }
    }

它们一直工作,直到从数据库中检索数据为止。无效的部分是将out.println发布回HTML页面。有人可以建议吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

对于我来说,如果你对这样的回答做了什么,这对我来说并不明显:

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
    var respdiv = document.getElementById("respdiv");
    respdiv.innerHTML = "Response=" + xhr.responseText;
}
xhr.open("GET", "http://localhost:8080/Test/Servlet", true);
xhr.send(null);

同样有趣的是,在内置的eclipse浏览器中运行它以“hello”而不是“SOMETHING”(没有检查原因)响应,但在chrome中打开时工作。 doGet代码:

PrintWriter out = response.getWriter();
out.println("SOMETHING");
out.flush();
out.close();