【发布时间】: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>
我希望输出是表头和表数据,但只显示表头和默认值。 提前感谢您能给我的任何帮助。
【问题讨论】: