【问题标题】:Java Servlet how to get a specific value from a session attributeJava Servlet 如何从会话属性中获取特定值
【发布时间】:2016-04-19 21:12:19
【问题描述】:

好的,我在解释我的问题方面有点无能,但我会尽量详细而简洁。

我有 2 个 servlet; NewCustomerServlet 和 登录Servlet

我有 1 个 Java bean; 用户

用户有一堆字段。用户名、名字、密码等...

我的 index.jsp 自动将用户定向到 NewCustomerServlet,因此用户可以创建一个“帐户” 一旦他们完成了字段的填写,用户 bean 就会被创建并保存在会话中。然后,用户就可以“登录”了

我遇到的问题是使用会话使用 login.jsp 字段验证来自“用户”会话的用户名。

如何访问会话“用户名”或“密码”字段。我似乎只能访问会话的名称,即“用户”?

【问题讨论】:

    标签: java jsp session servlets


    【解决方案1】:

    引用HttpSession 的JavaDoc,

    您会意识到HttpSession 是通过键存储属性的,就像HashMap 一样,您可以在会话中放置对象(任何可序列化的对象),例如:

    String userName = "something";//
    session.setAttribute("username", userName);
    

    然后你可以使用:

    String un=(String)session.getAttribute("username");  
    

    可以存储更复杂的对象,例如整个User 对象,只要该对象实现Serializable

    User someUser = //details left to the OP
    session.setAttribute("user", someUser);
    

    然后您可以稍后检索该用户的信息:

    User someUser = (User)session.getAttribute("user");
    if(user != null){
        String username = user.getUsername();
    }
    

    另外,这里有一个关于ServletsHttpSession 的常见会话使用情况的简短介绍:Session Tracking

    【讨论】:

    • Jesus...我已经“学习”Java 大约 2 年了,而我对这个项目的一件事却是能够做到;用户 someUser = (User)session.getAttribute("user");那是我丢失的关键。我忘了提到用户是可序列化的,对此我深表歉意。总而言之,这正是我所需要的,感谢您提供的简明信息!
    猜你喜欢
    • 2017-04-05
    • 2014-10-07
    • 2014-10-18
    • 2022-01-21
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多