如何在 JSP 页面中获取 JavaScript 会话属性

How to get a JavaScript session attribute in a JSP page?

本文关键字:获取 JavaScript 会话 属性 JSP      更新时间:2023-09-26
function submit() {
    var name = document.getElementById('name').value;
    var mob = document.getElementById('number').value;
    sessionStorage.setItem("name", name);
    sessionStorage.setItem("mob", mob);
    document.getElementById("leadForm").action = "/confirm";
    document.leadForm.submit();
}

在确认页面上,我的 JSP 被调用到我要打印此name并在会话中传递mob,并且随之而来的是在此页面上选择的另一个属性,我必须将其传递给另一个页面。

我不确定如何将会话值从 JavaScript 获取到 JSP。

在我的 JSP 页面中写道:

String name = (String) session.getAttribute("name");
out.println(name);

我正在获得null价值。

sessionStorage与浏览器和变量name有关,mob是在客户端而不是在请求中设置的。

你可以将它们传递给服务器端,或者再次使用javascript显示它们的值,

  sessionStorage.getItem('name');

JS sessionStorage和JSP session是不一样的。

如果您提交了带有名称和移动号码的 html 表单,那么这将可以:

提交.jsp

<form action='confirm.jsp'>
   Name: <input type='text' name='name'/><br/>
   Mobile No: <input type='text' name='number'/><br/>
   <input type='submit' value='Submit'/>
</form>

确认.jsp

Name: ${param.name}<br/>
Mobile: ${param.number}<br/>
您可以在

leadForm中为这些变量创建隐藏字段。

<form name="leadForm" method="post" action="/confirm">
    <input type="hidden" name="name"/>
    <input type="hidden" name="mob"/>
    ...
</form>

然后,您可以在#input()函数中将它们设置为:

document.leadForm.name.value = name;
document.leadForm.mob.value = mob;

现在,如果您发布表单,则可以使用这些值:

String name = (String) request.getParameter("name");
String mob = (String) request.getParameter("mob");

它们不会在会话中,因为会话是服务器端概念(请记住,HTTP 是无状态的(,但它们将在 HTTP 请求中。如果从现在开始在会话中需要它们,则可以将它们放入其中。