[Javaweb 03] Cookie&Session

Cookie & Session


中文乱码解决
中文字符串快速编码和解码

String s = URLEncoder.encode("中文字符串", "utf-8");
String s_decode = URLDecoder.decode(s, "utf-8");

1. 会话

从浏览器打开到关闭的过程,称为会话

有状态会话:知道访问过这个网站,

2. 保存会话的两种技术

cookie:客户端技术(通过响应给客户端,通过请求个服务端)

session:服务器技术(可以保存用户的会话信息, 可以把信息或者数据放在Session中)

常见例子: 网站登录之后,下次不用再登录。

:Cookie和Session都类似于一个字典,cookie的键值对都是String, Session的键值对是String :Object

:对两者的操作都是通过req对象获取的,但实际session的创建是服务器创建的

 Cookie[] cookies = req.getCookies();//服务端获得cookie
//for.cookies中获取到每一个cookie后
String name = cookie.getName();//获取cookie的键
String lastTime = cookie.getValue();//获取cookie的值

Cookie cookie = new Cookie("lastLoginTime", System.currentTimeMillis()+"");//设置cookie
cookie.setMaxAge(24*60*60)//设置cookie的过期时间,单位为秒
resp.addCookie(cookie);//把新设置的cookie给客户端

cookie的限制:

  1. 一个cookie只能保存一个信息;
  2. 一个web站点可以给浏览器发送多个cookie, 最多存放20个;
  3. cookie大小限制为4kb;
  4. 300个cookie是浏览器的上限

删除cookie:

  1. 不设置有效期,关闭浏览器,自动失效;

  2. 设置有效期为0s,

    //创建一个cookie, 键和要删除的cookie一样,设置有效期为0, resp.addCookie()返回去
    

4. Session

1. session:

  • 服务器给每一个浏览器(用户)创建一个session对象;
  • 一个session独占一个浏览器,只要浏览器没有关闭,session就存在
  • 用户登录后,整个网站都可以访问,eg:保存的用户信息,保存的购物车

2. Session和cookie的区别:

  • cookie把用户的数据写给浏览器,浏览器保存(浏览器可以保存多个)
  • session把用户的数据写到用户独占的session中,服务器中保存(保存重要信息,减少服务器资源浪费)
  • Session对象由服务器创建,只要打开浏览器就存在。

3. Session使用:

session.setAttribute(String key, Object value);
session.getAttribute(String key);
session.removeAtribute(String key);
session.getID();

4. session创建中实际做了什么:

  1. 服务器new了一个key为JSESSIONID的cookie
  2. 服务器响应回去:resp.addCookie(cookie),

5. 设置session的过期:

  1. 手动注销:

    HttpSession session = req.getSession();
    session.invalidate();//注销session
    
  2. 会话时长过期,自动注销:

    <!--在web.xml中设置-->
    <session-config>
        <!--时间单位是分钟-->
    	<session-timeout>15</session-timeout>
    </session-config>
    

6. Session使用常见:

​ 保存登录用户的信息;购物车信息,整个网站中常用到的信息

5. Context, Session, Cookie作用域

  1. Cookie:

    请求后,服务器发送一个cookie给浏览器,浏览器之后请求时携带该cookie

  2. Session:

    浏览器访问服务器,服务器登记一个Session,返回给用户一个sessionID(其实就是一个Cookie),但服务器中注册的Session可以存放用户的其他东西。

  3. Context:

    如果要统计访问的人数,或者两个用户需要由共享的资源,则放置在Servlet的更上一层:ServletContext中,也叫ApplicationContext。

posted @ 2021-11-27 21:13  Roy2048  阅读(32)  评论(0)    收藏  举报