zoukankan      html  css  js  c++  java
  • 会话技术

    会话技术

    1. 会话,用户打开浏览器,点了一些超链接,关闭浏览器的过程

    2. 会话过程中会产生一些数据,这些数据是每个用户独享的,需要找个地方存起来

    3. 会话技术就是解决上述问题的,Cookie是客户端技术,Session是服务器端技术

     

    Cookie对象

    1. Cookie对象的创建

    Cookie cookie = new Cookie(key, value);

    2. 发送Cookie

    Response.addCookie(cookie);

    3. 获取指定的Cookie

    // 获得用户发送的所有Cookie

    Cookie[] cookies = request.getCookies(); // 如果没发Cookie过来,为null

    // 遍历 找到lastAccessTime

    String lastAccessTime = null;

    for(int i=0; cookies!=null&&i<cookies.length; i++) {

    String name = cookies[i].getName(); // 一个Cookiename

    if("lastAccessTime".equals(name)) {

    // 找到了, 几下value

    lastAccessTime = cookies[i].getValue();

    }

    }

    4. 设置Cookie的有效时间

    cookie默认情况下在当前浏览器进程有效,如果想让cookie长期驻留客户机的硬盘,就需要指定时间

    cookie.setMaxAge(time)  time以秒为单位

    setMaxAge(0)  通知浏览器删除该Cookie

    5. 显示用户最近的浏览记录

    两个页面 

    显示所有的商品(从数据库找出商品显示),显示最近的记录(读取客户发送的Cookie中存的id,找出书显示)

    CookieDemo2

    显示商品的详细信息,并向客户端发送Cookie,难点如果产生新的Cookie

    将客户端带过来的Cookie分割后存入集合,根据不同的情况将新的id加进去,迭代集合用分隔符串起来

    CookieDemo3

     

     

    Session对象

    1. session的原理

    request对象有个方法是getSession()

    首先看浏览器是否发送了Cookie (JSESSIONID) ,如果发了,拿着id去内存中找对应的session对象返回

    如果没有发Cookie或者没找到对应的Session对象,创建一个新的Session对象

    getSession( boolean create)

    create true的时候,如果内存有session就返回,没有就创建新的

    createfalse的时候,意味着只查找不创建,有就返回,没有不创建,返回null

     

     

    2. session的运行要依靠cookie来发送JSESSIONID

    如果想让多个浏览器共享一个session,我们就需要人工发送Cookie,并设置Cookie的有效时间

     

    3.如果浏览器禁用Cookie,那么Session也玩不起来了

     

    浏览器禁用Cookie

    要想让session好用,就需要在页面跳转时发送sessionid

    有一个技术url重写

    重写后的地址会在原有的url地址的基础上加上JSESSIONID

    如果是超链接或表单提交的地址,重写方式如下:

    String newUrl = response.encodeURL(url);

    如果是请求重定向的地址,方式如下:

    String newUrl = response.encodeRedirectURL(url);

     

    3. session的应用 (重点)

    简单购物车的实现  ListServlet BuyServlet ListCartServlet

    用户登录 Login.jsp LoginServlet indes.jsp LogoutServlet

    防止表单重复提交

    可以用js来做,但是只能增加用户的体验,不能完全防止坏人

    session做防表单重复提交

    FormServlet   HandleFormServlet  TokenProcessor

  • 相关阅读:
    Spark API编程动手实战-01-以本地模式进行Spark API实战map、filter和collect
    spark内核揭秘-14-Spark性能优化的10大问题及其解决方案
    spark内核揭秘-13-Worker中Executor启动过程源码分析
    spark内核揭秘-12-AppClient注册Masters
    spark内核揭秘-11-Driver中AppClient源码分析
    spark内核揭秘-10-RDD源码分析
    spark内核揭秘-09-RDD的count操作 触发Job全生命周期-02
    spark内核揭秘-09-RDD的count操作 触发Job全生命周期-01
    spark内核揭秘-08-spark的Web监控页面
    Go每日一题(3)
  • 原文地址:https://www.cnblogs.com/qq809306794/p/3183277.html
Copyright © 2011-2022 走看看