how2j.cn

步骤 1 : cookie 在平时生活中的运用   
步骤 2 : 什么是cookie   
步骤 3 : setCookie.jsp   
步骤 4 : getCookie.jsp   
步骤 5 : cookie原理示意图   

步骤 1 :

cookie 在平时生活中的运用

有的网站,登陆的时候,会出现一个选项,问你是否要一周内或者一个月内保持登陆状态。
如果你选了,那么一周之内,都不需要再输入账号密码。
这个功能,就是靠cookie来实现的
步骤 2 :

什么是cookie

Cookie是一种浏览器和服务器交互数据的方式。

Cookie是由服务器端创建,但是不会保存在服务器

创建好之后,发送给浏览器。浏览器保存在用户本地

下一次访问网站的时候,就会把该Cookie发送给服务器。
步骤 3 :

setCookie.jsp

在web目录下创建一个文件 setCookie.jsp

Cookie c = new Cookie("name", "Gareen");

创建了一个cookie,名字是"name" 值是"Gareen"

c.setMaxAge(24 * 60 * 60);

表示这个cookie可以保留一天,如果是0,表示浏览器一关闭就销毁

c.setPath("127.0.0.1");

Path表示服务器的主机名,只有浏览器通过这个主机名访问服务器的时候,才会提交这个cookie到服务端

response.addCookie(c);

通过response把这个cookie保存在浏览器端

访问地址:

http://127.0.0.1/setCookie.jsp


通过HTTP调试工具也可以在Cookies这一栏看到
setCookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="javax.servlet.http.Cookie"%> <% Cookie c = new Cookie("name", "Gareen"); c.setMaxAge(60 * 24 * 60); c.setPath("127.0.0.1"); response.addCookie(c); %> <a href="getCookie.jsp">跳转到获取cookie的页面</a>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" import="javax.servlet.http.Cookie"%>

<%
	Cookie c = new Cookie("name", "Gareen");
	c.setMaxAge(60 * 24 * 60);
	c.setPath("127.0.0.1");
	response.addCookie(c);
%>

<a href="getCookie.jsp">跳转到获取cookie的页面</a>
步骤 4 :

getCookie.jsp

在web目录下创建文件getCookie.jsp
然后访问网页:

http://127.0.0.1/getCookie.jsp



Cookie[] cookies = request.getCookies();

表示获取所有浏览器传递过来的cookie

if (null != cookies )

如果浏览器端没有任何cookie,得到的Cookie数组是null

for (int d = 0; d <= cookies.length - 1; d++) {
out.print(cookies[d].getName() + ":" + cookies[d].getValue() + "<br>");
}

遍历所有的cookie

可以看到name:Gareen,这个在setCookie.jsp中设置的cookie

注; JSESSIONID 这个不是我们自己设置的cookie,这是tomcat设置的cookie,会在下一章session的学习中用到
通过HTTP调试工具也可以看到浏览器在请求信息里提交了这个Cookie。
getCookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="javax.servlet.http.Cookie"%> <% Cookie[] cookies = request.getCookies(); if (null != cookies) for (int d = 0; d <= cookies.length - 1; d++) { out.print(cookies[d].getName() + ":" + cookies[d].getValue() + "<br>"); } %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" import="javax.servlet.http.Cookie"%>

<%
	Cookie[] cookies = request.getCookies();
	if (null != cookies)
		for (int d = 0; d <= cookies.length - 1; d++) {
			out.print(cookies[d].getName() + ":" + cookies[d].getValue() + "<br>");
		}
%>
步骤 5 :

cookie原理示意图

cookie原理示意图


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-11-10 还是不太明白这个out.print的用法,
我会努力学JAVA的
关于 J2EE-JSP-cookie 的提问
这个out不是System类的静态变量么,而且是类属性的好像。








答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2018-10-16 第一条cookie读不出来,只能读出来第二条
时间会说真话
关于 J2EE-JSP-cookie 的提问



详见结果截图和代码
     setCookie.jsp
<%
    Cookie c = new Cookie("name", "Gareen");
    Cookie a = new Cookie("age","17");
    c.setMaxAge(60 * 24 * 60);
    c.setPath("127.0.0.1");
    response.addCookie(c);
    response.addCookie(a);
%>
     getCookie.jsp
Cookie[] cookies = request.getCookies();
	if (null != cookies){
		for (int d = 0; d <= cookies.length-1 ; d++) {
			out.print(cookies[d].getName() + ":" + cookies[d].getValue() + "<br>");
			}
	}else{}	

							


1 个答案

Marcus_w 答案时间:2018-10-18
path有问题吧,可能跟你主机名不一样,可以试一下request获取主机名或者不写看看




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2017-11-16 c1.setMaxAge(60 * 60 * 24);站长我看了调试工具,为什么显示16个小时过期?????
2017-09-07 内置对象的方法不能用
2017-09-05 qq浏览器的截图
2017-09-05 用不同浏览器打开setCookie.jsp页面的cookie不同
2017-09-03 一个cookies只能设置一个key—value吗
2017-07-15 Cookie默认值问题
2017-06-07 尝试添加多个Cookie
2017-05-23 文章描述问题
2017-04-12 步骤四中的示例代码有错误




提问之前请登陆
关于 J2EE-JSP-cookie 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 902680467
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图