session cookie

保存会话数据的两种技术。

HTTP是一种无状态协议

为了保持状态,引入了Cookie技术。

 

Cookie
Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
Session
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。

服务器会向客户端发送name为JSESSIONID的cookie,session会自动创建cookie,也可以自己手动创建cookie来设置。

Session和Cookie的主要区别在于:
Cookie是把用户的数据写给用户的浏览器。
Session技术把用户的数据写到用户独占的session中。
Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。
不是访问一个页面就创建session,而是遇到语句request..getSession();就创建了一个session。

应用:

登录的时候,把用户信息user放到session中

request.getSession().setAttribute("user", user);

 然后,从JSP中取出来:

<%
    User user = (User) session.getAttribute("user");
    if (user != null) {
        out.write(user.getPhone());
    } else {
        out.write("no user");

    }
%>

判断用户是否有登录(JSP页面中):

<%
    //用户失效,跳转登录
    if(request.getSession().getAttribute("user")==null){
        response.sendRedirect("login.jsp");
        return;
    }
%>

退出:

request.getSession().invalidate();

参考:理解Cookie和Session机制    http://www.nczonline.net/blog/2009/05/05/http-cookies-explained 

原文地址:https://www.cnblogs.com/luoa/p/10617177.html