Java 为什么我的JDBC(read)查询不能在我的JSP页面上工作?

Java 为什么我的JDBC(read)查询不能在我的JSP页面上工作?,java,mysql,jsp,maven,jdbc,Java,Mysql,Jsp,Maven,Jdbc,我写了一个.jsp页面作为一个更大的数据库项目的一部分。目标是拥有一系列使用java和html显示mySQL数据库数据的.jsp页面。我在JDBC查询方面遇到了一个问题,特别是使用准备好的语句从库存表中选择汽车型号。我对它进行了编码,以便id=3的汽车返回相应的汽车型号,然后在屏幕上打印出来。运行代码后,屏幕上没有输出,因此问题可能在于我的查询或之前的连接设置,我只是不确定在哪里 <%-- Document : content Created on : May 6, 2015, 5:

我写了一个.jsp页面作为一个更大的数据库项目的一部分。目标是拥有一系列使用java和html显示mySQL数据库数据的.jsp页面。我在JDBC查询方面遇到了一个问题,特别是使用准备好的语句从库存表中选择汽车型号。我对它进行了编码,以便id=3的汽车返回相应的汽车型号,然后在屏幕上打印出来。运行代码后,屏幕上没有输出,因此问题可能在于我的查询或之前的连接设置,我只是不确定在哪里

<%-- 
Document   : content
Created on : May 6, 2015, 5:04:20 PM
Author     : Christopher
--%>

<%@page contentType="text/html" pageEncoding="UTF-8" %>
<%@page import = "java.sql.*" %>
<%@page import = "java.util.logging.Level" %>
<%@page import = "java.util.logging.Logger" %>

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>content</title>
    </head>
    <body>
        <h1>Welcome!</h1>
    <%!

public class Template {

public Template(){

    try{

        Class.forName("com.mysql.jdbc.driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/itmd4515?zeroDateTimeBehavior=convertToNull"
        ,"itmd4515","itmd4515");
        PreparedStatement ppst = con.prepareStatement("select * from inventory where id = 3");
        ResultSet rs = ppst.executeQuery();
        rs.next();
        String carModel = rs.getString("carModel");
        rs.close();
        con.close();

        System.out.println(carModel);

    }catch(SQLException ex){
        System.err.println(ex.getMessage());
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Template.class.getName()).log(Level.SEVERE, null, ex);
    }

}

}


    %>
    <br><br>
    <%= new java.util.Date() %>
</body>
库存表

我确信问题出在上面代码的某个地方,因为运行代码时没有错误;它根本不显示汽车模型。此外,数据库已正确配置和连接,因此这可能也不是问题所在

如果这个问题很明显,我很抱歉,我仍然对JDBC和.jsp有一些了解。这是一个在Netbeans中完成的maven web应用程序

最新的系统消息


修改代码以输出SQLException和ClassNotFoundException后,我在浏览器中收到以下输出:com.mysql.jdbc.driver

您的代码声明了该类的模板类和构造函数。若类甚至并没有实例化,为什么要执行它

除此之外,这是一种非常奇怪的编写JSP页面的方式。您需要阅读一些关于编写简单JSP页面的体面书籍:类似smth的核心servlet和Javaserver页面:核心技术,第1卷第2版-这本书非常古老,但为初学者提供了编写简单JSP/servlet的位置和方法的线索

替换System.out.printlncarModel toout.printlncarModel

考试~


这里有一篇文章给你

我从不用jsp编写类和方法。如果您想测试jdbc子句是否有效,只需编写一个简单的java文件,使用main方法。如下

/**
 * Copyright (c) 2014
 * Tanry Electronic Technology Co., Ltd.
 * ChangSha, China
 * 
 * All Rights Reserved.
 * 
 * First created on May 7, 2015 by liyzh
 * Last edited on May 7, 2015 by liyzh
 * 
 * 说明: TODO
 */
package com.tanry.business.module.lc.request;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Test {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/itmd4515?zeroDateTimeBehavior=convertToNull", "itmd4515", "itmd4515");
            PreparedStatement ppst = con.prepareStatement("select * from inventory where id = 3");
            ResultSet rs = ppst.executeQuery();
            while (rs.next()) {
                String carModel = rs.getString("carModel");
                System.out.println(carModel);
            }
            rs.close();
            ppst.close();
            con.close();
        } catch (SQLException ex) {
            System.err.println(ex.getMessage());
        } catch (ClassNotFoundException ex) {
            // Logger.getLogger(Template.class.getName()).log(Level.SEVERE,
            // null, ex);
        }
    }
}

使用eclipse之类的IDE,您可以非常轻松地调试代码。

您正在打印到System.out,而不是web页面。你检查过服务器日志了吗?你需要做一些调试。在创建连接的直线上放置一个断点,然后逐步执行,在执行过程中检查值,以确保一切都如预期的那样。还有,Java和HTML在同一个文件中吗?这不是好的做法。该页面应该只包含显示数据的JSTL。数据的获取需要在一个服务类中,在一个单独的文件中。您应该将com.mysql.jdbc.Driver放在class.forName中。驱动程序的D必须大写。我尝试过,但随后收到一个错误:找不到符号:变量输出位置:类SimplifiedJSPSServlet.Tempate它可能与使用有关,我仍在尝试使用它out@TechSavvySmurf在你的代码下欢迎!,替换完成,但不幸的是仍然没有输出,甚至没有一个ErrorInstance模板类:new Template;或者删除所有这些声明:公共类模板{public Template{还有:Class.forNamecom.mysql.jdbc.driver;应该是Class.forNamecom.mysql.jdbc.driver;@kachanov Success!成功了,谢谢。如果你能给出正式答案,我会选择它。这不是正式答案。你显示的代码和核战争一样丑陋。我的建议让你看到了你想要的结果。阅读我建议的书预计起飞时间