访问servlet在jsp中声明了HttpSession

时间:2014-03-03 10:18:10

标签: jsp servlets httpsession

如果登录servlet中的用户名,密码和位置正确,我正在创建一个HttpSession并进入jsp页面。下面是servlet中的代码:

    HttpSession sessionsa = request.getSession(true);
    sessionsa.setAttribute("user",userName); //userName is a String variable
    sessionsa.setAttribute("location",location); //location in value place is a String variable

现在在jsp页面上,我无法访问这些属性。关于jsp的代码:

    sessionsa = request.getSession();
    String user = (String) sessionsa.getAttribute("user");
    String location = (String) sessionsa.getAttribute("location");

它声明在SimplifiedJSPServlet类中找不到符号变量sessionsa。请帮忙。自2天以来一直在谷歌搜索。

3 个答案:

答案 0 :(得分:4)

这样做,首先在jsp中将会话创建设为false。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" session="false"%>

然后开始会议,

<%
HttpSession sessionsa = request.getSession(false);
String user = (String) sessionsa.getAttribute("user");
String location = (String) sessionsa.getAttribute("location");
%>

通过这个,您将获得会话中的用户和位置。希望这对您有帮助。

答案 1 :(得分:1)

您可以直接使用session变量(与请求关联的HttpSession对象),它在JSP中可用作Implicit Objects。您可以使用会话对象而无需任何初始化或getSession()。

如果您未在JSP

中包含以下行,则JSP中可以使用

session对象

<%@ page session="false" %>  

它将禁用包含它的JSP文件中的会话跟踪。如果JSP中包含此行,则无法直接在JSP中使用session对象。

来自Rererence doc:

JSP Implicit Objects are the Java objects that the JSP Container makes available 
to developers in each page and developer can call them directly without being   
explicitly declared.

在您的情况下,您可以使用下面的代码。

String user = (String) session.getAttribute("user");
String location = (String) session.getAttribute("location");  

答案 2 :(得分:0)

您还可以尝试使用会话变量直接获取值,该变量在每个jsp的范围内预先定义:

(String)session.getAttribute("name");