JSP中的Cookie对象
Cookie对象是一种会话跟踪机制,Cookie对象虽然不是JSP内置对象,使用时候需要显示创建该对象,JSP设计时候经常使用Cookie技术来实现一些特殊的功能。
Cookie对象是web服务器通过浏览器在客户机的硬盘上存储的一小段文本,用来记录用户登录的用户名,密码,登录时间等信息,当用户下次再次登录此网站时候,浏览器根据用户输入的网址,在本地寻找是否存在与该网址匹配的Cookie,如果有,则将该Cookie和请求参数一起发送给处理器做处理,实现各种个性化服务。
下面案例实现保存和读取Cookie。
在cookiesave,jsp中保存,在cookieread.jsp中读取Cookie
<%@ page import="java.net.*" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Date" %><%--
Created by IntelliJ IDEA.
User: nuist__NJUPT
Date: 2021/10/6
Time: 9:12
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Cookie-save</title>
</head>
<body>
<%
Cookie cookie = new Cookie(URLEncoder.encode("姓名","utf-8"), URLEncoder.encode("杰克","utf-8")) ;
cookie.setMaxAge(60*60) ;//设置Cookie在用户机器硬盘上的存活周期是1小时
response.addCookie(cookie) ; //将信息加入到Cookie文件中
String userIp = request.getRemoteAddr() ;
cookie = new Cookie("userIp", userIp) ;
cookie.setMaxAge(10*60) ;
response.addCookie(cookie) ;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日h:m:s") ;
Date date = new Date() ;
String loginTime = sdf.format(date) ;
cookie = new Cookie("longTime",URLEncoder.encode("loginTime", "utf-8")) ;
cookie.setMaxAge(20*60) ;
response.addCookie(cookie) ;
%><br>
<a href = "cookieread.jsp">去读取</a>
</body>
</html>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.net.URLDecoder" %><%--
Created by IntelliJ IDEA.
User: nuist__NJUPT
Date: 2021/10/6
Time: 9:27
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Cookie-Read</title>
</head>
<body>
使用foreach循环读取cookie数组,并输出其中的Cookie:<br>
<%
if(request.getCookies() != null){
for(Cookie cookie : request.getCookies()){
String name = URLDecoder.decode(cookie.getName(), "utf-8") ;
String value = URLDecoder.decode(cookie.getValue(), "utf-8") ;
out.println("cookie属性:" + name + " = "+ value + "<br>") ;
}
}
%>
使用for循环查找某个Cookie<br>
<%
Cookie myCookie [] = request.getCookies() ;
Cookie cookie = null ;
for(int i=0; i<myCookie.length; i++){
cookie = myCookie[i] ;
if(cookie.getName().equals("userIp")){
%>
您好,您上次登录的IP地址为:<%= cookie.getValue()%>
<%
}}
%>
</body>