Session内容丢失。请高手进来帮忙解决。
问题发生场合:Servlet
CheckUser.java和Initializa.java两个文件都是Servlet
首先在CheckUser.java中代码大致如下:
protected void doPost(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(true);
session.setAttribute("USERNM", resultNode.getAttributes().get("USR_USRNAM"));
session.setAttribute("USERCD", resultNode.getAttributes().get("USR_USRCOD"));
session.setAttribute("COMPANYNM",companyNM);
session.setAttribute("COMPANYCD",companyCD);
session.setAttribute("LEVELCD", resultNode.getAttributes().get("USR_LEVELCOD"));
session.setAttribute("LEVEL", resultNode.getAttributes().get("USR_LEVEL"));
session.setAttribute("USR_USRMIL", resultNode.getAttributes().get("USR_USRMIL"));
session.setAttribute("USR_STATE", result);
}
在Initializa.java中的内容如下:
protected void doPost(
HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(true);
initNode.getAttributes().put("USERNM", session.getAttribute("USERNM"));
initNode.getAttributes().put("USERCD", session.getAttribute("USERCD"));
initNode.getAttributes().put("COMPANYNM", session.getAttribute("COMPANYNM"));
initNode.getAttributes().put("COMPANYCD", session.getAttribute("COMPANYCD"));
......
session.setAttribute("USR_STATE", usrState);
session.setAttribute("LEVELCD", levelCD);
session.setAttribute("LEVEL", levelDeal(levelCD));
}
CheckUser.java用来校验登陆用户的合法性,如果用户合法则进入到下一个处理,
在下一个处理中会调用Initializa.java。这个时候没有任何问题,Session的内
容都能正确的拿到。
CheckUser的View部分我们叫它Login。
Initialize的View部分我们叫它Menu。
这个系统的结构是Applet+Servlet+DB。
Menu是一个总控页面,所有的功能模块都必须经由Menu才能进入,问题产生自经由
功能模块返回Menu页面的时候,Menu页面产生了NullPointException。
经过测试,发现Session中的数据为Null。
但是,并不是每次都出现NullPointException,现在已知的出现该问题的情况是
进入任意一个功能模块后,完成相关操作,但不马上迁移到Menu页面,而是进行其他的
与该系统无关的操作,比如:进行Word字处理,Excel处理等其他操作后。
再回到该功能模块,点击按钮返回Menu时,可能会出现NullPointException。
给我的感觉就是在运行多个大量占用内存的软件后,就有可能产生NullPointException。
而这个时候的Session的内容都是Null。
希望大家能集思广益,帮我解决这个问题,这里先谢谢了。