我是这个论坛的新手。我正在设计一个 JSP-Servlet 应用程序并使用会话变量来存储对象。问题是,当我第二次访问会话变量时,它返回 null。这是我的应用程序的流程-
我有一个带有多个链接按钮的 jsp 页面。当用户单击任何按钮时,将使用相应的参数调用一个 servlet。例如,如果单击 button1,则传递 1,如果单击 button2,则传递 2,依此类推。
Servlet 从之前已经创建的会话变量中获取一个数组列表,并根据请求的参数从数组列表中获取数据,处理它并将响应发送到另一个 jsp 说 jsp2。
jsp2 也有类似的链接按钮,应该执行相同的任务。当从 jsp2 调用同一个 Servlet 时,或者即使页面被刷新,这次 session 变量为 null。
在 session-config 标记下的 web.xml 文件中,我将超时设置为 -1,以便会话永不过期。
<session-config>
<session-timeout>-1</session-timeout>
</session-config>
在 servlet 中,我将会话变量作为 -
HttpSession session = request.getSession(false);
ArrayList<String> list = new ArrayList<String>();
list = (ArrayList<String>)session.getAttribute("mylist");
当第二次调用 servlet 时,或者即使页面被刷新,列表也为空。我放了几行来检查会话是否有效 - 它第二次打印。
if(!request.isRequestedSessionIdValid()) {
System.out.println("Session is Expired !!");
}
和session.getAttribute("mylist")
回报NullPointerException
。
我确信我没有session.invalidate()
偶然使用任何地方来结束会话。我不明白出了什么问题..有人可以解释一下吗?
提前谢谢了。