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 表的标题而不是它们的内容的主要内容,如果未能解决你的问题,请参考以下文章
我获取的数据只显示一个数据而不是显示两个(Firebase,Swift)
在 Chrome 中运行 IntelliJ JSP 代码而不是显示源代码