【问题标题】:How to retrieve from session object in JSP?如何从 JSP 中的会话对象中检索?
【发布时间】:2020-01-16 12:47:08
【问题描述】:

我有一个用户对象,其中包含姓名、联系方式等详细信息,并且我将此对象存储在会话属性中。如何在 JSP Scriplet 的 String 变量中保存姓名和联系方式?

我尝试过使用

String uname1 = (String) request.getSession().getAttribute(${requestScope['users'].getName()});

和许多其他组合 但它失败了

我的 JAVA 代码

user = userDetails.getByUsername(username);

request.getSession().setAttribute("uname", user);

在 JSP 中我有

<%

String uname = (String) request.getSession().getAttribute("uname");
if (uname != null) {
response.sendRedirect("home.jsp");
}

%>

如何从 "uname" 对象中提取 "name" 并将其存储到用于检查空值的变量中?

【问题讨论】:

  • 用户是用户对象吗?
  • 是 nassim,用户 user = new User();

标签: java jsp jsp-tags


【解决方案1】:

您可以只在会话中存储名称而不是用户对象

user = userDetails.getByUsername(username);

request.getSession().setAttribute("uname", user.getName());

因为我看到在 jsp 中你期望一个字符串对象,如果你想存储一个用户对象而不是你应该期望一个用户对象而不是 jsp 中的字符串

user = userDetails.getByUsername(username);

request.getSession().setAttribute("uname", user);

<%

User user = (User) request.getSession().getAttribute("uname");
if (user.getName() != null) {
response.sendRedirect("home.jsp");
}

%>

【讨论】:

  • 但是我需要整个对象,因为我还需要为不同的条件设置不同的参数。我不想在 session 属性中设置 35 POJO 单独使用。
  • 第二种解决方案没有帮助吗? user是jsp中的User对象
  • 我试过了。 Users obj = request.getSession().getAttribute("uname"); 错误 - 类型不匹配:无法从对象转换为用户
  • 是的,看看我的例子!您应该将其转换为(用户)
  • 是的,它成功了,非常感谢。但由于这段代码位于登录页面本身,因此用户对象为空,即使是第一次也没有出现在登录页面上。所以我把它包装在一个条件下,以检查会话是否是新的。请调查一下,如果我错过了一个场景,请告诉我。 if(!session.isNew()){ Users user = (Users) request.getSession().getAttribute("uname1"); if (user.getName() != null) { response.sendRedirect("home.jsp"); } }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
  • 1970-01-01
  • 2015-05-15
  • 2022-12-12
  • 2012-02-26
  • 2014-12-15
  • 2013-02-24
相关资源
最近更新 更多