如何在JSP页面中使用session来获取信息?

时间:2013-07-02 07:21:33

标签: java jsp session

我有一个用于编辑某些用户信息的JSP页面。当用户登录网站时,我会将信息保存在会话中,然后在我的编辑页面中尝试以下操作:

<%! String username=session.getAttribute("username"); %>
<form action="editinfo" method="post">
    <table>
        <tr>
            <td>Username: </td><td> <input type="text" value="<%=username %>" /> </td>
        </tr>
    </table>
</form>

但它给出了错误,说无法解析会话。我该怎么办呢?

7 个答案:

答案 0 :(得分:90)

JSP 隐式对象,如sessionrequest等,在JSP声明<%! %>标记内不可用。

您可以直接在表达式中将其用作

<td>Username: </td>
<td><input type="text" value="<%= session.getAttribute("username") %>" /></td>

另一方面,在JSP中使用scriptlet已经很久了。强烈建议使用EL(表达式语言)和JSTL标记。例如,在这里你可以使用EL作为

<td>Username: </td>
<td><input type="text" value="${username}" /></td>

最好的部分是范围解析是自动完成的。所以,用户名可以来自页面,或请求会话应用程序范围内的顺序。如果对于特定实例,由于名称冲突需要覆盖此实例,则可以将范围明确指定为

<td><input type="text" value="${requestScope.username}" /></td> or,
<td><input type="text" value="${sessionScope.username}" /></td> or,
<td><input type="text" value="${applicationScope.username}" /></td>

答案 1 :(得分:9)

使用

<% String username = (String)request.getSession().getAttribute(...); %>

请注意,您对<%! ... %>的使用已转换为类级别,但请求仅在已翻译的servlet的service()方法中可用。

See how JSP code is translated to a servlet.

答案 2 :(得分:8)

您收到编译错误的原因是,您尝试访问声明块(<%! %>)中不可用的会话。 jsp的所有隐式对象仅在服务方法中可用。声明性代码的代码不在服务方法之内。

我建议你使用EL。这是一种简化的方法。

${sessionScope.username}会为您提供所需的输出。

答案 3 :(得分:0)

假设您要使用,在其他任何网页中说出ID,则可以通过以下代码段进行操作:

String id=(String)session.getAttribute("uid");

此处uid是您之前存储ID的属性。您可以通过以下方式进行设置:

session.setAttribute("uid",id);

答案 4 :(得分:-1)

<%! String username=(String)session.getAttribute("username"); %>
form action="editinfo" method="post">

    <table>
        <tr>
            <td>Username: </td><td> <input type="text" value="<%=username %>" /> </td>
        </tr>

    </table>

添加<%! String username=(String)session.getAttribute("username"); %>

答案 5 :(得分:-1)

你可以直接使用(String)session.getAttribute(“username”);在scriptlet标记内,即&lt; %%&gt;。

答案 6 :(得分:-1)

&#13;
&#13;
form action="editinfo" method="post">
<table>
  <tr>
    <td>Username:</td>
    <td>
      <input type="text" value="<%if( request.getSession().getAttribute(" parameter_whatever_you_passed ") != null
{
request.getSession().getAttribute("parameter_whatever_you_passed ").toString();
}
 %>" />
    </td>
  </tr>
</table>
</form>
&#13;
&#13;
&#13;