eclipse 如何让JavaScript知道HTTP会话(用户登录)已经启动?

3phpmpom  于 2023-05-06  发布在  Eclipse
关注(0)|答案(1)|浏览(188)

我正在做一个电子商务网站,我很难确定一个用户是积极登录,以便购物车购买可以直接在该用户。
在EclipseIDE中使用Java,“HttpSessionsession = request.getSession();”是启动会话的方式。我不知道如何确认它实际上已经开始。我已经尝试了在JavaScript中获取session属性的函数(如果session已经启动),如果成功,登录按钮应该更改为注销,但每次运行都没有区别。我试图从session属性中提取登录电子邮件,以便可以在JavaScript中进行购买并将其发送回JavaServlet。

Java Servlet:

//begin session
HttpSession session = request.getSession();

//session storage attributes
session.setAttribute("loggedInUser", true);
session.setAttribute("user", email);
session.setAttribute("price", price);
session.setAttribute("points", points);
session.setAttribute("item", item);

JavaScript:

//If user is logged in 
function checkLoggedIn()
{
if (sessionStorage.getItem('loggedInUser') === 'true') 
{
      // User is logged in, change sign-in link to log-out link
      document.getElementById('signin-link').textContent = 'Log Out';
}
else
{
      document.getElementById('signin-link').textContent = 'Sign In';
}

}
u0njafvf

u0njafvf1#

你真的应该使用像Thymeleaf或JSP这样的东西来简化它。
可以使用纯Servlet,如下所示:
在Java中修改登录调用的servlet响应,以返回一个值,指示会话是否正确登录。就像这样:
在此呼叫上使用200表示成功登录,使用400表示失败。

response.setStatus(400); // for failure

使用此响应填充会话存储:

sessionStorage.setItem('loggedInUser', 'true')

要使用Servlet/JSP实现这一点,请按原样使用Servlet。在JSP中,使用嵌入式Java〈%=%〉在JavaScript中设置值,如下所示:

sessionStorage.setItem('loggedInUser', '<%=session.getAttribute(“loggedInUser”)%>')

相关问题