使用Javascript可以从HTML页面中的servlet设置的会话属性中获取值

use*_*195 30 html javascript servlets

我有一个servlet,使用重定向转发到HTML页面.因为我在html页面上使用ajax和php来做其他功能.可以变成一个jsp.有没有办法让我得到名字 - "poNumber"我在会话属性中进入servlet.我是为了得到它并展示它的价值.

我是编程新手.

可以在jsp中使用它.

但是需要在html页面中使用它.我可以用javascript做吗?

我试过了:

      <script type="text/javascript">
      var purchaseOrderNo = session.getAttribrute("pONumb");
      document.write("pONumb");
      </script> [
Run Code Online (Sandbox Code Playgroud)

这不会在HTML页面上输出任何值.

尝试:

       <script type="text/javascript">
       var purchaseOrderNo = (String) session.getAttribrute("pONumb");
           document.write("pONumb");
           </script> 
Run Code Online (Sandbox Code Playgroud)

再次在页面上没有输出.

尝试:

            <script type="text/javascript">
            String purchaseOrderNo = (String) session.getAttribrute("pONumb");
            document.write("pONumb");
            </script> 
Run Code Online (Sandbox Code Playgroud)

再次在页面上没有输出?

想不出任何别的东西可以尝试.重定向到此HTML页面的servlet创建并设置会话属性pONumb.

Ale*_*ian 40

不,你不能.JavaScript在客户端(浏览器)执行,而会话数据存储在服务器上.

但是,您可以通过多种方式公开JavaScript的会话变量:

  • 隐藏的输入字段,将变量作为其值存储,并通过DOM API读取它
  • 您可以通过DOM读取的HTML5数据属性
  • 将其存储为cookie并通过JavaScript访问它
  • 如果你有内联的话,直接在JS代码中注入它

在JSP中你会有类似的东西:

<input type="hidden" name="pONumb" value="${sessionScope.pONumb} />
Run Code Online (Sandbox Code Playgroud)

要么:

<div id="product" data-prodnumber="${sessionScope.pONumb}" />
Run Code Online (Sandbox Code Playgroud)

然后在JS中:

// you can find a more efficient way to select the input you want
var inputs = document.getElementsByTagName("input"), len = inputs.length, i, pONumb;
for (i = 0; i < len; i++) {
    if (inputs[i].name == "pONumb") {
        pONumb = inputs[i].value;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

要么:

var product = document.getElementById("product"), pONumb;
pONumb = product.getAttribute("data-prodnumber");
Run Code Online (Sandbox Code Playgroud)

内联示例是最直接的,但是如果您希望将JavaScript代码存储为外部资源(推荐方式),则不可行.

<script>
    var pONumb = ${sessionScope.pONumb};
    [...]
</script>
Run Code Online (Sandbox Code Playgroud)


小智 5

<%
String session_val = (String)session.getAttribute("sessionval"); 
System.out.println("session_val"+session_val);
%>
<html>
<head>
<script type="text/javascript">
var session_obj= '<%=session_val%>';
alert("session_obj"+session_obj);
</script>
</head>
</html>
Run Code Online (Sandbox Code Playgroud)