Почему я могу получить атрибут сеанса на странице JSP, но не в сервлете? - PullRequest
1 голос
/ 18 апреля 2011

У меня есть веб-приложение, которое начинается со страницы входа. Во время проверки этого имени входа создается сеанс, и идентификатор, используемый для входа, сохраняется как атрибут. Затем предполагается, что этот идентификатор будет отображаться на страницах, на которые пользователь переходит. Пока что я могу заставить его отображаться только на странице JSP, но все, что я пробую на странице сервлета, не работает.

Вот логика, которую я использовал на странице подтверждения входа в систему:

UserBean2 userBean2 = (UserBean2) session.getAttribute("userBean2");
String un = request.getParameter("id");
userBean2 = new UserBean2(un);
session.setAttribute("userBean2", userBean2);

Вот бин, который я создал UserBean2:

public class UserBean2 {
     private String id;

public UserBean2(String id) {
     setUsername(id);
}

public String getUsername() {
     return(id);
}

public void setUsername(String id) {
     if (!isMissing(id)) {
          this.id = id;
}
}

private boolean isMissing(String value) {
     return(value == null) || (value.trim().equals("")));
}
}

Часть, которая работает, - это когда я пытаюсь вызвать идентификатор на странице jsp. Я делаю это с этим:

${userBean2.username}

Но чтобы назвать это на странице сервлета, я пробовал все под солнцем, и ничего не работало правильно.

Я даже попробовал getAttributeNames, думая, что даст мне необходимую информацию, но все, что я получил, это: (bokay - это идентификатор, который использовался для входа в эту конкретную сессию)

bokay: bokay
userBean2: HWpackage.UserBean2@257ccb2f

Есть какие-нибудь идеи относительно того, что я предполагаю использовать на странице JSP для отображения идентификатора, который в данном случае "bokay"?

Спасибо всем!

1 Ответ

1 голос
/ 18 апреля 2011

Чтобы получить имя пользователя в сервлете, просто сделайте

UserBean2 userBean2 = (UserBean2) session.getAttribute("userBean2");
String username = userBean2.getUsername();
// ...

Не связанное с проблемой, ваш метод isMissing() находится не в том месте.Но это скорее проблема дизайна, чем функциональная проблема.Мне также интересно, насколько 2 в названии класса UserBean2 имеет значение.Первая строка кода на вашей "странице подтверждения входа в систему" также не нужна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...