Cookie(客户端,不是内置对象)Cookie是由服务端生成的,在发送给客户端保存。相当于本地缓存作用。
作用:提高访问服务端的效率,但是安全性较差
Cookie 是存储在客户机的文本文件,它们保存了大量轨迹信息。在 Servlet 技术基础上,JSP 显然能够提供对 HTTP cookie 的支持。
应用:
- 服务器脚本发送一系列 cookie 至浏览器。比如名字,年龄,ID 号码等等。
- 浏览器在本地机中存储这些信息,以备不时之需。
- 当下一次浏览器发送任何请求至服务器时,它会同时将这些 cookie 信息发送给服务器,然后服务器使用这些信息来识别用户或者干些其它事情。
注意:
a:cookie不是内对象,要使用必须new
b:服务端会自动生成一个(服务端自动new一个cookie)name=JSESSIONID的cookie并返回给客户端
常用方法
序号 | 方法 & 描述 |
---|---|
1 | public void setMaxAge(int expiry) 设置 cookie 有效期,以秒为单位,默认有效期为当前session的存活时间 |
2 | public String getName() 返回 cookie 的名称,名称创建后将不能被修改 |
3 | public String getValue() 获取cookie的值 |
那么Cookie是怎么由服务端生成的,在发送给客户端保存?
步骤:
1:服务端准备Cookie——Cookie cookie = new Cookie(“key”,“value”); 调用 cookie 的构造函数,使用一个 cookie 名称和值做参数,它们都是字符串。
2:增加Cookie:response.addCookie();
3:页面跳转:
4:客户端获取cookie:request.getCookies();
演示:
getCookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//客户端
Cookie []cookies=request.getCookies();//4:客户端获取cookie:request.getCookies();
for(Cookie cookie:cookies)
out.println(cookie.getName()+"...."+cookie.getValue());
%>
</body>
</html>
addCookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//服务端
Cookie cookie1=new Cookie("zlj","1223345678");//1:服务端准备Cookie
Cookie cookie2=new Cookie("lqx","111");
response.addCookie(cookie1);// 2:增加Cookie:response.addCookie();
response.addCookie(cookie2);
//页面跳转
response.sendRedirect("getCookie.jsp");//3:页面跳转
%>
</body>
</html>
结果
这个结果说明:服务端会自动生成一个(服务端自动new一个cookie)name=JSESSIONID的cookie并返回给客户端
演示:记住用户名字,第一次登陆会记住你得名字,当你第二次登陆时,名字就还在那里
logging.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%!
String uname;
%>
<%
boolean flag=false;
Cookie []cookies=request.getCookies();
for(Cookie cookie:cookies)
if(cookie.getName().equals("uname")){
uname=cookie.getValue();
flag=true;
}
if(flag){
out.println("uname:"+uname);
}else{
out.println("Cookiey已失效");
}
%>
<form action="check.jsp" method="post">
用户名:<input type="text" name="uname" value="<%=uname%>"></br>
密码:<input type="password" name="upwd"></br>
<input type="submit" value="登录"></br>
</body>
</html>
check.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String name= request.getParameter("uname");
String pwd= request.getParameter("upwd");
Cookie cookie=new Cookie("uname",name);
response.addCookie(cookie);
response.sendRedirect("remember.jsp");
%>
</body>
</html>
remember.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
结果