10 Cookie/Session

时间:2023-12-11 11:34:50
JSP/EL入门
     * SUN提供了开发WEB资源的技术     Servlet/JSP
         
     * response.getWriter().write();
          .write("<form action='' method='post' >");
          .write("<input type='text' name='username'>");
         
     * JSP(java server pages)    
    
     * JSP可以编写的代码
          * HTML+java代码+JSP自身一些
         
     * JSP的运行原理
          * JSP -- 翻译成servlet -- 编译 -- 访问

* 创建简单JSP文件
          * 打开方式
              
          * 设置编码集
               搜索jsp              
              
     * JSP脚本元素
          * 编写java代码
         
          * <%!  %>     :定义类、定义变量、定义方法(不经常使用)          成员变量
          * <%=  %>     :输出内容                             
          * <%   %>     :定义变量、编写语句          (局部变量)    
         
     * EL表达式
          * 获取域对象中的值      
                
* 两种会话技术
     * 会话:从打开浏览器开始,点击链接(点击多次),访问服务器多个web资源,关闭浏览器,称为一次会话。
    
     * 问题:
          例如:用户点击超链接通过一个servlet购买了一个商品,程序应该保存用户购买的商品,商品保存会话对象中。
         
          * requset和ServletContext保存商品信息行不行?

* cookie
          * 保存用户名和密码
          * 记录用户上次的访问
               * 需求分析:
                    * 第一次访问,没有时间,输出欢迎,记录当前的时间,回写到浏览器。
              
                    * 第二次访问,有历史记录(时间),输出到页面上,记录当前的时间,回写到浏览器。
                   
                   
          * 1.获取所有的cookie
          *      2.通过指定的名称查找cookie(名称自己指定)
          *           * 如果cookie==null,第一次访问
          *                * 输出欢迎,记录当前的时间,回写到cookie中。
          *           * 不是第一次访问
          *                * 获取cookie中的时间,把时间显示到页面上
          *                * 记录当前时间,回写到cookie中         
         
         
     * Cookie的API
          * 构造方法
               * Cookie(String name, String value)
                    name:代表cookie的名称
              
          * cookie提供的方法    
               * String getName()      获取cookie的名称    
               * String getValue() 获取值
              
               * setMaxAge(int expiry)                :设置保存的有效时间
                    * int:秒     long:毫秒
                   
                    * setMaxAge(0);前提的条件:setPath路径相同
                   
               * setPath(String uri)                     :设置有效路径
                    * 默认路径     /day10                         http://localhost/day10/cookie1
                    * 默认路径/day10/servlet/               http://localhost/day10/servlet/cookie1
                   
               * setDomain(String pattern)           :设置有效域名
              
          * 会话级别cookie    
               * 默认(关闭浏览器就消失。)
              
          * 持久的cookie
               * setMaxAge(int time)     磁盘上。
               * 删除掉持久的cookie,设置setMaxAge(0),设置path必须一致。
              
    
          * 记录用户的浏览记录    
              
               * 需求分析
                    * 商品列表页面(productList.jsp),点击商品信息,把这些信息记录下来。
                   
                         * 点击商品,请求servlet,记录商品。回写到浏览器。
                         * 由点击商品,如果包含,不处理。如果不包含,商品放到cookie,回写到浏览器。

* 显示在列表页面上。
                   
               /**
               *      1.接收参数
               *      2.获取所有的cookie数组
               *      3.判断是否是第一次访问
               *           * 第一次,记录商品的信息,回写到浏览器。
               *
               *           * 不是第一次,获取cookie的值          (1,2,3)
               *                * 判断是否包含当前的商品的信息,如果不包含,拼接字符串,回写。
               *               
               */

* session
          * 原理:
               * 基于cookie,第一次访问的时候,在服务器创建session的区域,分配唯一的标识(id)。通过cookie技术,就可以找到区域。
              
    
          * 简单购物车
               * 前提条件:购物车(对象)Map<商品名称,商品数量>
              
               /**
               *      1.接收请求参数
               *      2.从session中取购物车(map)
               *      3.判断是否是第一次访问
               *           * 第一次,创建map对象,把商品的名称,和商品数量(1)存入map集合中。
               *           * 购物车存session中
               *          
               *           * 不是第一次
               *                * 判断购物车是否包含刚才的商品
               *                     * 如果包含,取出数量,+1,存回去
               *                     * 如果不包含,把商品名称和数量出入map集合中    
               *          
               *                * 购物车存session中
               */
              
              
          * session的追踪(了解)
               * 手动的拼接jsessionid=B067A6EC847E918B94156458646F2FA4
              
               * response. encodeRedirectURL(java.lang.String?url)
                    用于对sendRedirect方法后的url地址进行重写。
                    response. encodeURL(java.lang.String?url)
                    用于对表单action和超链接的url地址进行重写
                   
                   
          * session的创建和失效
               * session的创建:第一次访问的时候,创建session
               * 销毁:
                    * invalidate() 销毁
                    * 非正常原因关闭服务器。
                   
                   
                    * session失效时间,默认是30分钟。
                         <session-config>
                              <session-timeout>30</session-timeout>
                         </session-config>
                             
         
     * 三个域对象
          * ServletContext     :整个web应用
          * session               :代表一次会话
          * request               :一次请求
         
               setAttribute(xx,yy);
               getAttribute(xx);