A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

同学们,今天我们学习了一种会话技术Cookie,是客户端的会话技术。明天我们还将学习服务器端的会话技术Session。

今日需要掌握的有:
  • 熟练掌握Cookie几个常用API
  • 学会在JSP中嵌入Java代码
  • 掌握显示用户的上次访问时间案例
  • 掌握显示商品浏览记录案例

请同学们按照如上要求,总结今日所学。



59 个回复

正序浏览
常小天
今天学习的是cookie。Cookie是一种会话技术,它的主要功能是在浏览器和服务器之间传递数据。它的原理是通过在请求头里添加键值对形式的cookie信息来保存和传递数据的。Cookie的使用主要依赖于三个方法。一、HttpServletResponse中的void addCookie(Cookie cookie),用来完成服务器在响应头中添加cookie信息并传递给浏览器并添加进请求头的功能。这一过程就将浏览器在服务器的网页上的一些操作信息保存并传给了浏览器。二、HttpServletRequest中的Cookie[] getCookies(),用来完成服务器从浏览器传入的请求头中获得cookie信息的功能,这一方法获得的是一个cookie数组。三、cookie的构造方法Cookie(String name,String value),用来创建一条新的cookie。因为会话是以打开浏览器访问网页开始,以关闭浏览器结束的,所以作为一种会话技术的cookie,它的生命周期默认就是一次会话的过程,当然可以通过设置有效时间来延长其生命周期,这也意味着cookie可以在多次请求响应之间传递数据(优于request)。同时因为其是将信息保存在请求头中,所以在安全性方面优于servletContext。正是cookie的这种特性,使得我们可以通过cookie来实现很多实用性的功能,其中一个就是记录用户的上次登录访问时间。这里在提一下jsp中嵌入java代码的三种方式和区别。<%!  %>中嵌入的是类中的成员部分。但Servlet是单线程,不安全,所以我们不在类中定义成员属性。<%  %>中写的是类的service方法内部的内容。可直接写代码块。<%=  %>        中写的是service方法内部的out.print()的括号内的东西,它的结果是直接打出这些内容。今天的第二个案例是记录用户的商品浏览记录,这个案例更加复杂,但在技术上并没有使用更多的内容。使用今天上半天学习的cookie知识就可以完全搞定。难的是它复杂的步骤。这里简的说一下:
接收商品id。
接收从客户端带过来的所有Cookie,从Cookie的数组中查找指定名称的Cookie。
判断是否是第一次浏览商品(cookie是否为空):
第一次浏览商品(cookie为空),直接将商品的ID存入到Cookie,将Cookie回写到浏览器。
不是第一次浏览商品 (cookie不为空),判断当前的商品是否已经在浏览记录(cookie中是否包含传入的商品id):
已经存在(包含传入的商品id),移除当前元素,将当前元素添加到最开始。
没在浏览记录中(不包含传入的商品id):
判断是否已经超过了最大长度,如果超过,删除最后一个,将当前元素添加到最前面。没有超过,直接将该元素添加到最前位置。
将转换的id的值存入到Cookie,回写浏览器.
最后说一下清除浏览记录的思路就是创建一个新的持久级别的cookie,将有效时间设为0,再添加进请求头覆盖之前的cookie。此处注意有效路径必须一致。

点评

发表于 2019-7-18 00:02
回复 使用道具 举报 1 0
王刘锁
今天通过两个案例来学习Cookie会话(打开浏览器到关闭浏览器的过程)技术,Cookie是一种类似前两天学习的request和ServletContext域不过Cookie更强大,更符合我们的需要,这两种域中的数据会被共享,而当我们去网上购物一类的需要时就不能把我们的信息和商品共享出来,而今天学的Cookie会话技术可以存储我们私有化的数据到浏览器,那它的存储原理是键值对的方式,一个名字对应一个数据,我们在使用的时候要记住它的一些方法:
第一个案例:首先是用请求对象获取浏览器的所有cookie:request.getCookies()返回一个Cookie数组,如果数组不为空就遍历数组然后是从数组中获取指定名字的cookie,再判断这个cookie是不是空,是空就说明是第一次访问,记录下当前时间存入cookie,如果不是空就不是第一次访问,取出该cookie存储的上次访问时间打印,再把当前时间存入cookie,创建一个Cookie对象,Cookie cookie=new Cookie("name","value");然后是记住一些设置cookie的方法,cookie.getName()获取key,getValue()获取数据,setDomain("domain")设置有效的域名,setPath("path")设置有效的路径,setMaxAge(int maxAge)设置存活时间,通过这些设置方法可以设置持久级别的cookie,
最后再用响应对象存入cookie response.addCookie(cookie);
第二个案例:jsp是动态页面开发技术,在jsp文件中可以写html也可以写Java代码,那我们要记住写Java代码的格式:<% %>被翻译成类的成员(变量,方法,类)尽量少用,<%! %>翻译成service方法的内部(成员,类),<%= %>翻译成service方法内部的out.print()打印,那第二个案例主要内容就是当我们点击某个商品图片会把商品的id提交到我们后台的Servlet中然后获取指定name的cookie后,判断是不是第一次浏览该商品也就是获取指定的cookie是否为null为null就是第一次那我们就直接新建一个Cookie存(addCookie())起来,如果不为null就不是第一次浏览,我们获取到cookie的数据id用一个符号给切开,再把切割后得到的数组封装成linkedList集合,那就再判断是否该商品id已经存在浏览记录中如果存在就删除原来的id再把该商品id添加到第一位,如果我们的浏览记录已经满了就把最后一个id删除再把该商品id添加到首位,最后呢就是我们要把集合再转成字符串,用StringBuffer的append("")方法把几个id用符号连接起来,再把这个新字符串存入cookie就完成了,然后写一个转发到商品详情页的代码就可以了,
回复 使用道具 举报
本帖最后由 AsusCoder 于 2018-6-15 00:42 编辑

曾耀峰

web04_Cookie会话技术总结
    1.理解一下Cookie的工作原理:我们可以想象浏览器自带了一个Cookie池。用来存放服务器给浏览器的Cookies信息。首先,当浏览器第一次访问服务器时,还没有cookie。是服务器向浏览器存入一个cookie的,存入的cookie带有这个服务器的地址(使用setPath("/day0605")),唯一的键,和存储的值。下次浏览器再访问服务器时,就带着这个唯一的服务器中去做数据处理
   2.根据Cookie的寿命分为会话级别和持续性级别缓存。通过设置cookie的最大年龄setMaxAge("毫秒值")来定义Cookie的缓存级别。默认没有setMaxAge的cookie是会话技术,当浏览器访问服务器,再关闭浏览器的时候,会话级别的cookie会被销毁。持续性的会话技术根据setMaxAge("60*60*24*7")表示7天。也可以设置更长。
  3.Cookie的增删改查。
   增加:response.addCookie(cookie)往往放在服务器代码最后。
   删除:通过setMaxAge(0),寿命为0会销毁cookie
   修改:cookie.setValue("history",null); 会根据cookie的名字覆盖原来的值
   查找:getName(),getValue()等方法查到Cookie 的信息
4.总结:Cookie作为服务器向浏览器输出信息并缓存一定时间到用户的磁盘中,有了这个技术,可以做用户浏览商品历史记录,用户访问网站次数等操作。
   
  通过案例一"记录用户的上次访问时间"学习了如何接收用户请求的cookies。当第一次访问时候,遍历cookies得到的cookie为空,就新建一个cookie,得到毫秒值,再转换为日期对象Date,存入cookie;下次再访问不为空,取出里面的日期值并打印。
  通过案例二"用户商品浏览的历史记录",这个难度太高了。抄了两遍代码自己写了一遍,服务器productServlet的代码步骤繁多。
有以下知识点:
1.分离出id值的方法:String[] ids = value.split("-");
2.把分离出来的字符串转换成链表集合LinkedList:LinkedList<String> list = new LinkedList<>(Arrays.asList(ids));
Arrays工具类中的asList把数组转换为集合;List接口的构造函数可以加一个集合进行构造
3.LinkedList在增删方面提供了独有的方法增加到首位addFirst(),删除末位removeLast()等
4.在前端页面利用Jsp技术接收共享服务器的数据,比较不懂的是<%%>jsp代码的嵌套,明天会学到。
5.jsp动态获取当前地址:${pageContext.request.contextPath}/ProductServlet?id=2后面跟一个Servlet的虚拟地址,就访问到了服务器。

点评

setMaxAge("毫秒值")有误! 参数是Int类型,不用加“”,而且是秒,不是毫秒!  发表于 2018-6-6 11:30
回复 使用道具 举报
林恒山
会话技术:打开浏览器--多次请求--关闭浏览器

常用的会话技术:Cookie/Session

Cookie API:
请求:
HttpServletRequest对象获得Cookie数组:
getCookies();
响应:
HttpServletResponse对象添加Cookie
addCookie(Cookie cookie)

创建Cookie对象:
Cookie c=new Cookie(String name,String value)
getName()获得参数name
getValue()获得参数value
setDomain(String domain)设置有效域名
setPath(String path)path是工程名,设置有效路径
setMaxAge(int maxAge)设置Cookie有效时间

JSP(java server pages) = java代码+html+jsp内置
<%! %> servlet实现类的成员部分,可以定义变量/方法/类
<%  %> service()内部的内容,可以定义变量/类
<%= %> service()内部的out.print().
回复 使用道具 举报
凌辉:
Cookie技术的使用】
向浏览器保存数据:
HttpServletResponse有一个方法:
* void addCookie(Cookie cookie);
获得浏览器带过来的Cookie:
HttpServletRequest有一个方法:
* Cookie[] getCookies();
创建一个Cookie对象:
* Cookie(String name,String value);
回复 使用道具 举报
林荣彬
   今天主要学习了Cookie会话技术,
一 :会话就是打开一个浏览器然后关闭浏览器就是一次会话.常见的会话技术有两种,Cooike和Session.两者的区别在与.cookie是将数据保存在客户端浏览器中,而session是将数据保存到服务器端.会话技术的使用getName()获取Cookie的名字
getValue()获取Cookie里存放的值
setpath(String path) Cookie的有效路径
setMaxAge(int num) Cokkie的有效时间(重要)

二,JSP
什么是JSP:java server pages(java服务端页面)
JSP=HTML+java代码+JSP自身的东西
jsp文件在我们去访问的时候会被翻译成servlet,生成claa文件.得到执行

JSP的嵌入java代码:
1. <%!   %>:被翻译成类中的成员部分.定义变量,定义方法,定义类.servlet是线程不安全,尽量少在类中定义成员属性.
2. <%    %>:翻译成类的servlet方法内部的内容.定义变量,定义类.直接写代码块
3. <%=   %>:翻译成servlet方法内部的out.print();
记录显示用户的上次访问时间的案例还好不是很难,显示商品浏览记录案例感觉特别难,第一思路理不清楚,第二老师的注释看懂了却感觉无从下手
回复 使用道具 举报
叶凌青
今天学了Cookie
定义:用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程称为是一次会话.
常见的会话技术:
Cookie        :将数据保存到客户端浏览器.
为什么使用会话技术?
私有的数据,购物信息数据保存在会话技术中.
Cookie是客户端技术:将数据保存到客户端浏览器中.
常用API方法:
getName();
getName();
setPath(String path);
setMaxAge(int maxAge); -- 设置Cookie的有效时间.
会话级别Cookie:
会话级别的Cookie:默认的Cookie.关闭浏览器Cookie就会销毁.
持久级别Cookie:
持久级别的Cookie:可以设置Cookie的有效时间.那么关闭浏览器Cookie还会存在. 手动销毁持久性Cookie. setMaxAge(0)---前提是有效路径必须一致.
获得Cookie:request.getCookies()
回写Cookie:response.addCookie();
回复 使用道具 举报
陈强
Cookie的一天
首先学习了JSP中嵌入JAVA代码的三种方式:
1\<%!  代码 %>,翻译成JAVA中的成员部分
2\<%  代码 %>,翻译成类中的service方法内部的内容
3\<%=  代码 %>>,翻译成service方法中的内部的out.println
然后就是重点中的重点----cookie
Cookie就是使用相应的一些方法来玩转~
* getName();
* getValue();
* setDomain(String domain);
* setPath(String path); -- 设置Cookie的有效路径.
* setMaxAge(int maxAge); -- 设置Cookie的有效时间.
删除Cookie就可以直接setMaxAge,将时间设置成为0即可
回复 使用道具 举报
何平波
Cookie(会话,将数据保存在客户端浏览器)
1.概述
简而言之就是打开浏览器访问网站页面,再关闭浏览器,就是一次会话.
2.为什么使用会话技术
私有的数据,购物信息数据保存在会话技术中.
3.Cookei
(1)向浏览器保存数据
创建cookie ,通过响应 addCookies();获取cookis
(2)获得浏览器带过来的cookie

4.JSP(java server page(java服务器端页面),JSP=java代码+html元素+JSP内置功能)
Servlet技术=动态网页开发

*jsp嵌入java代码的三种方式
第一种:  <%! java代码   %> 会被翻译成类中的成员部分,定义变量,定义方法,定义类

第二种:  <%  java代码   %>
翻译成类的service方法的内部的内容.定义变量,定义类,直接写代码
第三种:  <%= java代码   %> 这种方法java代码不能写分号  翻译成service方法内部的out.print();

案例一:记录用户的上次访问时间
案例步骤
1.由于原本的代码在判断cookie数组是否为空存在一些代码重复,可以将重复的代码抽取出来写成工具类,返回值类型是Cookie,两个参数类型是Cookie[] 数组和字符串
2.工具类中判断如果cookie数组为空,那就返回空,如果不为空,那就遍历cookie数组,再将字符串与cookie数组中的变量进行比较,如果相同就返回对象.
3.在登陆案例成功的代码块中请求获取cookie数组对象,再调用工具类方法传入cookie数组和字符串来判断cookie是否为空
4.如果为空的后,就代表浏览器中没有数据,那就是第一次登陆,不记录登陆时间
5.如果不为空的话,就获取cookie中的值,由于值范围大,要转成long,然后将long转成日期类型
6.响应结果
7.再调用cookie对象,传入相同需要查找的字符串类型和字符串的系统当前时间的毫秒值
8.添加cookie数据
回复 使用道具 举报

2018/6/5 林瑋

今天学习了Cookie,及了解了一个session(明天学).
我知道了原来我们平时逛淘宝的浏览记录是怎么来的.
Cookie是什么呢?它是一个会话技术,那什么又是会话技术?当用户打开一个浏览器访问页面到关闭视为一次会话,(只要浏览器不关,不论浏览器里关闭几个页面,Cookie都在,但是只要浏览器一关,Cookie就直接销毁.)那说到这里就要说一说Cookie如何在浏览器关闭后保存,这就要用到它的一个方法了Cookie对象.setMaxAge(秒);(例:秒--60*60=一个小时)里面输入多久他就会保存多久.而除了他这个保存的方法他还有其他方法如:Cookie对象.setPath(路径);--设置Cookie的有效路径.(好像没了反正我是不清楚了.)还有一个就是第一次访问的时候并没有指定名称的Cookie,只有第二次之后才每次都有,除非销毁Cookie,它才会消失.中间由于servlet在动态页面有些不足,我们就学习了一个jsp,jsp呢的编写除了开头里面的得编写与html完全一样,有一个增强的地方就是可以再里面写java代码,插入java代码有三种方法,一. <%!           %>翻译类中的一些成员部分,二. <%=     %>翻译成servlet内部内容,<%      %>翻译成servlet方法内部的out.print();而我们现在今天主要就用了两个,方法二,和方法三;
回复 使用道具 举报
                                       
Cookie(本地数据)
会话技术
        用户打开浏览器到关闭浏览器的过程称为一次会话

常见的会话技术
        Cookie: 将数据保存到客户端浏览器
        Session: 将数据保存到服务器端

Cookie技术的使用
        向浏览器添加Cookie本地数据
                response.addCookie(Cookie cookie)
        获取浏览器中的所有Cookie本地数据
                Cookie[]        request.getCookies()
        创建Cookie对象
                Cookie(String key,String value)
                                 
                                         JSP
概述
        Java Server Pages(Java服务器页面) 动态网页开发技术
        JSP= java代码 + HTML的元素 + JSP内置东西
执行过程
        被访问的时候 自动翻译成一个Servlet(java类) 然后编译成class文件来执行

嵌套java代码(JSP的脚本元素)
        声明:        <%!        %>: 翻译成类中的成员变量 可以定义 变量 方法 类.. Servlet线程不安全,少在类中定义成员
        代码块:        <%        %>: 翻译成类的service方法内部的内容.可以定义 变量 类 代码块
        表达式:        <%=        %>: 输入的内容会打印在页面中 表达式中不能加 ;


                                        打印上次登录成功的时间
步骤
        1 获取请求中的所有Cookie对象
        2 遍历 查找有没有key相同的(没有说明是第一次登陆)
        3 根据结果打印语句
        4 响应一个Cookie对象到浏览器中 value为登录时间



Cookie的常用API:
        getName();
        getValue();
        setDomain(String domain);        设置Cookie的有效域名
        setPath(String path);        设置Cookie的有效路径
        setMaxAge(int maxAge);         设置Cookie的有效时间

Cookie的分类:
        会话级别的Cookie:        默认的Cookie.关闭浏览器Cookie就会销毁.
        持久级别的Cookie:        可以设置Cookie的有效时间  关闭浏览器Cookie还会存在
                        手动销毁持久性Cookie. setMaxAge(0) 前提是有效路径必须一致.


                                        浏览记录
${pageContext.request.contextPath} JSP中获取当前项目名

步骤
        1 点击图片跳转到Servlet中 并返回属性名和value
        2 获取value值
        3 获取请求体中的所有Cookies
        4 调用工具类 传入数组和value 判断是否是第一次浏览
        5 第一次浏览 响应一个Cookie回浏览器  否的话 切割value值转为字符串数组 将数组转化为LinkedList集合
        6 判断集合中是否存在value值 存在的话删除该值 在添加为第一个
        7 不存在的话 判断集合长度是否大于指定大小
                超过时删除最后一个元素 添加现有元素到第一个 不超过则直接添加到集合的第一个位置里
        8 遍历集合 拼接为字符串  截取字符串 形成 x-x-x 样式的字符串
        9 响应一个Cookie回浏览器中
        10 跳转到jsp页面中
        11 在jsp中判断Cookies数组是否为空 不为空遍历数组 打印浏览图片
        (可以在返回Cookies时可以设置有效时间)
清空浏览记录
        获取指定的Cookies数据 setMaxAge(0)销毁数据  并响应回JSP中
回复 使用道具 举报
杜石苇几种常用API

Cookie类的主要方法
No.
方法
类型
描述
1
Cookie(String name, String value)
构造方法
实例化Cookie对象,传入cooke名称和cookie的值
2
public String getName()
普通方法
取得Cookie的名字
3
public String getValue()
普通方法
取得Cookie的值
4
public void setValue(String newValue)
普通方法
设置Cookie的值
5
public void setMaxAge(int expiry)
普通方法
设置Cookie的最大保存时间,即cookie的有效期,当服务器给浏览器回送一个cookie时,如果在服务器端没有调用setMaxAge方法设置cookie的有效期,那么cookie的有效期只在一次会话过程中有效,用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一次会话,当用户关闭浏览器,会话就结束了,此时cookie就会失效,如果在服务器端使用setMaxAge方法设置了cookie的有效期,比如设置了30分钟,那么当服务器把cookie发送给浏览器时,此时cookie就会在客户端的硬盘上存储30分钟,在30分钟内,即使浏览器关了,cookie依然存在,在30分钟内,打开浏览器访问服务器时,浏览器都会把cookie一起带上,这样就可以在服务器端获取到客户端浏览器传递过来的cookie里面的信息了,这就是cookie设置maxAge和不设置maxAge的区别,不设置maxAge,那么cookie就只在一次会话中有效,一旦用户关闭了浏览器,那么cookie就没有了,那么浏览器是怎么做到这一点的呢,我们启动一个浏览器,就相当于启动一个应用程序,而服务器回送的cookie首先是存在浏览器的缓存中的,当浏览器关闭时,浏览器的缓存自然就没有了,所以存储在缓存中的cookie自然就被清掉了,而如果设置了cookie的有效期,那么浏览器在关闭时,就会把缓存中的cookie写到硬盘上存储起来,这样cookie就能够一直存在了。
6
public int getMaxAge()
普通方法
获取Cookies的有效期
7
public void setPath(String uri)
普通方法
设置cookie的有效路径,比如把cookie的有效路径设置为"/xdp",那么浏览器访问"xdp"目录下的web资源时,都会带上cookie,再比如把cookie的有效路径设置为"/xdp/gacl",那么浏览器只有在访问"xdp"目录下的"gacl"这个目录里面的web资源时才会带上cookie一起访问,而当访问"xdp"目录下的web资源时,浏览器是不带cookie的
8
public String getPath()
普通方法
获取cookie的有效路径
9
public void setDomain(String pattern)
普通方法
设置cookie的有效域
10
public String getDomain()
普通方法
获取cookie的有效域


在JSP中使用JAVA代码是用<%   
中间插入代码    可以想象成大括号     这里面可以放HTML代码   HTML代码在里面就相当于文本  后面会自动编译  %>



上次访问时间的案例是用date来存入 cookie里面  判断用户是否第一次登陆 (用之前的getServletContext().getAttribute("count");的count哦按段)  不管是不是第一次登陆都添加 个date当前时间的毫秒值到cookie里面  Cookie c=new Cookie("time",System.currentTimeMillis());   如果不是第一次登陆就显示上次访问用  cookie.getvalue 获取上次访问时间



回复 使用道具 举报
汪志阳
今天主要讲解了会话:用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程称为是一次会话.
会话技术:
Cookie:将数据保存到客户端浏览器.
Session:将数据保存到服务器端.
会话技术主要用于购物信息的数据保存,然后就是一些rookie的常用API,获取名字和值:getName(),getValue();
setPath:设置cookie有效路径,setMaxAge,设置有效时间,设置时间能让cookie有效时间更持久,但是更换浏览器登录页面就会导致设置丢失
又介绍了JSP:JSP = Java代码 + HTML的元素 + JSP内置东西,这是一个动态页面开发技术.
在Jsp中写入代码的方式有三种:<%!    %>:翻译成类中的成员部分.定义变量,定义方法,定义类.Servlet是线程不安全的,所以不能过多定义成员变量.
<%     %>:翻译成类的service方法内部的内容.定义变量,定义类,直接写代码块.
<%=    %>:翻译成service方法内部的out.print();
后面就是记录浏览器上次登录时间的案例的步骤思路:
获得浏览器中带过来的所有的Cookie信息,从数组中查找有没有指定名称的Cookie
判断用户是否是第一次访问:(从数组中没有找到指定名称的Cookie)
如果是第一次:显示欢迎,记录当前访问的时间存入到Cookie中.
如果不是第一次:显示欢迎,上一次访问时间,同时记录当前访问的时间存入到Cookie中。
浏览记录的代码案例不是很懂,所以无法总结
回复 使用道具 举报
陈昆明:cookie储存在用户本地终端上的数据,需要注意其几个重点的API(获得,修改,销毁,设置路径和有效时长)
同名cookie多次创建的话,则会覆盖原先同名cookie的值
网页中的信息传入java代码中,如果是正常标签的话,直接写name和value值就行,如果是超链接的话,name得在路径后面加上?xxx=xxx.
清除cookie时,需要保证有效路径一致(setPath)

回复 使用道具 举报
郑学馨
案例一:(利用cookie完成页面打印上次访问时间)
        第一步:创建servlet
        第二步:客户端第一次向服务器发送请求:
                2.1:获得请求中存储的cookie对象(cookie[] c=require.getcookies()注:这里返回的是一个数组)
                2.2:判断或的cookie[]是不是存在(如果不为Null这说明这是第一发送请求!)
        第三步:创建一个cookie变量cke:赋值为null;
                3.1:if(c!=null){遍历数组c;}
                        3.1.1:判断数组c中是否存在一个cookie对象与我们要存入的时间对象名是一致的"date"
                        3.1.2:如果上面为true:则将遍历得到的cookie对象赋值给第三步创建的cookie对象中
                3.2:if(c==null){打印:你是第一个访问的人}
                3.3:else if(c1=null&&cke!==null){打印:上一次的访问时间,}


        第四步:
                创建一个用来存储当前时间的cookie对象:
                cookie ck=new cookie(keyname="date",value=""+System.currentTimeMillis());
                将时间对象存储到cookie中
                response.addcookie(ck)

案例二:        (利用cookie完成页面浏览记录的显示)
        准备工作:设置html页面中商品的id值,
        第一步:新建一个servlet类
        第二步: 2.1:接收客户端传过来的id值;
                2.2:获得客户端带过的cookie值
                2.3:判断传过来的是否是浏览的第一款商品
                        2.3.1:新建一个cookie对象 c;
                        2.3.2:判断客户端带过来的cookie值数组是否为null;
                        2.3.3:如果不为null,遍历该数组,判断是否存在我们要的cookie对象
                        2.3.4:如果存在我们要的对象,则将遍历得到对象值赋值给 c;否则返回null;
                2.4:如果 (c==null)则说明是第一次浏览;
                        2.4.1:新建一个cookie对象"ck",ck=new cookie("name",value);name="我们要的cookie值",value=id
                        2.4.2:设置cookie的使用范围(setpath("/项目名"));
                        2.4.3:设置cookie的生命周期(setmaxage());
                        2.4.4:响应保存在客户端
                2.5:如果 (c!=null)则说明不是第一次浏览
                        2.5.1:首先判断商品是否已经存在浏览记录中;
                                2.5.1.1:获得cookie对象的value值
                                2.5.1.2:将获得的value值按("-")进行切割
                                2.5.1.3:切割后得到一个数组;
                                *2.5.1.4:将数组转换为集合(为什么要转换成集合?数组如何转换成集合)
                                2.5.1.5:进行是否包含判断:
                                2.5.1.6:如果包含:说明之前已经浏览过该商品
                                2.5.1.7:需要将之前的信息移除,并在最开始位置再次插入该信息
                                2.5.1.8:如果不包含:说明没有浏览过该商品:
                                        2.5.1.8.1:判断保存的商品浏览记录的长度是否在我们设置的长度范围内
                                        2.5.1.8.2:如果超过范围:把最后一个商品记录信息移除,然后吧最近浏览的商品记录信息插入在第一位
                                        2.5.1.8.3:如果没超过范围:直接在第一位插入该信息
                2.6:将上面步骤的集合元素取出,封装到cookie中,并响应给客户端
                        2.6.1:新建一个stringbuffer容器,用来储存取出的元素
                        2.6.2:遍历集合,取出元素,按照格式(格式:*-*-*)添加到stringbuffer中
                        2.6.3:将stringbuffer转换为string类型
                        2.6.4:将转换好类型的值存入cookie对象中
                        2.6.5:设置cookie的使用范围
                        2.6.6:设置cookie的生命周期
                        2.6.7:将该cookie对象响应回客户端
回复 使用道具 举报
柯建程
会话技术:
什么是会话技术,用户打开浏览器访问页面,访问完成后将浏览器关闭过程称为一次会话
常见的会话技术
cookie:将数据保存到客服端浏览器
seesion: 将数据保存到服务器端     

为什么使用会话技术
使用servletcontext保存的话,因为servletcontext是整个web共享区域,谁去买单的话,都包含所有加入购物车里面的商品.
使用request保存的话,request作用范围是一次请求范围,当商品加入购物车,在浏览别的商品继续加入购物车时,前面保存的商品就会消失,因为之前的请求结束了
'cookie 保存的话, 当商品加入购物车,服务器聚会返回一个set-cookie的值保存到客户端中,访问别的商品时,客户端就会带着这个值去访问.
cookie   在浏览器保存数据
从服务器向客户端保存数据  用response
addCookie
获得浏览器带过来的数据  用request
getCookie
创建一个Cookie对象
Cookie(String name,String valve)
JSP简单概述
jsp=java+html+jsp内置东西
什么JSP  java服务器端页面
jsp动态网页开发技术
jsp执行过程
jsp也会被翻译成servlet,编译成class进行执行.(work)
jsp被翻译成servlet,编译成class进行执行,jsp也是继承了servlet
有servlet方法.
jsp嵌入java代码,jsp的脚本元素
<%! %> 被翻译成类中的成员部分,成员变量,成员方法,内部类,serlvet线程不安全,尽量少在类中定义成员属性(jsp声明)
<%  %>翻译成service方法内部内容,定义变量,定义类,直接写代码(jsp代码块)
<%= %>翻译成service方法内部的out.println(),表达式里面不能加分号(表达式)


回复 使用道具 举报
吴俊斌
Cookie常用的API:
setPath(String path);--- 设置有效路径
setMaxAge( int maxAge) --设置Cookie的有效时间
getName()---获取cookie名
getValue()---获取cookie值

jsp中嵌入java文件

<%! %> 在成员方法中,会出现线程问题,不推荐使用
<% %>  在方法中,一般使用它
<%= %>  直接在网页中显示

回复 使用道具 举报
黄志彬

今天学习了会话,常见的会话技术有两个,Cookie(将数据保存到客户端浏览器),Session(将数据保存到服务器端),今天主要学习了cookie。打开浏览器,关闭浏览器就是一次会话。

Cookie的分类有关:
会话级别的Cookie默认的Cookie关闭浏览器cookie会销毁
持久级别的cookie可以设置cookie的有效时间,name关闭cookie还会存在手动销毁持久性cookie,setMaxAge(0)----前提是有效路径必须一致



request.getCookies() 返回的是Cookie[] 数组
response.addCookie(cookie) 向客户端发送cookie
cookie中有name和value,提供了三种方法,getName(),getValue(),setValue();
setDomain ----设置cookie有效域名
setPath(String path)  ----设置Cookie的有效路径
setMaxAge(int maxAge)----设置Cookie的有效时间

JSP=java代码+HTML的元素+JSP内置的
JSP执行过程:会被翻译成servlet,编译成class执行的
回复 使用道具 举报
郑志祥


Day11 Cookie的入门
Cookie的定义:用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程称为是一次会话.
Cookie与Session的区别: Cookie        :将数据保存到客户端浏览器.
Session        :将数据保存到服务器端.
setPath(String path); -- 设置Cookie的有效路径.   
setMaxAge(int maxAge); -- 设置Cookie的有效时间. 如果时间填入0,在浏览器中则不存在cookie
请求--转发
request.getRequestDispatcher(“路径”).forward(request, response);
响应-重定
//重定向(两次请求,第一赋值,只有第一响应才会有值,第二无值)
response.sendRedirect("/day10_1/SevletDemo2");
案例分析(获取是否浏览过此页面与上次浏览的一个时间)
1.获得所有的cookie,得到一个cookies数组
2.默认时间cookie为null
3.判断cookie数组是否为null
4.不为null才遍历
5.数组中如果有名字叫date的cookie说明不是第一访问
//不是第一访问就把名字叫date的cookie赋值给c1
//赋值成功后,c1就是我们上次保存成功的cookie
//如果c1为null说明是第一次访问
//第一次
               
//第N次
//拿到C1中记录的访问时间,并打印出来
//每次访问都会重新存一个当前访问时间给cookie
//每次访问都将cookie添加响应对象中,响应给浏览器
                       
回复 使用道具 举报
这几天学了两个域,一个是ServletContext 作用在全Web工程,功能相当强大,是在服务器启动的时候就会创建一个单独的ServletContext,被所有的所共享, setAttribute是用来存取对象用的,前面存个类型,后面存值,当类型一样时,后面的值会自动覆盖,对应的方法有getAttribute 是用来获取的,ServletContext在服务器关闭 和项目被服务器移除的时候所销毁.平常是用来做在访问人数,

Response 域对象,在请求的时候创建,在响应后销毁,存在的生命周期短的可伶,
重定向的两种方法
Response.setStatus(302) 302是代表重定向
Response.setHeader(“location”,”文件路径”)  location 代表位置的意思
2. 第二种方式
Pesponse.sendRadirect(“文件路径”)
页面刷新跳转
Response.setHeader(“refresh”,”5;文件路径”)  refresh 是刷新的意思
request.getRequestDispatcher(String path).forward(request,response);
转发 request.getrequeestDispatcher(“文件路径”).forward(request,response)
在说说转发和重定向的区别
重定向是 浏览器向服务器发送一次请求,服务器回应一句,浏览器通过回应的在找到另外一个,在返回给服务器,两次请求,两次响应,地址栏会发生改变,可以跳转到任何地方
转发的话 比如张三去找李四借钱,李四正好穷的开不了锅了,正好和张三关系很好,就找王五借了钱给张三,张三还钱还是给李四,一次响应和一次请求,作用只能在本域中,地址栏不会发生改变
回复 使用道具 举报
李思贤:        今天学习了会话技术
                什么是会话技术:就是一个用户打开浏览器,访问网站的很多页面,访问完成后将浏览器关闭,这个过程就是一次会话
常见的会话技术:
                1.Cookie        2.Session(明天学习)
        Cookie可以将数据存到客户端浏览器中:
获取cookie request.getCookies();返回一个cookie数组
向浏览器存入cookie response.addCookie(String name,String value);

Cookie 常用API:getName();获取存入的cookie名 getValue();获取存入的cookie值

Cookie常用的方法:
                setPath() 设置Cookie的有效路径
                setMaxAge() 设置Cookie的有效时间
                SetMaxAge()的设置存活时间,就算浏览器关闭了,重登也有记录
        不设置MaxAge方法的话默认MaxAge的值为0

jsp中嵌入java代码的三种方式和区别。
<%!  %>中嵌入的是类中的成员部分。但Servlet是单线程,不安全,所以我们不在类中定义成员属性。
<%  %>中写的是类的service方法内部的内容。可直接写代码块。
<%=  %>中写的是service方法内部的out.print()的括号内的东西,它的结果是直接打出这些内容。       
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马