我的代码,
HttpSession session = request.getSession(false);
// Details.l.info(" 1>>>>session ID is : " + session.getId());
Details.l.info("["+this.getClass()+"]"+"request from "+request.getRemoteHost());
if(session==null){
session = request.getSession(true);
Details.l.info("["+this.getClass()+"]"+"Session Created!!!!!!!!!!!!!!!!!!!#####$@@@@");
Details.l.info(" 2>>>>>session ID is : " + session.getId());
}
Details.l.info(" 3>>>>>session ID is : " + session.getId());
// System.out.println("session ID is : " + session.getId());
Details DTO = new Details(request);
String loc = DTO.findMyLocation();
session.invalidate();
在这里,我正在servlet的最开始创建一个会话,该逻辑具有以下逻辑:如果该会话已经存在,则为该特定用户提供帽子会话ID,或者如果该特定用户不存在会话,请创建一个新会话然后提供新的会话ID,在这里,新的会话是在IF条件内创建的,我已经进行了所有可能的测试(我使用了两种不同的系统,并尝试在一个系统上运行servlet),但是控件从未进入创建会话的循环。但是我每次看到servlet时都会看到一个新的会话ID !!!有人可以解释一下我的servlet的这种行为吗?我是会话和servlet的新手!!提前致谢..
JSP隐式创建一个会话,除非在page指令中将session设置为false:
<%@ page session="false" %>
这就是为什么您的servlet总是看到一个已经存在的会话。只需在浏览器地址栏中输入servlet的地址(如果您在doGet()
方法中提供了发布的代码),而不用通过JSP来调用它,那么您应该看到servlet创建了一个新会话。
编辑:请注意,规范说明了有关此会话属性的信息,可用于指定JSP不参与该会话。不能保证调用JSP时不会创建任何会话。只有这样,如果您尝试从此JSP访问会话,您将获得异常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句