JSP 不显示 JAVA Servlet 传递的数据

问题描述 投票:0回答:1

我只是一个练习 Hibernate 与 JSP 和 Servlet 集成的新手。当我尝试从数据库获取数据时出现问题。

像往常一样,我有包含所有 getter 和 setter 的实体类。数据从另一个 JSP 页面输入,通过另一个 servlet 发布并成功存储到数据库中。但是,当通过另一个 servlet 检索另一个 JSP 页面时,我没有得到任何输出。数据将显示在引导程序的通用“卡”块中。这是 JSP 代码,标题和内容现在留空。问题的一部分还在于如何从实体类中获取 getter [getTitle() 和 getContent()] 以从对象中提取数据,我仍在学习,所以我有很多困惑。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <!doctype html>
    <html lang="en">

    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>All Notes</title>
        <%@include file="all_js_css.jsp" %>
    </head>

    <body>

        <div class="container-fluid">
            <%@include file="navbar.jsp" %>

                <br>
                <h1 class="text-uppercase">All Notes:</h1>
                <br>


                <c:forEach items="${notes}" var="note">

                    <div class="card" style="width: 18rem;">
                        <div class="card-body">
                            <h5 class="card-title">
                                <c:out value="${note.??}" />
                            </h5>
                            <p class="card-text">
                                <c:out value="${note.??}" />
                            </p>
                            <a href="#" class="btn btn-primary">Go</a>
                        </div>
                    </div>
                </c:forEach>
        </div>
    </body>

    </html>

我已经尝试过

note.title, note.gettitle, note.getTitle()
。什么都没起作用。它只是在文本应该所在的位置显示空白。 servlet代码是这样的:

package com.servlets;

import java.io.IOException;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.query.Query;

import com.entities.note;
import com.helper.factoryProvider;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns = "/ShowNoteServlet")
public class ShowNoteServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello");
        try {
            Session session = factoryProvider.getFactory().openSession();
            Query query = session.createQuery("from notes");
            List<note> list = query.list();
            System.out.println(list);

            req.setAttribute("notes", list);
            req.getRequestDispatcher("all_notes.jsp").forward(req, resp);

            session.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

我放置了这两个荒谬的

println()
来检查servlet代码是否正在运行,是的,即使tomcat正在运行最新构建的war文件,我也不会在控制台中得到任何输出。

现在卡片看起来像这个。根据表中的多个条目行,应该有多张卡片。作为参考,这是我的实体代码和我的目录结构

package com.entities;

import java.util.Date;
import java.util.Random;

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

@Entity
@Table(name = "notes")
public class note {
    @Id
    private int id;
    private String title;
    private String content;
    private Date addedDate;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public Date getAddedDate() {
        return addedDate;
    }
    public void setAddedDate(Date addedDate) {
        this.addedDate = addedDate;
    }
    
    public note(String title, String content, Date addedDate) {
        super();
        this.id = new Random().nextInt(100000);
        this.title = title;
        this.content = content;
        this.addedDate = addedDate;
    }

    public note() {
        super();
    }
}

如果您能指出我做错的地方以及如何解决它,我会非常高兴。我看到人们将整个查询内容编写为 scriptlet,但它看起来不整洁且不模块化。这是唯一的方法吗?或者还有其他更好、更干净的方法来做到这一点吗?

java hibernate jsp servlets
1个回答
0
投票

您在 Servlet 文件中传递给 JSP 的属性名称是“notes”,但是在 JSP 中调用时您将其写为“note”...

© www.soinside.com 2019 - 2024. All rights reserved.