为什么我可以在JSP页面中而不是在Servlet中提取会话属性?

时间:2011-04-18 19:13:49

标签: jsp session servlets attributes

我有一个以登录页面开头的Web应用程序。在验证该登录期间,将创建会话,并将用于登录的ID保存为属性。然后,该ID将显示在用户导航到的页面中。到目前为止,我只能将它显示在JSP页面中,但我在Servlet页面中尝试的所有内容都不起作用。

以下是我在登录验证页面中使用的逻辑:

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

这是我创建UserBean2的Bean:

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页面中调用ID时。我这样做:

${userBean2.username}

但是要在Servlet页面中调用它,我已经在阳光下尝试了所有东西,没有任何工作正常。

我甚至尝试过getAttributeNames,它会给我提供我需要的信息,但我收到的只是:( bokay是用于登录此特定会话的ID)

bokay: bokay
userBean2: HWpackage.UserBean2@257ccb2f

我想在JSP页面中使用什么想法来显示ID,在这种情况下恰好是“bokay”?

谢谢大家!

1 个答案:

答案 0 :(得分:1)

要获取servlet中的用户名,只需执行

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

不相关问题,您的isMissing()方法位于错误的位置。但这更像是一个设计问题,而不是一个功能问题。我也想知道班级名2中的UserBean2是如何相关的。 “登录验证页面”中的第一个代码行也是不必要的。