Java会话-会话何时真正创建?

Vasanth Nag KV

我的代码,

        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的新手!!提前致谢..

JB Nizet

JSP隐式创建一个会话,除非在page指令中将session设置为false:

<%@ page session="false" %>

这就是为什么您的servlet总是看到一个已经存在的会话。只需在浏览器地址栏中输入servlet的地址(如果您在doGet()方法中提供了发布的代码),而不用通过JSP来调用它,那么您应该看到servlet创建了一个新会话。

编辑:请注意,规范说明了有关此会话属性的信息,可用于指定JSP不参与该会话。不能保证调用JSP时不会创建任何会话。只有这样,如果您尝试从此JSP访问会话,您将获得异常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章