6

我在 servlet 中设置会话变量,并希望在 javascript 中访问该变量。

 ps = con.prepareStatement("select * from USERDETAILS where username=? and password=?");
 ps.setString(1, username);
 session.setAttribute("userName", username);

我在javascript函数中尝试了这些。但它没有工作......

var name = ${userName};
var name = '<%= Session["userName"] %>';
4

6 回答 6

8

似乎你应该能够使用getAttribute()

var name = '<%= session.getAttribute("userName") %>';

不过,这取决于通过文件运行的 Java 来替换嵌入的,这在单独的文件<%= ... %>中可能不会出现这种情况。.js

于 2013-08-02T05:34:33.743 回答
2

尝试使用此代码访问会话:

var myName= '<%= Session["myName"]%>';
于 2013-08-02T05:33:50.913 回答
1

除非您的会话完全存储在 cookie 中,否则您无法在 JavaScript 中读取会话变量。您应该在页面生成期间将变量内容存储在 JavaScript 变量中,或者稍后使用 AJAX 获取它。

于 2013-08-02T05:33:26.097 回答
0

您是否检查了调试器(javascript 调试器)包含的名称?
您是否尝试为某些 html 分配名称,以确保正确分配数据?
您是否尝试删除引号?
您的代码也应该在主页上,以便服务器引擎通过它并将 Session("userName") 替换为实际值。

于 2013-08-02T05:35:28.567 回答
0

对于那些在下面的代码中遇到关于 <% vs.

var name = '<%= session.getAttribute("username") %>';

我遇到了同样的问题,但事实证明我将脚本放在代码中的错误位置。

所以你最好检查你把代码放在哪里。

希望这可以帮助

于 2014-12-11T21:18:02.053 回答
0

试试这个-> {sessionScope.username}

默认情况下,JSP 页面可以使用页面、请求、会话和应用程序对象。因此,您可以使用 EL 语法进行访问。

下表显示了 EL 可用的隐含对象。

       Implicit object            Description
1.     pageScope        Scoped variables from page scope
2.     requestScope     Scoped variables from request scope
3.     sessionScope     Scoped variables from session scope
4.     applicationScope Scoped variables from application scope
5.     param            Request parameters as strings
6.     paramValues      Request parameters as collections of strings
7.     header           HTTP request headers as strings
8.     headerValues     HTTP request headers as collections of strings
9.     initParam        Context-initialization parameters
10.    cookie           Cookie values
11.    pageContext      The JSP PageContext object for the current page

参考:JSP EL 中的 session 和 sessionScope 是否相同?

于 2017-11-29T18:07:22.470 回答