黑马程序员技术交流社区
标题: 【厦门JavaEE就业1期-每日总结】Cookie [打印本页]
作者: 厦门校区 时间: 2018-6-5 19:00
标题: 【厦门JavaEE就业1期-每日总结】Cookie
同学们,今天我们学习了一种会话技术Cookie,是客户端的会话技术。明天我们还将学习服务器端的会话技术Session。
今日需要掌握的有:
熟练掌握Cookie几个常用API
学会在JSP中嵌入Java代码
掌握显示用户的上次访问时间案例
- 掌握显示商品浏览记录案例
请同学们按照如上要求,总结今日所学。
作者: 磬辰 时间: 2018-6-5 19:19
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 时间: 2018-6-5 19:31
本帖最后由 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集合,我们可以用它来进行类似于浏览记录,保存用户名,自动登录等功能
作者: LittleSky 时间: 2018-6-5 19:56
常小天
今天学习的是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。此处注意有效路径必须一致。
作者: 许大炮 时间: 2018-6-5 21:02
许剑鸿 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();
作者: 望蜀 时间: 2018-6-5 21:12
邵倩
会话 : 打开浏览器 访问多个页面 到关闭浏览器的过程---关闭网页不属于一次会话
会话技术 : 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
作者: 渣.. 时间: 2018-6-5 21:14
柯威龙
今天学习了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();
作者: wpwing 时间: 2018-6-5 21:16
吴鹏
总结
---------------------------------------------------
熟练掌握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;
}
}
作者: 李志勇 时间: 2018-6-5 21:53
李志勇:
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,回写浏览器.
作者: 厦门黑马王子 时间: 2018-6-5 21:54
郑雪平
今天主要是学习网站会话技术,包含两种会话:一.cookie会话技术;二.session会话技术;今天学了第一种那就是cookie,它是把数据保存到客户端浏览器的.所谓的会话就是一个用户用浏览器打开网站很多页面进行访问,访问完再把浏览器关闭的过程就是一个会话.
使用cookie会话技术我们可以记录用户的上次访问时间,具体步骤分为三步:1.准备登陆案例;2.判断是否是第一次访问;3.根据是不是第一次而显示不同的信息,然后将当前的时间保存到cookie中.还可以记录用户的商品浏览记录,具体实施的步骤是:1.登陆网站显示商品列表页面;2.为页面做准备工作;3.点击商品将ID传递给servlet;4.判断是不是第一次来网站浏览商品的;5.是第一次就将商品ID存入cookie当中即可;6.不是第一次就判断该商品是否已经被浏览了;7.如果浏览过则删除之前的元素将该元素添加到最前面;8.如果没浏览过判断最大长度,没超过限制的直接添加到最前面,超过限制则删除最后一个,并将其插入到最前面.
清空浏览器记录我们可以使用快捷键ctrl+shift+del的方式进行操作,这样方便.
作者: 13163997058 时间: 2018-6-5 21:55
王刘锁
今天通过两个案例来学习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就完成了,然后写一个转发到商品详情页的代码就可以了,
作者: 沅瞻 时间: 2018-6-5 21:55
詹源
会话:
打开浏览器,访问多个页面,关闭浏览器-----一次会话
会话技术
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代码三种方式:
<! >
<>
<= >
作者: 5119 时间: 2018-6-5 21:55
游荣辉
总结
今天学习了会话技术
什么是会话技术:就是一个用户打开浏览器,访问网站的很多页面,访问完成后将浏览器关闭,这个过程就是一次会话
常见的会话技术:
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还没学,明天在写....哈哈哈额
还有今天的案例真的难搞!!!!!!!!!!
作者: lnongge 时间: 2018-6-5 21:57
16weisong
今天主要通过两个案例学习了cookie和基础jsp,只需要把显示上次访问时间和浏览记录的案例做了就可以掌握
作者: doudou0606 时间: 2018-6-5 21:57
施炎生
一.会话是用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程。
常见的会话技术:
* 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)---前提是有效路径必须一致.
作者: Eclipse启动 时间: 2018-6-5 21:58
郑阳阳
Cookie几个常用API:
getName();获得cookie设置的名称
getValue();获得cookie存的值
setDomain(String domain);设置有效域名
setPath(String path);设置有效路径
setMaxAge(int maxage);设置有效时间
JSP中嵌入Java代码:
<% %>定义变量,类和代码块
<%= %>直接输出,out.print();
<%! %>定义成员变量,方法,定义类,servlet线程不安全,尽量不在这里定义成员属性.
作者: chenyelong 时间: 2018-6-5 21:59
陈叶隆
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();
作者: 偏离X 时间: 2018-6-5 22:00
郭明杰:
[会话技术] :用户打开一个浏览器访问页面,访问完成后将浏览器关闭的过程 称为一次会话
*常见的会话技术
*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的生命
作者: 咸鱼coder 时间: 2018-6-5 22:01
万冕
Cookie会话技术
Cookie的API
getName()获取Cookie的名字
getValue()获取Cookie里存放的值
setpath(String path) Cookie的有效路径
setMaxAge(int num) Cokkie的有效时间(重要)
清空浏览记录,就是新new一个Cookie,然后Cookie的名字必须和之前的一致,然后将值设置成null
然后setMaxAge(0),就可以将浏览记录清空
JSP就是类似于在HTML里加入Java代码,<%! %>定义成员属性,但是尽量别这么用 <% %>定义变量,定义类
<%= %> 打印输出
作者: q55w66 时间: 2018-6-5 22:03
王清松
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()
<%@ %>
翻译到类外,用于导包
作者: 滴滴eclipse启动 时间: 2018-6-5 22:32
本帖最后由 滴滴eclipse启动 于 2018-6-5 23:50 编辑
江某人:
Cookie的常用的API:
getName();
getValue();
setDomain(String domain); -- 设置Cookie的有效域名.
setPath(String path); -- 设置Cookie的有效路径.
setMaxAge(int maxAge); -- 设置Cookie的有效时间.
JSP的嵌入Java代码:JSP的脚本元素
<%! %> :翻译成类中的成员部分. 定义变量,定义方法,定义类.Servlet是线程不安全的,尽量少在类中定义成员属性!!
<% %> :翻译成类的service方法内部的内容. 定义变量,定义类,直接写代码块.
<%= %> :翻译成service方法内部的out.print();
掌握显示用户的上次访问时间案例:
HttpServletResponse有一个方法:
void addCookie(Cookie cookie);
获得浏览器带过来的Cookie:
HttpServletRequest有一个方法:
Cookie[] getCookies();
创建一个Cookie对象:
Cookie(String name,String value);
掌握显示商品浏览记录案例:
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,回写浏览器.
作者: sts 时间: 2018-6-5 22:48
苏海斌
会话技术:cookie session
cookie:保存在浏览器
session:保存在服务器
cookie的使用:
常用API:
getName();
getValue();
setDomain(String domain); -- 设置Cookie的有效域名.
setPath(String path); -- 设置Cookie的有效路径.
setMaxAge(int maxAge); -- 设置Cookie的有效时间.
分类:
会话级别的Cookie:默认的Cookie.关闭浏览器Cookie就会销毁.
持久级别的Cookie:可以设置Cookie的有效时间.那么关闭浏览器Cookie还会存在
手动销毁持久性Cookie. setMaxAge(0)---前提是有效路径必须一致.
Session的概述:
Cookie本身是有大小和个数的限制.Session没有限制.Cookie的数据保存在客户端,Session数据保存在服务器端.
Session的执行原理:基于Cookie的.
获得Session:
request.getSession();
Session是域对象:
作用范围:
服务器端第一次调用getSession()创建session.
三种情况销毁session:
1.session过期. 默认过期时间为30分钟.
2.非正常关闭服务器.如果正常关闭session序列化到硬盘.
3.手动调用session.invalidate();
作用范围:多次请求.(一次会话)
JSP:Java服务器端页面
JSP嵌入Java代码:
1<%! %>翻译成类中的成员部分,定义变量,方法,类;Servlet是线程不安全的,尽量少在类中定义成员属性!!!
2<% %>翻译成类的service方法内部的内容,定义变量,类;直接写代码块
3<%= %>翻译成service方法内部的out.print();
作者: 一梦 时间: 2018-6-5 22:58
陈世彪:
今天学习了Cookie
Cookie几个常用API
setPath(); 设置有效路径
setMaxAge() 设置Cookie的有效时间
getName() 获取cookie名
getValue() 获取cookie值
学会在JSP中嵌入Java代码
<%! %>:定义于类中成员,成员变量
<% %>:定义于成员方法中
<%= %>:向页面输出 out.print();
掌握显示用户的上次访问时间案例
先获取时间
System.currentTimeMillis()
再通过Cookie往里设置
Cookie c = new Cookie("lastVisit",""+System.currentTimeMillis());
获取一个Lone值
Long l =Long.parseLong(cookie.getValue());
将long值转成时间格式
Date date = new Date(l);
使用date.toLocaleString();来显示
掌握显示商品浏览记录案例
接收商品id;
接收从客户端带过来的所有Cookie
从Cookie的数组中查找制定名称的Cookie
判断是否是第一次浏览商品:
第一次浏览商品
直接将商品的ID存入到Cookie
将Cookie回写到浏览器
不是第一次浏览商品:
判断当前商品是否已经在浏览记录中
已经存在:移除当前元素,将当前元素添加到最开始
没在浏览记录中:
判断是否已经超过了最大长度:如果超过:删除最后一个 将当前元素添加到最前面
没有超过:直接将该元素添加到最前面位置
将转换的id的只存入到Cookie中,回写到浏览器;
作者: finfin12 时间: 2018-6-5 22:59
张育辉
cookie总结
一:什么是会话
用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程称为是一次会话.
常见的会话技术:
Cookie :将数据保存到客户端浏览器.
Session :将数据保存到服务器端.
二:cookie常见的方法;
1:获取,从请求获取,浏览器带过的 request.getCookies(),返回的是一个数组
2:遍历数组,查询是否有自己想要的cookie,根基getValue()获得值,getName()获取名字
3:创建一个cookie对象通过new cookie("名称",值)可以通过 Cookie("清空的名字", null)来清空cookie,别忘记添加回去
4:setDomain(String domain); -- 设置Cookie的有效域名.
5:setPath(String path); -- 设置Cookie的有效路径.
6:setMaxAge(int maxAge); -- 设置Cookie的有效时间.
三:Cookie的分类有关:
会话级别的Cookie:默认的Cookie.关闭浏览器Cookie就会销毁.
持久级别的Cookie:可以设置Cookie的有效时间.那么关闭浏览器Cookie还会存在. 手动销毁持久性Cookie. setMaxAge(0)---前提是有效路径必须一致.
JSP的简单概述
什么是JSP :Java Server Pages(Java服务器端页面).JSP = Java代码 + HTML的元素 + JSP内置东西
SUN公司为什么推出JSP动态网页开发技术:
SUN公司推出的Servlet技术进行动态网页开发.发现Servlet自身有不足没有办法与ASP,PHP技术竞争.
想在动态网页中输出表单.在Servlet中获得PrintWriter out = response.getWriter();
out.println(“<form action=’’ method=’’>”);
out.println(“</form>”);
SUN又推出了动态的网页开发技术就是JSP.
JSP的执行过程:
JSP会被翻译成Servlet,编译成class进行执行的.
JSP的嵌入Java代码:JSP的脚本元素
<%! %> :翻译成类中的成员部分. 定义变量,定义方法,定义类.Servlet是线程不安全的,尽量少在类中定义成员属性!!
<% %> :翻译成类的service方法内部的内容. 定义变量,定义类,直接写代码块.
<%= %> :翻译成service方法内部的out.print();打印
作者: 名字被人注册了 时间: 2018-6-5 23:16
刘文峰
cookie是一种会话技术,可以将服务器的一些数据存到浏览器上,在一定时间内访问时可以直接从浏览器上拿数据.cookie的有效时间默认为一次会话,即打开浏览器到关闭浏览器的时间,如果只是关闭网页cookie里的数据是不会清空的.
Cookie有几个常用的方法:
new Cookie(cookie的名字,对应的值);创建一个Cookie;
getCookies();获得所有的cookie;
addCookie();添加一个cookie响应给浏览器;
setPath();设置cookie的有效路径;
setMaxAge();设置cookie的有效时间,可以覆盖掉默认的有效时间
向jsp嵌入代码有三种方式:
<%! %>:这里的代码可认为是类中的成员部分
<% %>:可认为是service方法中的代码
<%= %>:相当于向页面输出;
记录上次登录的时间案例:
如果用户是第一次登录时创建一个cookie并将登录的时间的毫秒值(毫秒值需转为字符串)响应给浏览器,如果不是则将cookie的值(取出来的毫秒值是字符串,需转为long类型)取出来,将毫秒值转为一个data对象,最后向页面输出上次登录的时间即可.
作者: Yanmo_ 时间: 2018-6-5 23:25
颜琳琳:
Cookie是一个会话技术,用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程称为是一次会话.
常见的会话技术:
Cookie :将数据保存到客户端浏览器.
Session :将数据保存到服务器端.
Cookie的使用:
向浏览器保存数据:HttpServletResponse有一个方法: addCookie(Cookie cookie);
获得浏览器带过来的Cookie:HttpServletRequest有一个方法:Cookie[] getCookies();
Cookie(String name,String value);
Jsp中嵌入代码有三种方法:<%! %>翻译成类中的成员部分. 定义变量,定义方法,定义类<% %> 翻译成类的service方法内部的内容. 定义变量,定义类,直接写代码块.
<%= %>翻译成service方法内部相当于out.print();
显示用户的上次访问时间案例:
这个案例步骤 1.获得浏览器中带过来的Cookie信息,从Cookie数组中查找有没有指定名称的Cookie 2.判断用户是否是第一次访问: 3. 如果是第一次:显示欢迎,记录当前访问的时间存入到Cookie中. 如果不是第一次:显示欢迎,上一次访问时间,同时记录当前访问的时间存入到Cookie中。(注:其中用到常用方法 getName(); getValue(); setPath(String path); -- 设置Cookie的有效路径. setMaxAge(int maxAge); -- 设置Cookie的有效时间.
Cookie分为:
会话级别的Cookie:默认的Cookie.关闭浏览器Cookie就会销毁.
持久级别的Cookie:可以设置Cookie的有效时间.那么在有效的时间内关闭浏览器Cookie还会存在. 手动销毁持久性Cookie. setMaxAge(0)---前提是有效路径必须一致.)
显示商品浏览记录案例:
这个案例的步骤:1.接收商品的id
* 2.获取浏览器传来的cookie
* 3.获取cookie数组的指定名称
* 4.判断是否的第一次浏览
* 是第一次浏览
* 将该商品的id添加进去,返回给浏览器
* 不是第一次浏览 1-2
* 判断当前商品是否已经在浏览
* 存在,2-1就将当前元素移除,然后再将当前元素添加到最前面
* 不存在
* 判断是否超出最大长度
* 超出了,就将最后那个商品删除,当前元素添加到最前面
* 没有超出,就在将当前元素添加到最前面
* 5.将转换的id值存入Cookie中,将其返回给浏览器
作者: 张述明 时间: 2018-6-5 23:29
张述明
今天主要有两个案例 学习了cookie和对jsp进行简单的了解
首先就是要知道什么是会话技术
会话技术:用户打开浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程称为是一次会话
常见的会话技术:
Cookie : 将数据保存到客户端浏览器
cookie是储存私人数据的
私有的数据,购物信息数据保存在会话技术中
使用会话技术:
[COOKIE]
Cookie 向浏览器保存数据
Void addCookie(Cookie cookie);
获得浏览器带过来的Cookie:
HttpServlet Resquest 有一个方法:
Cookie[] getCookie();
创建 一个Cookie对象
Cookie (String name, String value);
Jsp的嵌入java代码
1.<%! XXXX !%> 翻译成类中的成员部分,定义变量,定义方法,定义类,SERVLET是线程不安全的,尽量少在类中定义成员属性(声明)
2.<% %>:翻译成类的Servlet方法内部的内容,定义变量,定义类,直接写代码块(代码块)
3.<%= Java的表达式 %>翻译成Service方法内部的out.print();表达式后面不能加封号
Cookie 常用的API
Getname()
Getvalue()
SetDomain(String Domain); 设置Cookie的有效域名
setPath(String path) –设置Cookies的有效路径
setMaxAge(int MaxAge)—设置ookie 的有效时间
Cookie的分类有关
会话级别的cookie:默认的cookie.关闭浏览器Cookie 就会销毁
持久级别的Cookie: 可以设置Cookie的有效时间,那么关闭浏览器Cookie还会存在,手动销毁持久性Cookie.setMaxAge(0).—前提是有效路径必须一致
作者: Nevermo 时间: 2018-6-5 23:41
许煜 每日总结
Cookie
生命周期:一次会话(即打开浏览器到关闭浏览器)
数据存储位置 :客户端 也就是存储在浏览器端
数据类型 Cookie(String key,String value);key表示属性名 value表示属性值
从浏览器到servlet,cookie信息包含在请求体中.
获取方法 request.getcookies();返回cookie类型的数组 Cookie[]cookie;
Cookie通过响应 返回添加到浏览器的cookie池当中,原cookie属性名和新返回的cookie属性名相同的话,刷新属性值. 方式 response.addcookie(Cookie cookie);添加cookie回浏览器
JSP Java Server Pages Java服务器端页面
编译过程 jsp页面上的java代码-->servlet-->class文件-->执行
<%! %>: 编译成servlet类中成员部分,定义成员变量,成员方法.
注:servlet线程不安全,应少定义成员属性.servlet是单例类,所有访问使用的都是同一个对象,成员属性在所有访问共享,所以不安全.
<% %>: 编译成servlet类中的service方法内部的内容,可用以定义变量,定义方法,直接写入代码块.
<%= %>: 编译成service方法内部的out.print( )括号中的内容,所有这段代码不需要加;(封号)
Cookie默认是关闭浏览器就销毁 通过setmaxage()设置持续时间来延长cookie的作用时间
Cookie默认路径为当前web项目 可已通过setpath()修改有效路径
手动销毁持久级别cookie setmaxtime=0;
Request和response的一点补充
Request生命周期 访问就创建 response响应结束就摧毁
重定向和转发
重定向更倾向于在某种情况下跳转到指定页面 和转发更倾向于传递数据和信息到第三个页面
浏览记录案例小结
分析步骤 主要核心思想是将数据浏览过的数据的id存放到cookie中即可 按照步骤实现需求即可 其实也不难
最后提一点小tips 有效规避空指针异常 如以下判断例子
1”String”.equls(Cookie.getName( ))
2 Cookie.getValue().equals(“String”)
1和2 只是改变了”String”和value的位置, 两者都是字符串,看起来并没有多大差别.然而实际情况是 2很容易产生空指针异常而1就不会.原因在于基本上null不能调用方法但是null经常可以作为所调用方法的参数,所以写代码时 调用方法的对象应该使用更不容易为null,容易为null的就尽量置于后面.本例中 “String”是被写死的,肯定能调用equals方法而value则存在为null的可能性 ,容易引发空指针异常.
作者: 李思贤126 时间: 2018-6-5 23:55
李思贤: 今天学习了会话技术
什么是会话技术:就是一个用户打开浏览器,访问网站的很多页面,访问完成后将浏览器关闭,这个过程就是一次会话
常见的会话技术:
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()的括号内的东西,它的结果是直接打出这些内容。
作者: 黄兴磊 时间: 2018-6-5 23:56
这几天学了两个域,一个是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)
在说说转发和重定向的区别
重定向是 浏览器向服务器发送一次请求,服务器回应一句,浏览器通过回应的在找到另外一个,在返回给服务器,两次请求,两次响应,地址栏会发生改变,可以跳转到任何地方
转发的话 比如张三去找李四借钱,李四正好穷的开不了锅了,正好和张三关系很好,就找王五借了钱给张三,张三还钱还是给李四,一次响应和一次请求,作用只能在本域中,地址栏不会发生改变
作者: zzx835387607 时间: 2018-6-6 00:27
郑志祥
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添加响应对象中,响应给浏览器
作者: 黄志彬 时间: 2018-6-6 00:29
黄志彬
今天学习了会话,常见的会话技术有两个,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执行的
作者: it小白001 时间: 2018-6-6 00:34
吴俊斌
Cookie常用的API:
setPath(String path);--- 设置有效路径
setMaxAge( int maxAge) --设置Cookie的有效时间
getName()---获取cookie名
getValue()---获取cookie值
jsp中嵌入java文件
<%! %> 在成员方法中,会出现线程问题,不推荐使用
<% %> 在方法中,一般使用它
<%= %> 直接在网页中显示
作者: AsusCoder 时间: 2018-6-6 01:05
本帖最后由 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的虚拟地址,就访问到了服务器。
作者: 柯建程 时间: 2018-6-6 07:49
柯建程
会话技术:
什么是会话技术,用户打开浏览器访问页面,访问完成后将浏览器关闭过程称为一次会话
常见的会话技术
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(),表达式里面不能加分号(表达式)
作者: 郑学馨 时间: 2018-6-6 08:45
郑学馨
案例一:(利用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对象响应回客户端
作者: conan75 时间: 2018-6-6 08:52
陈昆明:cookie储存在用户本地终端上的数据,需要注意其几个重点的API(获得,修改,销毁,设置路径和有效时长)
同名cookie多次创建的话,则会覆盖原先同名cookie的值
网页中的信息传入java代码中,如果是正常标签的话,直接写name和value值就行,如果是超链接的话,name得在路径后面加上?xxx=xxx.
清除cookie时,需要保证有效路径一致(setPath)
作者: 铁木啊童臂 时间: 2018-6-6 08:54
汪志阳
今天主要讲解了会话:用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程称为是一次会话.
会话技术:
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中。
浏览记录的代码案例不是很懂,所以无法总结
作者: rkko 时间: 2018-6-6 09:03
杜石苇几种常用API
Cookie类的主要方法 |
No. | 方法 | 类型 | 描述 |
1 | | 构造方法 | 实例化Cookie对象,传入cooke名称和cookie的值 |
2 | | 普通方法 | 取得Cookie的名字 |
3 | | 普通方法 | 取得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 | | 普通方法 | 获取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 获取上次访问时间
作者: 六道的骸6 时间: 2018-6-6 12:50
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中
作者: 1748341437 时间: 2018-6-6 13:31
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();而我们现在今天主要就用了两个,方法二,和方法三;
作者: hpb199567 时间: 2018-6-6 14:23
何平波
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-6 18:19
陈强
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即可
作者: ...ylq 时间: 2018-6-6 19:21
叶凌青
今天学了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();
作者: 林荣彬 时间: 2018-6-7 12:02
林荣彬
今天主要学习了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();
记录显示用户的上次访问时间的案例还好不是很难,显示商品浏览记录案例感觉特别难,第一思路理不清楚,第二老师的注释看懂了却感觉无从下手
作者: 376091692 时间: 2018-6-7 16:45
凌辉:
Cookie技术的使用】
向浏览器保存数据:
HttpServletResponse有一个方法:
* void addCookie(Cookie cookie);
获得浏览器带过来的Cookie:
HttpServletRequest有一个方法:
* Cookie[] getCookies();
创建一个Cookie对象:
* Cookie(String name,String value);
作者: wahahaha 时间: 2018-6-8 08:39
林恒山
会话技术:打开浏览器--多次请求--关闭浏览器
常用的会话技术: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().
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |