JavaWeb--Cookie和Session

Javaweb

Cookie、Session

1、会话

有状态会话:一个同学来过教室,下次再来教室,我们会知道他曾经来过。

会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源的过程。

一个网站怎么证明你来过

客户端 服务端

1、服务端给客户端一个信件,客户端下一次访问带上信件就可以了。cookie

2、服务器登记你来过,下次你来的时候我来匹配你。 session

2、保存会话的两种技术

session

客户端技术(响应,请求)

cookie

服务器技术,利用这个技术,可以把信息或者数据放在session中。

常见:网站登陆一次之后,第二次就不用登陆了。

3、Cookie

1、由服务器创建一个cookie,并设置数据和属性,再由服务器发送给客户端,客户端在本地保存该cookie

//服务器给客户端设置cookie
Cookie time_cookie = new Cookie("lastTime",System.currentTimeMillis()+"");
time_cookie.setMaxAge(24*60*60);//设置cookie的存活时间,0代表删除cookie,负数代表不会保存该cookie,正数以秒为单位
resp.addCookie(time_cookie);

2、下次访问时带上该cookie,服务器就能知道你先前来过,并可以通过cookie获取数据

//服务器获取客户端的cookie
Cookie[] cookies = req.getCookies();
PrintWriter writer = resp.getWriter();
for (Cookie cookie : cookies) {
if (cookie.getName().equals("lastTime")) {
writer.print("上次登陆时间为:  ");
writer.print(new SimpleDateFormat().format(new Date(Long.valueOf(cookie.getValue()))));

4、Session(重点)

什么是session:

服务器会给每一个用户创建一个session对象

一个session独占一个浏览器,只要浏览器没有被关闭,这个session就存在

用户登录之后整个网站都可以访问。

使用session

		//获取session
        HttpSession session = req.getSession();
        //获取sessionId
        String id = session.getId();
        //给session设置数据
        session.setAttribute("name",new Person("庞杰",22));
		//判断session是不是新创建的
        if(session.isNew()){
            resp.getWriter().write("session创建完成,sessionId为:"+id);
        }else{
            resp.getWriter().write("session已经存在,sessionId为:"+id);
        }

获取数据

  //获取数据
        Object name = session.getAttribute("name");
        String s = name.toString();
        resp.getWriter().print(s);

注销session

   HttpSession session = req.getSession();
        //手动注销
        session.invalidate();

**会话自动过期 ** 配置web.xml文件

    <session-config>
        <session-timeout>60</session-timeout>
    </session-config>

5、cookie和session的相同点和不同点

1、相同点:cookie和session都是为了解决http协议无状态的特征。

2、区别:

  1. cookie数据是存放在客户端本地的,session数据是存放在服务器的,但是服务端的session的实现对客户端的cookie有依赖关系的;
  2. cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session;
  3. session会在一段时间内存放在服务器,如果session过多,会导致服务器压力过大,性能降低。如果考虑服务器性能方面应该使用cookie
  4. cookie的大小是有限制的
  5. 一个用户在一个站点上可以有多个cookie,但是只有一个session
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值