Servlets 如何在Servlet中生成新的http会话id而不关闭internet explorer

Servlets 如何在Servlet中生成新的http会话id而不关闭internet explorer,servlets,Servlets,在我的系统中,用户登录页面后,我希望在不关闭internet explorer的情况下生成新的http会话id 我这样写代码: public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { HttpSession session = request.getSession(tr

在我的系统中,用户登录页面后,我希望在不关闭internet explorer的情况下生成新的http会话id

我这样写代码:

public void doGet(HttpServletRequest request,
                  HttpServletResponse response)
    throws IOException, ServletException
{


    HttpSession session = request.getSession(true);
    System.out.println("session id:"+session.getId());



    session.invalidate();

    deleteCookie( request.getCookies(),request,response);

    session = request.getSession();

    System.out.println("new session id:"+session.getId());

} 

private void deleteCookie(Cookie[] cookies,HttpServletRequest req,HttpServletResponse response){
    logger.debug("Delete cookie");


    int cookieLenght = cookies.length;
    for (int i = 0; i < cookieLenght; i++) {
        Cookie cookie = cookies[i];
        cookie.setMaxAge(0);
        cookie.setPath("/");

        response.addCookie(cookie);

    }

 }
public void doGet(HttpServletRequest),
HttpServletResponse(响应)
抛出IOException、ServletException
{
HttpSession session=request.getSession(true);
System.out.println(“会话id:+session.getId());
session.invalidate();
deleteCookie(request.getCookies(),request,response);
session=request.getSession();
System.out.println(“新会话id:+session.getId());
} 
私有void deleteCookie(Cookie[]cookies,HttpServletRequest请求,HttpServletResponse响应){
调试(“删除cookie”);
int cookieLenght=cookies.length;
for(int i=0;i

即使我使会话无效,删除cookie,获得新会话,但是会话Id仍然是相同的。我不知道为什么。是否有任何解决方案可以在不关闭internet Explorer的情况下生成新的会话id?

按照您的描述重新生成会话id对我很有效。在失效后我会得到不同的会话ID(我不碰cookies)。你用的是什么服务器。我已经在玻璃鱼身上测试过了,看起来也不错。尽管只调用
session.invalidate()
就足够了。servletcontainer将担心Cookie。