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常用的API:
setPath(String path);--- 设置有效路径
setMaxAge( int maxAge) --设置Cookie的有效时间
getName()---获取cookie名
getValue()---获取cookie值

案例一:用户访问的时间
        Integer count = (Integer) this.getServletContext().getAttribute("count");
                Cookie[] cookies = request.getCookies();
                Cookie cookie = CookieUtils.findCookie(cookies, "lastVisit");
                if(cookie==null) {
                        response.getWriter().println("欢迎您,您是第"+count+"为登录的用户");
                }else {
                        Long l =Long.parseLong(cookie.getValue());
                        Date date = new Date(l);
                        response.getWriter().println("您是第"+count+"为登录的用户,您上次的登录时间为"+date.toLocaleString());
                }
                Cookie c = new Cookie("lastVisit",""+System.currentTimeMillis());
                response.addCookie(c);

JSP的本质就是一个Servlet,JSP的运行之前会先被Tomcat服务器翻译为.java文件,
然后在将.java文本编译为.class文件,而我们在访问jsp时,处理请求的就是那个
翻译后的类。

<% %>叫做脚本片段,其中写的内容会翻译在Servlet的Service方法中,
显然我们可以在Service方法中定义局部变量或者调用其他方法,

案例二:记录用户的商品浏览记录
String pid = request.getParameter("pid");
                Cookie[] cookies = request.getCookies();
               
                Cookie cookie=CookieUtils.findCookie(cookies, "history");
                //判断cookies是否为空
                if(cookies==null) {
                        Cookie c = new Cookie("history",pid);
                        c.setMaxAge(60*60*24);
                        c.setPath("/MayShop");
                        response.addCookie(c);
                }else {
                       
                        String[] value = cookie.getValue().split("-");
                        LinkedList<String> list = new LinkedList<String>(Arrays.asList(value));
                        //判断是否有pid
                        if(list.contains(pid)) {
                                list.remove(pid);
                                list.add(pid);
                        }else {
                                //判断是否超过6个
                                if(list.size()>6){
                                        list.removeLast();
                                        list.addFirst(pid);
                                }else {
                                        list.addFirst(pid);
                                }
                        }
                        StringBuffer sb = new StringBuffer();
                        for (String s : list) {
                                sb.append(s).append("-");
                        }
                        String ids = sb.substring(0, sb.length()-1).toString();
                        Cookie c = new Cookie("history",ids);
                        c.setMaxAge(60*60*24);
                        c.setPath("/MayShop");
                        response.addCookie(c);
清空浏览记录:
Cookie cookie = new Cookie("history",null);
                cookie.setPath("/day11");
                cookie.setMaxAge(0);
                response.addCookie(cookie);
回复 使用道具 举报
本帖最后由 Do1 于 2019-11-23 00:35 编辑


今天学习了Cookie,他和ServletContext,request功能差不多可以用来存数据,只不过3者之间有区别,拿request来说它保存数据提取数据后执行一次就消失了,如果说要在不同的jsp(jsp其实也是一个由虚拟机编译后的类)或者不同的类中调用需要转发,ServletContext则不用只需在一个类中定义就可以供整个服务器使用而且ServletContext的值会一直存在直到你的服务器关闭,还有ServletContext和request是服务器的内部类,服务器启动时这两个类就被自动创建不需要我们去New出来,这两个类是向客户端输送消息并没有保存在客户端的本地

Cookie不是内部类它需要我们new一个出来就可以在任意地方调用它的值,因为它是Servlet类下的
Cookie的构造函数很简单:
Cookie cookie=new Cookie(String name,String value); 把Cookie的name和value设置进去
response.addCookie(cookie); 参数是一个cookie对象,相当于把这个东西上传到客户端本地
当然你可以设置这个cookie在客户端的存活时间,比如一个人7天没看过这个商品了,那肯定不会去买了就可以把它清空掉
cookie.setMaxAge(num*num); 设置存活时间
cookie.setMaxAge(0); 设为0的话等同于删除,可以用来删除浏览记录

抓取request可以用request.getCookies();方法,它返回的是一个Cookie的数组,可以用来提取单个值,因为Cookie这个东西是name和value全部混在一起的 它有点像是Map集合,我们可以用它来进行类似于浏览记录,保存用户名,自动登录等功能
回复 使用道具 举报
许剑鸿 webDay16总结

会话技术 定义:用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程称为是一次会话.

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

获取cookie request.getCookies();返回一个cookie数组
向浏览器存入cookie response.addCookie(String name,String value);
Cookie 常用API:getName();获取存入的cookie名 getValue();获取存入的cookie值
                 setPath(String path);设置cookie的有效路径  setMaxAge(int 秒) 设置cookie的有效时间  
                 cookie默认生命周期在关闭浏览器便会销毁 设置了path与maxage之后在有效时间内关闭浏览器也会存在


Jsp:java server pages      jsp中嵌入java代码
<%!    %>:定义于类中成员
<%     %>:定义于成员方法中
<%=   %>:向页面输出 out.print();

评分

参与人数 1黑马币 +1 收起 理由
咸鱼coder + 1 大炮牛逼

查看全部评分

回复 使用道具 举报
邵倩


会话 : 打开浏览器 访问多个页面 到关闭浏览器的过程---关闭网页不属于一次会话
会话技术 : cookie :将数据保存到客户端浏览器   session : 将数据保存到服务器端(把钥匙保存到浏览器)
私有的数据,购物信息等 需要保存在会话技术中

创建Cookie对象: Cookie c=new Cookie(String name , String value)
向浏览器保存数据:response.addCookie(Cookie cookie)
获得浏览器带来的Cookie: request.getCookies()  返回一个Cookie数组

cookie常用API
* getName();
* getValue();
* setDomain(String domain); -- 设置Cookie的有效域名. //  www.baidu.com  music.baidu.com
* setPath(String path); -- 设置Cookie的有效路径.
* setMaxAge(int maxAge); -- 设置Cookie的有效时间.

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

JSP Java server pages
可以写java代码,html
jsp文件在我们去访问他的时候 会被翻译成一个servlet,编译成class文件,执行这个servlet
JSP的嵌入java代码


<%!    int i=3;    %>  翻译成类中的成员部分.可以定义变量,方法,类   Servlet是线程不安全 尽量少在类中定义成员属性
<%  int a=5;  %>  翻译成类的service方法内部的内容.可以定义变量,类,直接写代码块.
<%=  a  %>  翻译成service方法内部的out.print();

ctrl+shift+delete  清除cookie


回复 使用道具 举报
柯威龙
今天学习了Cookie.Cookie是一种会话技术.是一种将数据保存到客户端浏览器的技术.会话技术的
应用一般用于私有的数据,购物信息数据保存在会话技术中.Cookie向浏览器保存数据使用void addCookie
方法.获取浏览器带过来的cookie使用:cookie[] getcookie();创建cookie对象: cookie(String name,String value)
cookie的分类分为会话级别的cookie和持久级别cookie.会话级别的cookie在关闭浏览器是cookie会自动销毁
持久级别的cookie是可以为cookie设置有效时间的,关闭了浏览器cookie还能存在,当然他也可以使用方法手动销毁.
cookie常用的一些方法
        setPath(String path);  ---设置有效路径(手动销毁的话路径必须是有效路径)
        setMaxAge(int maxAge); ---是指cookie的有效时间
        getname()              ---获取cookie的名
        getvalue()             ---获取cookie的值
        request.getCookies()   ---获取cookie
        response.addCookie()   ---回写cookie
        setDomain(String domain)--设置cookie的有效域名
jsp使用java代码时需要加上<$ $>共有三种:
        <$! $>翻译成类中的成员,定义变量,方法和类
        <$  $>翻译成类的servlet方法的内部内容,定义变量和类
        <$= $>翻译成servlet方法内部的out.print();
回复 使用道具 举报
吴鹏
总结

---------------------------------------------------

熟练掌握Cookie几个常用API

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

向浏览器保存数据:HttpServletResponse有一个办法,
void addCookie(Cookie cookie);
获得浏览器带过来的Cookie:
HttpServletRequest有一个办法,
Cookie[] getCookies();
创建一个Cookie对象:
Cookie(String name,String value);

--------------------------------------------------

学会在JSP中嵌入Java代码

jsp中嵌套Java代码的三种方式(JSP的脚本元素):
<% int a = 5;    %>;翻译成类中的service方法内部的内容,可以定义变量,定义类,直接写一些代码块;
<%! int i = 3;   %>;翻译成Servlet中的成员部分,可以定义变量,定义方法,定义类;Servlet线程不安全,尽量少在类中定义成员属性;
<%= Java的表达式    %>;翻译成service内部的out.println();表达式后面不能加";"

--------------------------------------------------

会话技术:
用户打开浏览器访问页面,访问了网站了很多页面,访问侯将浏览器关闭的过程,称为一个会话;

为什么要使用会话技术:
使用会话技术,可以将访问的一些记录保存在浏览器;
因为不在ServletContext中,是针对整个项目的,会导致不同的用户选择相同的商品内容,而request域对象,在选择一个商品后,
再选择其它商品的话,会发送一次新的请求,这样之前存放的内容就消失了,最后剩下的只有最后选中的那件商品,如果使用转发,
只能转发到结账页面,用户体验不好;

------------------------------------------------

掌握显示用户的上次访问时间案例
思考方向:

        //获得浏览器中带的所有的cookie信息,从数组中查找有没有指定的cookie;
        //判断是否第一次访问:
        //如果是第一次,显示欢迎,记录当前访问的时间,存入到cookie
        //如果不是第一次,显示欢迎,上一次访问时间,同时记录当前访问的时间存入到cookie中;

后台代码实现:
response.setContentType("text/html;charset=UTF-8");
        Integer count = (Integer) this.getServletContext().getAttribute("count");
        response.getWriter().println("<h1>现在网站被访问的次数为:"+count+"</h1>");
        

        Cookie[] cookies = request.getCookies();
        Cookie cookie =null;
        if(cookies != null) {
            for(Cookie c : cookies) {
                if("lastvisit".equals(c.getName())) {
                    cookie = c;
                }
            }
        }
        if (cookie == null){
            response.getWriter().println("<h1>欢迎,你是第"+count+"位访问此网站的用户</h1>");
        } else {
            long l = Long.parseLong(cookie.getValue());
            Date d = new Date(l);
            response.getWriter().println("<h1>欢迎,你是第"+count+"位访问此网站的用户,上次的访问时间是"+d.toLocaleString()+"</h1>");
        }
        Cookie c1 = new Cookie("lastvisit",""+System.currentTimeMillis());
        response.addCookie(c1);


-----------------------------------------------------------------------------------

掌握显示商品浏览记录案例
思考方向:
        // 接收商品id;
        // 接收从客户端带过来的所有Cookie
        // 从Cookie的数组中查找制定名称的Cookie
        // 判断是否是第一次浏览商品:
        // 第一次浏览商品
        // 直接将商品的ID存入到Cookie
        // 将Cookie回写到浏览器
        // 不是第一次浏览商品:
        // 判断当前商品是否已经在浏览记录中
        // 已经存在:移除当前元素,将当前元素添加到最开始
        // 没在浏览记录中:
        // 判断是否已经超过了最大长度:如果超过:删除最后一个 将当前元素添加到最前面
        // 没有超过:直接将该元素添加到最前面位置
        // 将转换的id的只存入到Cookie中,回写到浏览器;

代码实现:

String id = request.getParameter("id");
        Cookie[] cookies = request.getCookies();
        Cookie cookie = CookieUtils.findCookie(cookies, "history");
        if (cookie == null) {
            Cookie c = new Cookie("history", id);
            c.setPath("/day0605");
            c.setMaxAge(60 * 60 * 24 * 7);
            response.addCookie(c);
        } else {
            String[] strs = cookie.getValue().split("-");
            // List<String> list = Arrays.asList(strs);
            LinkedList<String> list2 = new LinkedList<String>(Arrays.asList(strs));
            if (list2.contains(id)) {
                list2.remove(id);
                list2.addFirst(id);
            } else {
                if (list2.size() >= 5) {
                    list2.removeLast();
                    list2.addFirst(id);
                } else {
                    list2.addFirst(id);
                }
            }
            StringBuffer sb = new StringBuffer();
            for (String s : list2) {
                sb.append(s).append("-");
            }
            String str = sb.substring(0, sb.length() - 1).toString();
            Cookie c1 = new Cookie("history", str);
            response.addCookie(c1);
        }

其中使用到的方法 CookieUtils.findCookie(Cookie[] cookies, String name)的实现代码如下:

public static Cookie findCookie(Cookie[] cookies, String name) {
        if (cookies == null) {
            return null;
        } else {
            for (Cookie cookie : cookies) {
                if (name.equals(cookie.getName())) {
                    return cookie;
                }
            }

            return null;
        }
    }
回复 使用道具 举报
李志勇:
Cookie:
【Cookie技术的使用】
向浏览器保存数据:
HttpServletResponse有一个方法:
        void addCookie(Cookie cookie);
获得浏览器带过来的Cookie:
HttpServletRequest有一个方法:
        Cookie[] getCookies();
创建一个Cookie对象:
        Cookie(String name,String value);
JSP的嵌入Java代码:JSP的脚本元素
        <%!    %>                :翻译成类中的成员部分. 定义变量,定义方法,定义类.Servlet是线程不安全的,尽量少在类中定义成员属性!!
        <%     %>                :翻译成类的service方法内部的内容. 定义变量,定义类,直接写代码块.
        <%=    %>                :翻译成service方法内部的out.print();
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)---前提是有效路径必须一致.
浏览记录实现步骤:

                 * * 接收商品id.
                 * * 接收从客户端带过来的所有Cookie.
                 * * 从Cookie的数组中查找指定名称的Cookie.
                 * * 判断是否是第一次浏览商品:
                 *   * 第一次浏览商品
                 *     * 直接将商品的ID存入到Cookie.
                 *      * 将Cookie回写到浏览器.
                 *    * 不是第一次浏览商品 1-2
                 *        * 判断当前的商品是否已经在浏览记录.
                 *            * 已经存在: 2-1 移除当前元素,将当前元素添加到最开始.
                 *            * 没在浏览记录中:
                 *                * 判断是否已经超过了最大长度:如果超过 2-1-3:删除最后一个                                         将当前元素添加到最前面.
                 *                * 没有超过:直接将该元素添加到最前位置.
                 *        * 将转换的id的值存入到Cookie,回写浏览器.
回复 使用道具 举报
郑雪平

今天主要是学习网站会话技术,包含两种会话:一.cookie会话技术;二.session会话技术;今天学了第一种那就是cookie,它是把数据保存到客户端浏览器的.所谓的会话就是一个用户用浏览器打开网站很多页面进行访问,访问完再把浏览器关闭的过程就是一个会话.
  使用cookie会话技术我们可以记录用户的上次访问时间,具体步骤分为三步:1.准备登陆案例;2.判断是否是第一次访问;3.根据是不是第一次而显示不同的信息,然后将当前的时间保存到cookie中.还可以记录用户的商品浏览记录,具体实施的步骤是:1.登陆网站显示商品列表页面;2.为页面做准备工作;3.点击商品将ID传递给servlet;4.判断是不是第一次来网站浏览商品的;5.是第一次就将商品ID存入cookie当中即可;6.不是第一次就判断该商品是否已经被浏览了;7.如果浏览过则删除之前的元素将该元素添加到最前面;8.如果没浏览过判断最大长度,没超过限制的直接添加到最前面,超过限制则删除最后一个,并将其插入到最前面.
     清空浏览器记录我们可以使用快捷键ctrl+shift+del的方式进行操作,这样方便.
回复 使用道具 举报
詹源
会话:
打开浏览器,访问多个页面,关闭浏览器-----一次会话

会话技术
1  cookie  保存到浏览器
2  session  保存到服务器 -----把钥匙保存在浏览器

为什么要保存购物信息
ServletContext :共有的,不能保存在这

request:生命周期有限,一次请求就销毁.不能保存在这

cookie和session可以保存.

使用JQ完成记录用户上次访问时间的案例:
步骤:

创建cookie
Cookiee cookie = new cookie()

创建一个cookie对象
Cookie(String name,String value);new Cookie("key","value")

用户访问一个浏览器,返回的基本是一个字符串

通过响应

向浏览器保存数据:
HttpServletResponse有一个方法
addCookie(Cookie cookie);  respons.addCookie(c)

获得浏览器带过来的Cookie;
Cookkie[] getCookies(;)

JSP:

Java Servver Pages (Java服务器端页面)

如何正在JSP中写入

JSP在我们去访问他的时候,他就会被翻译成一个Servlet.编译成class文件

在JSP嵌套JAVA代码三种方式:

<!  >   

<>

<= >
回复 使用道具 举报
游荣辉
总结       
        今天学习了会话技术
                什么是会话技术:就是一个用户打开浏览器,访问网站的很多页面,访问完成后将浏览器关闭,这个过程就是一次会话
        常见的会话技术:
                1.Cookie        2.Session
        Cookie就是客户端技术,可以将数据存到客户端浏览器中
                Cookie[] cookies = request.getCookies();就是接收数据
                request.getSession().getAttribute(Sreing  xx);就是存放数据
                Cookie cookie = new Cookie(String name,String value)这个就是创建一个Cookie对象
        Cookie常用的方法
                getName();
                getValue()
                setDomain() 设置域名
                setPath() 设置Cookie的有效路径
                setMaxAge() 设置Cookie的有效时间
        可以使用MaxAge的方法设置它存在的时间,就算你把浏览器关闭了,重登也可以找到存放的东西,除非过了你规定的时间
        如果你设置MaxAge方法的话他就会使用默认的,默认的就是MaxAge的值为0,就是你关闭浏览器重开的话你存放的东西就没了
       

        Session还没学,明天在写....哈哈哈额
        还有今天的案例真的难搞!!!!!!!!!!
回复 使用道具 举报
16weisong
今天主要通过两个案例学习了cookie和基础jsp,只需要把显示上次访问时间和浏览记录的案例做了就可以掌握
回复 使用道具 举报
       
施炎生
一.会话是用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程。
        常见的会话技术:
* Cookie        :将数据保存到客户端浏览器.
* Session        :将数据保存到服务器端.
   常用方法:
response.add();添加cookie到浏览器;
resquest.getcookies():从浏览器获取cookie;
Cookie cookie=new Cookie();创建cookie对象;

二. JSP的嵌入Java代码:JSP的脚本元素
* <%! 代码可加分号   %>                :翻译成类中的成员部分. 定义变量,定义方法,定义类.Servlet是线程不安全的,尽量少在类中定义成员属性!!
* <%   代码可加分号  %>                :翻译成类的service方法内部的内容. 定义变量,定义类,直接写代码块.
* <%=  代码不可加分号  %>                :翻译成service方法内部的out.print();

三.        Cookie的常用的API:
* getName();
* getValue();
* setDomain(String domain); -- 设置Cookie的有效域名. //  www.baidu.com  music.baidu.com
* setPath(String path); -- 设置Cookie的有效路径.
* setMaxAge(int maxAge); -- 设置Cookie的有效时间.
  
Cookie的分类:
* 会话级别的Cookie:默认的Cookie.关闭浏览器Cookie就会销毁.
* 持久级别的Cookie:可以设置Cookie的有效时间.那么关闭浏览器Cookie还会存在. 手动销毁持久性Cookie. setMaxAge(0)---前提是有效路径必须一致.





回复 使用道具 举报
郑阳阳
Cookie几个常用API:
getName();获得cookie设置的名称
getValue();获得cookie存的值
setDomain(String domain);设置有效域名
setPath(String path);设置有效路径
setMaxAge(int maxage);设置有效时间
JSP中嵌入Java代码:
<% %>定义变量,类和代码块
<%= %>直接输出,out.print();
<%! %>定义成员变量,方法,定义类,servlet线程不安全,尽量不在这里定义成员属性.
回复 使用道具 举报
陈叶隆
1. Cookie:
1.1 使用Cookie的步骤:
i)获得浏览器带过来的Cookie:Request*
Cookie[] getCookies();
ii)创建Cookie对象:
* Cookie(String name,String value);
iii)向浏览器保存数据: Response*
void addCookie(Cookie cookie);
        1.2 Cookie的常用的API:
* getName();
* getValue();
* setDomain(String domain); -- 设置Cookie的有效域名.
* setPath(String path); -- 设置Cookie的有效路径.
* setMaxAge(int maxAge); -- 设置Cookie的有效时间.

2. JSP:
        i)JSP的执行过程:
JSP会被翻译成Servlet,编译成class进行执行的.
        ii)JSP的嵌入Java代码:JSP的脚本元素
<%!    %>        :翻译成类中的成员部分. 定义变量,定义方法,定义类.Servlet是线程不安全的,尽量少在类中定义成员属性!
<%     %>        :翻译成类的service方法内部的内容. 定义变量,定义类,直接写代码块.
<%=    %>        :翻译成service方法内部的out.print();
回复 使用道具 举报
郭明杰:

[会话技术] :用户打开一个浏览器访问页面,访问完成后将浏览器关闭的过程 称为一次会话

*常见的会话技术
        *Cookie:将数据保存到客户端的浏览器
        Session:将数据保存到服务器端
    ServletContext是共享区域

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

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

*为什么使用会话技术:
  *私有的数据,购物信息数据保存在会话技术中

[JSP] = java代码+html元素+JSP内置东西

JSP的执行过程:JSP会被翻译成Servlet,编译成class进行执行的

JSP的嵌入java代码:JSP的脚本元素
        *<%!   %>
        *<%   %>
        *<%=   %>

cookie.setPath();用来设置cookie的携带路径
ookie.setMaxAge(); 用来设置cookie的生命
回复 使用道具 举报
万冕

Cookie会话技术

Cookie的API

getName()获取Cookie的名字
getValue()获取Cookie里存放的值
setpath(String path) Cookie的有效路径
setMaxAge(int num) Cokkie的有效时间(重要)


清空浏览记录,就是新new一个Cookie,然后Cookie的名字必须和之前的一致,然后将值设置成null
然后setMaxAge(0),就可以将浏览记录清空

JSP就是类似于在HTML里加入Java代码,<%!  %>定义成员属性,但是尽量别这么用  <%     %>定义变量,定义类
<%= %> 打印输出
回复 使用道具 举报
王清松
Cookie&Session
        Cookie
                将数据保存到客户端浏览器
                API
                        构造
                                Cookie(String name,String value)
                        设置Cookie的有效域名
                                void setDomain(String pattern)
          Specifies the domain within which this cookie should be presented.
                        设置Cookie的有效路径
                                void setPath(String uri)
          Specifies a path for the cookie to which the client should return the cookie.
                        设置Cookie有效时间
                                void setMaxAge(int expiry)
          Sets the maximum age of the cookie in seconds.
                分类
                        会话级别:默认的Cookie,关闭浏览器Cookie就会销毁
                        持久级别:可以设置Cookie的有效时间,关闭浏览器Cookie仍然存在,前提是有效路径必须一致,可以通过setMaxAge(0)进行提前销毁
        Session
                将数据保存到服务器
        JSP(Java Server Pages)
                JSP的实现
                        被翻译成Servlet,编程成class进行执行
                可以嵌入Java代码
                        <%! %>翻译成类的成员部分,Servlet是线程不安全的,尽量不定义成员属性
                        <% %>翻译成service方法内部的内容
                        <%= %>翻译成service方法内部的out.print()
                        <%@ %>
                                翻译到类外,用于导包
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马