如何在 Struts 2 中的 JSP 页面上显示数据库记录列表(通过 Hibernate 检索)?

2024-02-29

我正在尝试使用 Hibernate 在 Struts 2 中的 JSP 页面中显示数据库记录。

我已经成功完成检索部分。

但无论我做什么,我似乎都无法在JSP页面中显示数据。

我尝试过在互联网上找到的各种解决方案。但无法理解似乎是什么问题。

我可以看到表列名称,但其中没有数据。

我的中拥有所有必需的 getter 和 setterUserPOJO 类。

我附上了我的代码:

注册动作:

public class RegisterAction extends ActionSupport{
    String name,pwd,email,address;
    int phno;

    public RegisterAction() {}

    List<User> users = new ArrayList<User>();
    UserDao udao = new UserDao();

    //Getters and setters.

    public String execute() throws Exception {
        User u=new User();
        u.setName(name);
        u.setEmail(email);
        u.setAddress(address);
        u.setPhno(phno);
        u.setPwd(pwd);
        udao.addUser(u);
        return "success";
    }

    public String listAllUsers(){
        users = udao.getUsers();
        System.out.println("In Action, "+users);
        return "success";
    }
}

UserDao:

public class UserDao{        

    List<User> allUsers = new ArrayList<User>();

    public UserDao() {}

    //Getter and setter.

    public Session getSession(){
        return HibernateUtil.getSession();
    }

    public void closeSession(){
        HibernateUtil.closeSession();
    }

    public void addUser(User u) {
        Session session= getSession();
        Transaction t = session.beginTransaction();
        int i = (Integer)session.save(u);
        t.commit();
        closeSession();
    }

    public List<User> getUsers() {
        Session session=getSession();
        Transaction t = session.beginTransaction();
        allUsers = (List<User>)session.createQuery("from User").list();
        t.commit();
        closeSession();
        System.out.print(allUsers);
        return allUsers;
    }
}

User.java//实体类:

@Entity
@Table(name="tbl_user")
public class User {
    @Id
    @GeneratedValue
    @Column(name="user_id")
    private int id;
    @Column(name="user_phno")
    int phno;
    @Column(name="user_name")
    private String name;
    @Column(name="user_pwd")
    private String pwd;
    @Column(name="user_email")
    private String email;
    @Column(name="user_address")
    private String address;

    public User(){}

    public User(String name,String pwd,String email,String address,int phno){
        this.name = name;
        this.pwd = pwd;
        this.email = email;
        this.address =address;
        this.phno = phno;

    }

    //Getters and setters.
}

home.jsp:

<table>
    <tr>
        <th>Name</th>
        <th>Email</th>
        <th>Address</th>
        <th>Phone No</th>
    </tr>
    <s:iterator value="users">
        <tr>
            <td><s:property value="name"/></td>
            <td><s:property value="email"/></td>
            <td><s:property value="address"/></td>
            <td><s:property value="phno"/></td>
        </tr>
    </s:iterator>

</table>

struts.xml:

<action name="register" class="action.RegisterAction" method="execute">
    <result name="success" type="redirect">listUsers</result>
</action>
<action name="listUsers" class="action.RegisterAction" method="listAllUsers">
    <result name="success">/home.jsp</result>
</action>

HibernateUtil:

public class HibernateUtil {

    static SessionFactory sessionFactory;
    static Session session;

    public static Session getSession() {
        sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
        session= sessionFactory.openSession();
        return session;
    }

    public void setSession(Session session) {
        this.session = session;
    }

    public static void closeSession(){
        session.close();
    }
}

服务器日志包含:

[models.User@9c0fad, models.User@1c94f2c, models.User@16d06ef]

INFO: In Action, [models.User@9c0fad, models.User@1c94f2c, models.User@16d06ef]

也许你明白,但不知道为什么你没有尝试解决它。如果要显示数据,首先应该将其放入数据库中。检查数据是否可用,通过客户端应用程序连接到它。连接到数据库的方法有很多,包括 IDE 提供的 JDBC 客户端应用程序。它还直接从您的连接属性hibernate.cfg.xml并具有测试连接的能力。另外,请确保用于连接数据库的凭据具有对架构的 DML/DDL 访问权限,该架构可能应该手动创建。

该文件用于休眠配置,您应该注意它,因为它是有效的correcthibernate版本对应的DTD。

然后,您正在使用基于注释的映射,并且也应该在配置文件中进行配置。

接下来,DAO 不应该扩展HibernateUtil并放一个static财产为session是一场灾难。 DAO 不应该有static特性。如果你想获得会话使用HibernateUtil.getSession()并且不要忘记在事务结束时关闭会话。我猜你还没有实施我提出的建议之前的答案 https://stackoverflow.com/questions/18620366/struts-2-hibernate-null-pointer-exception-while-submitting-the-form/18622827#18622827,所以你不知道如何从线程获取会话。无论如何,在构造函数中打开会话仅在您第一次使用该会话时有效,并且在关闭它后它不再可用。在开始事务之前,在方法中打开一个会话。

Next, ModelDriven@Quaternion 更好地描述了您的模型,关于您的模型的几句话:您的模型仅用于查看user并且不包含要显示的属性users.

最后是方法execute是操作配置使用的默认方法,您不应该映射此方法,除非您知道自己在做什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Struts 2 中的 JSP 页面上显示数据库记录列表(通过 Hibernate 检索)? 的相关文章

随机推荐

  • 根据选择值过滤表行

    我需要根据选择值过滤表行 当选择的值为 空 时 表必须隐藏 如果选择值是 1 则表必须可见 并且必须仅显示第一个表列包含值 1 的行 问题是这个 id 列包含多个 id 例如 1 2 由于我的 JQuery 技能不是最好的 我需要你们帮助我
  • 调节/速率限制红宝石机械化

    我需要调节 Mechanize 实例与 API 连接的频率 每 2 秒一次 因此限制连接到该或更多 So this instance pre connect hooks lt lt Proc new sleep 2 我原以为这会起作用 而且
  • 使用 Play Framework 检索应用程序内的端口号

    我的系统上有两个 Play 框架 Web 应用程序在端口 9001 和 9002 上运行 我想知道是否有任何方法可以从我的 Java 代码中检索它们在哪个端口上运行 这可能吗 是的 你可以这样获取端口 int port Integer pa
  • 使用 bitbucket 在 Azure 上部署 Angular2 项目时出现 package.json 错误

    我在 azure 上部署 angular2 应用程序时遇到问题 我在以下行中收到错误 engines node 6 2 1 我给出的版本是 WEBSITE NODE DEFAULT VERSION 的值为 6 2 1 任何对此有想法的人请分
  • 字符串中包含组中的任何字符吗?

    我有一组字符 等 我也有一个字符串 可以说 这是我的字符串 我的字符串 我想检查字符串中是否存在任何字符 这不是检查子字符串 而是检查集合中的字符 我可以这样做 my str find or my str find or my str fi
  • 如何创建文件并写入文件?

    最简单的方法是什么用 Java 创建并写入 文本 文件 https docs oracle com javase tutorial essential io file html 请注意 下面的每个代码示例都可能会抛出异常IOExceptio
  • 将一组新数据写入 Plist 而不是覆盖它

    我试图获取一个 plist 来存储多组数据 但每次保存 使用 ActionSheet 中的按钮 时 它都会覆盖前一组数据 我想添加多个 朋友 及其数据 我不太热衷于使用 Core Data 所以我想知道如何使用 Plist 来做到这一点 这
  • NSAsynchronousFetchRequest - 应该在主线程上显式完成更新

    我正在创建一个 NSAsynchronousFetchRequest 其中有一个完成块 我见过各种示例 其中一些包括在主线程上使用调度队列 而另一些则没有 例如 Ray Wenderlich 核心数据手册不会在主线程上调用结果 执行结果时我
  • React Native 堆栈跟踪

    I have React Native App与 Firebase Crashlytics 关联 问题是 firebase 发送不可读的堆栈跟踪 如下所示 有任何方法可以读取此类错误 我只想知道什么时候抛出错误 这是我的堆栈跟踪 致命异常
  • 启用服务器端加密的跨账户访问 AWS SQS

    上下文 AWS 账户 2 中有一个 API 将 SQS url 作为其输入之一并向其发布输出 帐户 1 的所有者希望将此 API 与他自己的 SQS 队列一起使用 账户 1 有一个启用了 SSE KMS 的 SQS 队列 账户 1 的所有者
  • 构建 Qt - NMAKE:致命错误 U1077:“cd”:返回代码“0x2”

    我正在尝试使用 msvc2015 构建带有静态链接的 Qt5 5 但出现以下错误 实际上有很多错误 但我只列出了一些 它们都完全相同 K Archivos de programa Microsoft Visual Studio 14 0 V
  • pack://application:,/ResourceFile.xaml 永远不会工作

    我从来没有能够让资源字典的这种参考格式发挥作用 我缺少什么 设想 创建并组装一些用户控件 在根目录下有所说的文件 根 主题 ColorThemes xaml ColorThemes xaml 文件的构建操作设置为Resource http
  • 覆盖本地资源字典中的系统颜色

    我试图隐藏指示 WPF 中选择的视觉提示ListBox 这个答案 https stackoverflow com questions 4343793 how to disable highlighting on listbox but ke
  • 使用多个类实现一个接口

    这个问题是在一次采访中问我的 我厌倦了在这里谷歌搜索 我有一个包含 100 个方法的接口 我不想在一个类中实现所有这 100 个方法 有没有一种方法可以通过使用多个类来实现这 100 个方法而不重复实现 例如 A 类 仅 实现前 10 个方
  • Android JSON HttpClient 使用 HttpResponse 将数据发送到 PHP 服务器

    我目前正在尝试从 Android 应用程序发送一些数据到 php 服务器 两者都由我控制 应用程序中的表单上收集了大量数据 这些数据被写入数据库 这一切都有效 在我的主代码中 首先我创建一个 JSONObject 在本例中我已将其删减 JS
  • Scala lambda 函数与 map 函数

    我定义以下变量x val x Array 3 2 4 5 它的类型是Array Int Int 当我执行以下操作时 x map a Int b Int gt a b 我收到以下错误 console 28 error type mismatc
  • .Net MVC - 从视图中访问数据库不仅仅是糟糕的做法? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我见过一些开发人员实例化从视图内访问数据库的模型 通常 当他们想要访问 html 部分时 他们会这样做 并且他们只是在视图中创建一个新的视图模型
  • 有没有办法在 Scala 中使用“type”字作为变量名?

    在我的实践中 变量 参数经常用于存储某种类型 通常作为枚举值 在名称中指定实体类通常是没有意义的 就像当函数仅用于处理用户时的 userType 一样 有没有办法可以使用 类型 一词来满足我的需求 而不是使用 tipe kind somet
  • 如何从多维数组中提取列?

    有谁知道如何在Python中从多维数组中提取列 gt gt gt import numpy as np gt gt gt A np array 1 2 3 4 5 6 7 8 gt gt gt A array 1 2 3 4 5 6 7 8
  • 如何在 Struts 2 中的 JSP 页面上显示数据库记录列表(通过 Hibernate 检索)?

    我正在尝试使用 Hibernate 在 Struts 2 中的 JSP 页面中显示数据库记录 我已经成功完成检索部分 但无论我做什么 我似乎都无法在JSP页面中显示数据 我尝试过在互联网上找到的各种解决方案 但无法理解似乎是什么问题 我可以