JavaEE сервлет setAttribute зачем - PullRequest
       22

JavaEE сервлет setAttribute зачем

0 голосов
/ 07 сентября 2018

Я надеюсь, что вы, ребята, сможете помочь мне разобраться в кейсе в методе сервлетов doGet.

например, у нас есть класс User с именем и фамилией, конечно же, установлены геттеры и сеттеры. Дополнительные фрагменты информации есть в комментариях в коде. Вопрос в том, какова цель SetAttribute в этом случае? Должен ли я использовать это? Я не вижу разницы, когда он включен и выключен. Заранее благодарим вас за быстрый ответ.

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    //here I initiate servlet to create a session yes?
    HttpSession session = request.getSession(true);
    // here im getting atribiute which is goinna be null now:
    User user = (User) session.getAttribute("user");



    //now in case of null i want to create object which can have null atributes like name and lastname:
    if(user == null) {

        user = createUser(request);

        //here is my problem, i dont know what is it for? I already get atrributes, why would i want to set object again? to what?
        session.setAttribute("user", user);
    }

    returnInfo(response,user);




}

protected User createUser(HttpServletRequest request) {
    User user = new User();
    String name = request.getParameter("name");
    String lastname = request.getParameter("lastname");

    user.setName(name);
    user.setSurname(lastname);
    return user;
}

protected void returnInfo(HttpServletResponse response,User user) throws IOException {
    PrintWriter write = response.getWriter();
    write.println("<html>");
    write.println("<body>");
    write.println("<div>");
    if(user.getName() == null && user.getSurname() == null) {
        write.println("no person was added");
    }
    else{
        write.println("person is" + " " + user.getName() + " " + user.getSurname());
    }

    write.println("</div>");
    write.println("</body>");
    write.println("</html>");
}

1 Ответ

0 голосов
/ 07 сентября 2018

Вы только что создали нового пользователя. Он должен быть добавлен в сеанс, иначе ваш пользовательский атрибут всегда будет нулевым.

...