Jsp 只显示我的 mySQL 表的标题而不是它们的内容

Posted

技术标签:

【中文标题】Jsp 只显示我的 mySQL 表的标题而不是它们的内容【英文标题】:Jsp is only displaying the headers of my mySQL table not the content of them 【发布时间】:2020-01-02 04:30:06 【问题描述】:

我正在尝试使用 JSP、mysql、Servlet 和 DAO 在数据库和网站之间建立连接。连接已建立,但仅显示表的标题,而不显示数据。使用 IntelliJ Idea 作为 IDE。

连接已建立,但仅显示标题数据似乎没有被传输,因为所有值都被其默认值替换。

这是 Filme 对象,其他属性确实有 getter 和 setter 以及试图缩短。

package Filme;

public class Film 
    private int idFilme;
    private String Titel;
    private int Laenge;
    private  int Erscheinungsjahr;
    private String Hauptdarsteller;
    private String Produzent;
    private String Studio;
    private String Regiesseur;
    private String Produktionsland;
    private String Cover;
    private String Trailer;

    public int getIdFilme() 
        return idFilme;
    

    void setIdFilme(int idFilme) 
        this.idFilme = idFilme;
    

    public String getTitel() 
        return Titel;
    

    void setTitel(String titel) 
        Titel = titel;
    



    public int getErscheinungsjahr() 
        return Erscheinungsjahr;
    

    void setErscheinungsjahr(int erscheinungsjahr) 
        Erscheinungsjahr = erscheinungsjahr;
    


    @Override
    public String toString() 
        return "Film" +
                "idFilme=" + idFilme +
                ", Titel='" + Titel +
                ", Laenge=" + Laenge +
                ", Erscheinungsjahr=" + Erscheinungsjahr +
                ", Hauptdarsteller='" + Hauptdarsteller  +
                ", Produzent='" + Produzent  +
                ", Studio='" + Studio  +
                ", Regiesseur='" + Regiesseur  +
                ", Produktionsland='" + Produktionsland  +
                ", Cover='" + Cover +
                ", Trailer='" + Trailer +
                '';
    

这是 Film 对象的 Dao,它建立连接并检索数据。出于某种原因,IDE 认为 Filme.Film 的导入未使用,即使我稍后使用该类中的属性。

package Filme;

import Filme.Film;
import java.sql.*;

public class FilmDao 
    public Film getFilm(int idFilme)
    
        Film a = new Film ();
        try 
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/filme","root", "root" );
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select * from filme.filme where idFilme=" + idFilme);
            if (rs.next())
            
                a.setIdFilme(rs.getInt("idFilme"));
                a.setTitel(rs.getString("Titel"));
                a.setErscheinungsjahr(rs.getInt("Erscheinungsjahr"));
            
        
        catch (Exception e)System.out.println(e);

        return a;
    

这是 Servlet。同样的,Film 和 FilmDao 进口显然没有使用。

package Filme;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

import Filme.Film;
import Filme.FilmDao;

public class getFilme extends HttpServlet 
    protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 

        int idFilme = Integer.parseInt(request.getParameter("idFilme"));
        FilmDao dao=new FilmDao();
        Film a1 = dao.getFilm(idFilme);

        request.setAttribute("Film", a1);

        RequestDispatcher rd = request.getRequestDispatcher("Film_fein.jsp");
        rd.forward(request, response);
    

捕获要显示的电影 ID 的页面。 Film_grob.jsp

<%@ page import="Filme.Film" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>FML</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
   <%
       Film a1 = (Film)request.getAttribute("Film");

       out.println(a1);
   %>
</body>
</html>

应该显示数据的页面 (Film_fein.jsp)

<%@ page import="Filme.Film" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>FML</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
   <%
       Film a1 = (Film)request.getAttribute("Film");

       out.println(a1);
   %>
</body>
</html>

我希望输出是表头和表数据,但只显示表头和默认值。 提前感谢您能给我的任何帮助。

【问题讨论】:

【参考方案1】:

显然我使用了错误的驱动程序并将其存储在错误的位置,但代码工作正常。

请务必像聪明人一样通过 maven 添加驱动程序。

【讨论】:

以上是关于Jsp 只显示我的 mySQL 表的标题而不是它们的内容的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 查询中返回相关字段而不是参考号

我获取的数据只显示一个数据而不是显示两个(Firebase,Swift)

在 Chrome 中运行 IntelliJ JSP 代码而不是显示源代码

使用 JSP、Servlet、JQuery 和非规范化 Mysql 表的依赖动态下拉列表

在jsp页面中显示图像而不是图像url [复制]

PHP MySQL 图片/数据动态对齐