Как вывести List пользователей используя jsp?

127
26 июня 2019, 06:00

Есть класс Person с параметрами: name, age, email, а также getter и setter. После чего я создал класс PersonStorage - который имеет два метода:

private static List<Person> personList = new ArrayList<Person>();
public void addPerson(Person person){
    personList.add(person);
}
public List<Person> getAllPerson(){
    return this.personList;
}

HttpServlet - который получает параметры name, age, email и создает объект Person и добавляет его в list:

    @WebServlet(urlPatterns = {"/addclientform.jsp"})
public class AddClientServlet extends HttpServlet {
    private PersonStorage personList = new PersonStorage();
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("name");
        int age = Integer.parseInt(req.getParameter("age"));
        String email = req.getParameter("email");
        Person person = new Person(name, age, email);
        personList.addPerson(person);
        req.getRequestDispatcher("printmessage.jsp").forward(req,resp);
    }
}

Вот jsp форма:

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Add Client Form</title>
</head>
<body>
<font size="5">Add Client Form</font><br/>
<br/>
<form action="printmessage.jsp" method="post">
    Name: <input type="text" name="name"/><br/>
    Age: <input type="text" size="1" name="age"/><br/>
    Email: <input type="text" name="email"/><br/>
    <br/>
    <input type="submit" value="Add Client"/>
</form>
<form name="return" action="home" method='post'>
    <input type='submit' value='Return Home'/>
</form>
</body>
</html>

Так же создан еще один HttpServlet который уже должен выводить list уже созданных пользователей:

    @WebServlet(urlPatterns = {"/clientList"})
public class SeeClient extends HttpServlet {
    PersonStorage personStorage = new PersonStorage();
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setAttribute("list", personStorage.getAllPerson());
        req.getRequestDispatcher("clientList.jsp").forward(req,resp);
    }
}

И последний jsp который пробегает и выводит list:

    <%@ page session="false" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Clien Page</title>
</head>
<body>
<table>
    <tr>
        <th>Name</th>
        <th>Age</th>
        <th>Email</th>
    </tr>
    <c:forEach items="${list}" var="personlist">
        <tr>
            <td>${personlist.name}</td>
            <td>${personlist.age}</td>
            <td>${personlist.email}</td>
        </tr>
    </c:forEach>
</table>
<form name="home" action="home.jsp" method="post">
    <input type="submit" value="back">
</form>
</body>

Но когда я пытаюсь добавить пользователя, то список пуст! Подскажите пожалуйста, как это исправить?

Answer 1

У вас private PersonStorage personList = new PersonStorage(); в разных классах это разные объекты - поэтому вы добавляете в один PersonStorage, а получить результаты пробуете в другом PersonStorage. Мы можете ваш мемори сторидж сделать синглтоном например или использовать фреймворки типа Spring.

READ ALSO
Редирект в контроллере

Редирект в контроллере

У меня есть таблица с компьютерами и таблица с их характеристиками

154
Добавить связь к промежуточной таблице

Добавить связь к промежуточной таблице

Возникла проблема с добавлением роли к аккаунту

130
Почему Spring Data делает лишние запросы?

Почему Spring Data делает лишние запросы?

Есть следующий метод JPA репозитория:

162
Закрепить приложение на Android

Закрепить приложение на Android

День! Есть планшет на android с установленным на нём приложением обратной связиСуть такая - лежит такой планшет на кассе в магазине и каждый желающий...

139