会话

  • 一个网站怎么证明用户访问过

    • 服务端给客户端一个信件,客户端下次访问服务端带上信件就可以:cookie

    • 服务器登记,下次访问匹配:session

  • 保存会话的技术

    • cookie

      • 客户端技术(响应、请求)
    • session

      • 服务器技术,利用这个技术,可以保存用户的会话信息,可以把信息或数据保存在session中
  • Cookie

    • 从请求中获得cookie信息

    • 服务器响应给客户端

 1         req.setCharacterEncoding("utf-8");
2 resp.setContentType("text/html;charset=UTF-8");
3 resp.setCharacterEncoding("utf-8");
4
5 PrintWriter out = resp.getWriter();
6
7
8 Cookie[] cookies = req.getCookies();
9
10 //判断cookie是否为空
11 if (cookies != null) {
12 out.write("你上一次访问的时间是:");
13 for (int i = 0; i < cookies.length; i++) {
14 Cookie cookie = cookies[i];
15 //获取名字
16 if(cookie.getName().equals("lastLoginTime")){
17 //获取值
18 long l = Long.parseLong(cookie.getValue());
19 Date date = new Date(l);
20 out.write(date.toLocaleString());
21 }
22
23 }
24 } else {
25 out.write("这是你第一次访问本站");
26 }
27
28 Cookie cookie=new Cookie("lastLoginTime", ""+System.currentTimeMillis());
29 //给cookie设置有效期
30 cookie.setMaxAge(24*60*60);
31
32 resp.addCookie(cookie);
    • 一般会保存在本地的用户目录下的appdata

    • 一个网站的cookie是否存在上限

      • 一个cookie只能保存一个信息
      • 一个web站点可以给浏览器发送多个cookie,最多存放20个
      • cookie有大小限制:4kb
      • 浏览器上限:300个cookie
    • 删除cookie

      • 不设置有效期,关闭浏览器自动小时
      • 设置有效期为0
  • Session

    • 什么是Session

      • 服务器会给每一个用户(浏览器)创建一个Session对象

      • 一个session独占一个浏览器,浏览器不关闭,session就还在

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

    • Session和Cookie区别

      • Cookie:把用户的数据写给用户的浏览器,浏览器保存;可以保存多个
      • Session:把用户的数据写到用户独占的Session中,服务器保存;保存重要信息;由服务器创建
    • 使用场景

      • 保存一个登录用户的信息
      • 购物车信息
      • 在整个网站中经常使用到的数据
 1      req.setCharacterEncoding("utf-8");
2 resp.setCharacterEncoding("utf-8");
3 resp.setContentType("text/html;charset=utf-8");
4
5 //得到Session
6 HttpSession session = req.getSession();
7 //给Session存数据
8 session.setAttribute("name", new Person("Cra2iTeT",1));
9 //获取Session的id
10 String id = session.getId();
11 //判断是否是新创建的
12 if (session.isNew()) {
13 resp.getWriter().write("session创建成功,ID:" + id);
14 }else {
15 resp.getWriter().write("session已经存在,ID:" + id);
16 }
1         req.setCharacterEncoding("utf-8");
2 resp.setCharacterEncoding("utf-8");
3 resp.setContentType("text/html;charset=utf-8");
4
5 //得到Session
6 HttpSession session = req.getSession();
7 //给Session存数据
8 Person person = (Person) session.getAttribute("name");
9 System.out.println(person.toString());
1         HttpSession session = req.getSession();
2 session.removeAttribute("name");
3 //手动注销
4 session.invalidate();
1 <!--  设置session的默认注销时间-->
2 <session-config>
3 <!-- 十五分钟后Session自动失效-->
4 <session-timeout>15</session-timeout>
5 </session-config>

JavaWeb入门day9-随笔(session/cookie)的更多相关文章

  1. 超全面的JavaWeb笔记day11<JSP&Session&Cookie&HttpSession>

    1.JSP 2.回话跟踪技术 3.Cookie 4.HttpSession JSP入门 1 JSP概述 1.1 什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态 ...

  2. JavaWeb学习篇之----Session&&Cookie

    今天继续来看看JavaWeb的相关知识,这篇文章主要来讲一下Session和Cookie的相关知识,首先我们来看一下Cookie的相关知识: 一.Cookie 简介: Cookie是客户端技术,服务器 ...

  3. [Web][学习随笔]Session&cookie

    Session 从登录建立连接到退出就是一次会话.Session数据就会在会话期间用户存在服务器端的数据.这样,当用户在Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会 ...

  4. [转载]JavaEE学习篇之——Session&&Cookie

    原文链接: http://blog.csdn.net/jiangwei0910410003/article/details/23337043 今天继续来看看JavaWeb的相关知识,这篇文章主要来讲一 ...

  5. 第一篇 Flask基础篇之(配置文件,路由系统,模板,请求响应,session&cookie)

    Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后 ...

  6. session & cookie(li)

    Session & Cookie 一.定义 Session,用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间.Cookie,由服务器端生成,发送 ...

  7. web也是区分前端与后端的,session\cookie辨析

    <1>Ajax交互方式 Ext.Ajax.request( { //被用来向服务器发起请求默认的url url : "", //请求时发送后台的参数,既可以是Json对 ...

  8. 浅析session&cookie

    session&cookie没有出现的黑暗时代 大家都知道,HTTP协议是一种无状态的协议,本次请求下一次请求没有任何的关联,所有没有办法直接用http协议来记住用户的信息,试想一向,每一次点 ...

  9. http之Session&Cookie

    百度了一波session与Cookie,我发现这东西远比我想象中更复杂(可能是因为我不明白底层的运行原理).网上也是一堆的关于Session与Cookie区别/联系的文章,然而,我看完了还是一脸懵逼的 ...

  10. Asp.net MVC使用Model Binding解除Session, Cookie等依赖

    上篇文章"Asp.net MVC使用Filter解除Session, Cookie等依赖"介绍了如何使用Filter来解除对于Session, Cookie的依赖.其实这个也可以通 ...

随机推荐

  1. Mybaties——动态sql

    动态 SQL 是 MyBatis 的强大特性之一.如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表 ...

  2. Mybatis将mapper映射文件配置到recources下

    关于为什么要将Mybatis的mappers.xml文件配置到resources目录下的粗浅看法: (1).使文件目录更加清晰.resources文件目录下通常为配置文件,所以将Mappers.xml ...

  3. python-binasscii模块学习

    作用 binascii模块包含很多在二进制和ASCII编码的二进制表示转换的方法.通常情况不会直接使用这些功能,而是使用像UU,base64编码,或BinHex封装模块. binascii模块包含更高 ...

  4. HashMap:为什么容量总是为2的n次幂

    HashMap:为什么容量总是为2的n次幂1).HashMap是根据key的hash值决定key放到哪个桶中,通过tab[i = (n - 1) & hash]公式计算得出 这里的n是Hash ...

  5. 输入URL回车之后,究竟发生了什么

    https://blog.csdn.net/androidstarjack/article/details/107031771 在浏览器输入URL回车之后发生了什么?(超详细版)   前言 这个问题已 ...

  6. hashCode()方法的作用?

    hashCode()方法与equals()方法相似,都是来自java.lang.Object类的方法,都允许用户定义的子类重写这两个方法. 一般来说,equals这个方法是给用户调用的,如果你想根据自 ...

  7. unable to resolve class XXX

    > Task :HelloWorld_Web:compileGroovy startup failed: E:\GradleDemoManyModules\ExampleHelloWorld\H ...

  8. JdbcTemplate?

    JdbcTemplate 类提供了很多便利的方法解决诸如把数据库数据转变成基本数据类型或对象,执行写好的或可调用的数据库操作语句,提供自定义的数据错误处理.

  9. final, finally, finalize的区别?

    final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承.内部类要访问局部变量,局部变量必须定义成final类型.finally是异常处理语句结构的一部分,表示总是执行.fin ...

  10. spring-boot-learning-监听事件

    Springboot扩展了Spring的ApplicatoionContextEvent,提供了事件: ApplicationStartingEvent:框架启动事件 ApplicationEnvir ...