JSP cookie详解复习
原创
©著作权归作者所有:来自51CTO博客作者wx5cee84fb43fbb的原创作品,请联系作者获取转载授权,否则将追究法律责任
定义:
- cookie:小甜饼,在互联网上则是指小段的文本信息,由服务器端生成并发送给浏览器保存在客户端(以key/value形式保存到客户端指定目录)。
- 在用户提交的请求中也会包括在客户端保存的所有的cookie对象。
- 用途:通过使用cookie,可以记录用户名和密码,标识用户身份,跟踪重复用户等。
- 注意:在使用cookie时,应保证客户机上允许使用cookie。( 设置工具-Internet选项之隐私选项
常用方法
- 可以使用response对象的 addCookie() 方法将一个cookie对象发送到客户端。
- 可以通过request对象的 getCookies() 方法获取所有的cookie对象的集合;
- 通过cookie对象的 getName() 方法获取指定名称的cookie对象;
- 通过 getValue() 方法获取cookie对象的值。
简单例子:
- 新建两个jsp文件,index为表单,将表单发送到deal.jsp中。
- 当用户是第一次登陆时:忽略其他代码,这里只需看框柱的表单
- 将表单信息发送到deal.jsp文件
代码思路:
- 通过request获取到index中表单的信息。
- 获取用户当前的注册时间
- 创建cookie对象,前者是cookie名字,后者是cookie内容,自己制定一个分隔符。
- 设置Cookie有效时间,cookie.setMaxAge()
- 用响应对象response的addCookie方法,把该cookie添加。
<%
String user = request.getParameter("user");
//代表当前用户登录时间
Date date = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd~HH:mm:ss");
String today = df.format(date);
//生成cookie,前者是cookie名字,后者是cookie内容,自己制定一个分隔符。
Cookie cookie = new Cookie("mrCookie", user+"#"+today);
//设置cookie的有效期
cookie.setMaxAge(15);
response.addCookie(cookie);
%>
- 回到index.jsp页面,当用户第一次登陆时会执行上述两步,当再次登陆时,则应先判断。
代码思路:
- 获取所有cookie
- 初始化用户名和时间
- 如果该cookie不为空,则遍历cookie对象集合,若cookie对象的名字等于deal.jsp文件中设置的,则把值赋给 user和today
- 进行判断,若不为空则说明之前有cookie。
index.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>
<%
//1.获取所有cookie
Cookie[] cookies = request.getCookies();
//登录用户&时间
String user = "";
String date = "";
if(cookies!=null){
//遍历cookie对象集合
for(int i = 0; i < cookies.length; i++){
if(cookies[i].getName().equals("mrCookie")){
//如果cookie对象的名称为mrCookie
user = cookies[i].getValue().split("#")[0];
date = cookies[i].getValue().split("#")[1];
}
}
}
if("".equals(user)&&"".equals(date)){
%>
游客你好,欢迎您初次光临!
<form action="deal.jsp" method = "post">
请输入姓名:<input name = "user" type = "text" value = "">
<input type = "submit" value = "登录">
</form>
<%
} else {
%>
欢迎[<b><%=user %></b>]再次光临
您登陆时间为:<%=date %>
<%
}
%>
</body>
</html>
效果图: