cookie和session的学习

一.cookie

1.什么是cookie

当用户访问服务器时,服务器会给浏览器发送一些信息 这些信息保存在cookie中。当浏览器再次访问服务器时,会在请求头中将cookie传给服务器,方便服务器对浏览器做出正确的响应

cookie就是这张小纸条

2.cookie案例入门

服务器添加cookie给浏览器

public class cookie extends HttpServlet {
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        Cookie cookie = new Cookie("zhangsan","23");
        response.addCookie(cookie);
    }

    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doGet(request, response);
    }
}

服务器获取浏览器请求携带的cookie

Cookie[] cookies = request.getCookies();
        for(Cookie c:cookies){
            String name = c.getName();
            String value = c.getValue();
            System.out.println(name+": "+value);
        }

①浏览器请求时会接受到服务器传递的cookie。

②浏览器再次请求时会将cookie传递给服务器

二.session

1.什么是Session

Session一般译为会话,是解决Http协议的无状态问题的方案,可以将一次会话中的数据存储在服务器端的内存中,保证在下一次的会话中可以使用。

在客户端浏览器第一次向服务器端发送请求时,服务器端会为这个客户端创建独有的Session,并具有唯一的Session ID,存储在服务器端的内存中。在客户端第二次访问服务器端时,会携带Session ID在请求中,服务器端会根据Session ID查找对应的Session信息,进行进一步地操作。

在JavaEE中提供了javax.servlet.http.HttpSession接口,通过该接口可以将共享的数据内容存储在HttpSession对象中,从而解决Http协议的无状态问题。

2.getsession的执行

第一次执行getSession方法,getSession会去请求头中寻找Cookie信息,Cookie名字:JSESSIONID。第一次执行没有这个cookie信息,所以直接创建一个新的Session对象,并将Session的ID,保存到Cookie中,发给浏览器。

第N次执行getSession方法,getSession会去请求头中寻找Cookie信息,如果Cookie中没找到,就创建一个新的。

如果Cookie中有Jsessionid信息,寻找内存中对应的Session对象,如果找不到,重新创建一个新的,并且写新的JSESSIONID进入cookie;

如果Cookie中Jsessionid信息可以对应上Session对象就直接将这个Session对象返回并使用

getSession()    ==    getSession(true)

getSession(false);   --à唯一区别是,如果找不到session对象,直接返回null

猜你喜欢

转载自www.cnblogs.com/xuww-blog/p/9389306.html
今日推荐