Как отобразить список записей базы данных (полученных через спящий режим) на страницу JSP в Struts 2?

я пытаюсь отобразить записи базы данных на моей странице JSP в Struts 2 с помощью Hibernate. Я успешно выполнил часть поиска.

но независимо от того, что я делаю, я не могу отобразить данные на странице JSP.

я пробовал различные решения, найденные в интернете. Но не могу понять, в чем проблема. Я вижу имя столбца таблиц, но в нем нет данных. У меня есть все необходимые геттеры и сеттеры в моем пользовательском POJO класс.

я приложил мой код:

Регистрация действий:

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]

3 ответов


может быть, вы понимаете, но не знаете, почему вы не пытались его решить. Если вы хотите отобразить данные, сначала вы должны поместить их в базу данных. Проверьте наличие данных, подключившись к ним через клиентское приложение. Существует множество способов подключения к базе данных, включая клиентское приложение JDBC, поставляемое с IDE. Он также принимает свойства соединения прямо из вашего hibernate.cfg.xml и имеет возможность проверить подключение. Кроме того, убедитесь, что учетные данные, используемые для подключения к база данных имеет права доступа DML/DDL к схеме, которая, вероятно, должна быть создана вручную.

этот файл предназначен для конфигурации hibernate, что вы должны обратить на него внимание, чтобы быть действительными из-за правильно DTD, соответствующий версии hibernate.

затем вы используете сопоставление на основе аннотаций, и оно также должно быть настроено в файле конфигурации.

далее, DAO не должен расширять HibernateUtil и поставив static свойство session - Это катастрофа. Даос не должен был static свойства. Если вы хотите получить сеанс использовать HibernateUtil.getSession() и не забудьте закрыть сессию в конце сделки. Я думаю, вы все еще не реализовали то, что я предложил в предыдущий ответ, поэтому вы не знаете, как получить сеанс из потока. В любом случае открытие сеанса в конструкторе работает только при первом использовании сеанса, и он больше не доступен после его закрытия. Откройте сеанс в методе перед началом транзакции.

далее ModelDriven лучше описывается @Quaternion, несколько слов о вашей модели: ваша модель используется только для просмотра user и не содержит свойств для отображения users.

и наконец, метод execute является методом по умолчанию, используемым конфигурацией действий, вы не должны сопоставлять этот метод, если вы не знаете, что делаете.


Я обнаружил, что имя вашего свойства списка jsp и имя переменной класса действий должны совпадать. Как я понимаю, это должно решить вашу проблему.....!


переопределить toString() метод в Пользователей.java