cookie与sessionID之间的关系实验

 

上一篇介绍了cookie,这里来看看cookie与sessionID之间有什么关系。

 

一、编写测试用例代码

新建一个servlet如下:

public class SessionServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SessionServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     System.out.println("----->进入doget方法......"); HttpSession session
=request.getSession(); System.out.println("sessionId:---->"+session.getId()); //获得请求中的cookie Cookie[] cs=request.getCookies(); if(cs!=null){//有cookie,并且又指定的cookie System.out.println("cookie长度:"+cs.length); for(Cookie co:cs){ System.out.println(co.getName()+";"+co.getValue()); } }else{ System.out.println("没有cookie"); } Cookie visitCookie=new Cookie("visitCookie","yes"); visitCookie.setMaxAge(60*60);//设置cookie失效时间 response.addCookie(visitCookie); PrintWriter out=response.getWriter(); out.print("<html><body><h1>sessionId:"+session.getId()+"</h1></body></html>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }

二、开始测试

1.保持浏览器打开情况下,多次访问http://localhost:6060/websocket-test/SessionServlet,效果如下:访问四次效果如下

可以发现在浏览器保持打开的情况下,每次请求的sessionID一样,首次请求sessionID和cookie中的JSESSIONID不一样,之后就一样了。

2.承接上一步,多次关闭浏览器,继续访问,效果如下:    (此时cookie并没有过期)

发现每次浏览器重新打开之后,sessionID就变化了。

 3.禁用浏览器cookie,访问四次如下:

禁用cookie之后,每次sessionID都不一样

 

所以,当客户端禁用cookie之后,便不好跟踪用户了。这时可使用response.encodeURL   

 servlet中response.sendRedirect(response.encodeRedirectURL("2.jsp"));

jsp中:<a href="<%=response.encodeURL("http://localhost:6060/xxx/xxxServlet")%>">111</a>

 

本案例 测试的为IE浏览器。使用的web服务器为tomcat7

你可能感兴趣的:(cookie与sessionID之间的关系实验)