cookie与session的作用与区别

cookie与session的作用与区别

cookie与session的出现是为了解决HTTP服务无状态这一问题的。
cookie和session都是为了网页能够识别用户所用到的方式,不同在于存储位置不同,cookie是存储在浏览器中,而session是存储在服务器中。

cookie运行原理

访问某服务器时,服务器在响应请求时会创建一个cookie来对用户进行记录,并且将cookie通过响应传输到浏览器中,等浏览器再次访问服务器时,请求头内会包含cookie信息。

cookie的失效时期

通过这种方式虽然可以有效的解决HTTP无状态的问题,但是这种方式本身也不安全,所以某些浏览器cookie的默认生命周期结束于关闭浏览器的时候,但是在服务器端可以进行设置。

			//1.申请cookie
            Cookie cookie = new Cookie("u",uname);
            Cookie cookie1 = new Cookie("p",pwd);

            //接收选择框的值
            String ch = req.getParameter("ch");

            //2.指定cookie规则
                //指定使用范围
                cookie.setPath("/Servlet05");//只可以在当前项目中使用      ‘/’可以在整个服务器使用
                cookie1.setPath("/Servlet05");

                //设定cookie有效时间
                if ("yes".equals(ch)){
    
    
                    // 用秒为单位
                    cookie.setMaxAge(60*60*24*10);
                    cookie1.setMaxAge(60*60*24*10);
                }else {
    
    
                    cookie.setMaxAge(0);
                    cookie1.setMaxAge(0);
                }
            //3.把cookie交给浏览器
            resp.addCookie(cookie);
            resp.addCookie(cookie1);
            //重定向
            resp.sendRedirect("success.jsp");

session运行原理

访问某服务器时,第一次请求后服务器会根据用户选择创建session来保存用户信息,响应请求时会在请求头内部返回JSESSIONID字段来记录session的id,下次访问时通过请求头内的JSESSIONID,服务器可以直接获取到用户信息。(JSESSSIONID是存储在cookie中的)

session失效时期

session可以手动注销,也可以设置最大失效时间。

		//1.注销session对象
        req.getSession().invalidate();
	超过session 活动的有效时间
    Session 最大活动时间是30分钟,我们可以更改这个默认的时间
    A、更改TomCat中web.xml中的配置
       影响的是:所有项目中的所有session
     <session-config>
        <session-timeout>30</session-timeout>
     </session-config>

    B、更改自己项目的web.xml
       影响的是:当前项目的所有session
    <session-config>
     <session-timeout>40</session-timeout>
   </session-config>
   
   C、更改当前项目的当前session 失效的时间
     session.setMaxInactiveInterval(10);

注:当关闭浏览器后JSESSIONID改变了,并不是session失效了,而是cookie失效了,重新获得的JSESSIONID。

cookie与session的区别

  1. 存储位置不同,cookie存储在浏览器内,session存储在服务器内。
  2. 安全性不同,cookie安全性低。
  3. 存储数据大小不同,单个cookie存储数据不超过3K;而session存储在服务器中可以随意存储数据,但又因此,当session存储数据过多时,服务器会选择性清理。
  4. 存储数据类型不同,cookie存储的一般是字符串类型数据,而session存储的是对象信息。

Guess you like

Origin blog.csdn.net/qq_44157349/article/details/115437613