JSP 学习笔记
Cookie对象
Cookie对象概念
浏览器和Web服务器是使用HTTP协议通信,当某用户发出页面请求,Web服务器只进行简单响应,就关闭与该用户的连接。对于用户请求无论是否第一次提出,服务器都会作为第一次来处理,显然不利于提高程序运行效率。为了解决这个bug,Netscape 开发出Cookie这个有效的工具用以保存识别用户信息。Cookie是一种Web服务器借助浏览器可在访问者硬盘上存取信息的技术。Cookie具有下面优势:
Cookie能跟踪统计特定访问者的访问次数、最后访问时间和访问者进入站点的路径。
Cookie能统计网站上各类的广告点击量,帮助网站经营者决策投放收效更好的广告,从而可以更精确的投放广告。
Cookie可以方便用户在有效期未到时可以不输入密码和用户名就可浏览站点的其他页面。
Cookie能帮助站点统计用户个人资科以实现各种各样的个性化服务。
创建Cookie
语法格式:
<%
Cooie cooike = new Cookie("key","value");
cookie.setMaxAge(number);
reponse.addCookie(cookie);
%>
说明:
JSP是调用Cookic对象相应的构造函数Cookie(name,value),用合适的名字和值来创建Cookie。初始化有两个参数,第一个参数cookieName定义了Cookie的名字,后一个参数Value,是一个字符串,定义了Cookie的内容,也就是我们希望网页在用户的机器上标识的文件内容。
cookic.setMaxAge(10),调用了Cookie中的sctMaxAge方法,设定Cookie在用户机器硬盘上的存活期为10秒。一个Cookie在用户的硬盘里面存在的时间并不是无限期的,在建 立Cookie对象的时候,必须指定Cookie的存活期。超过了这个存活期后,Cookie文件就不再起作用,会被用户的浏览器自行删除。如果希望用户在下次访问这个页面的时候,Cookie文件仍然有效而且可以被网页读出来的话,可以将Cookie的存活期设置稍微长一些。比如cookie.setMaxAge(3652460*60)可以让Cookie文件在一年内有效。
在JSP中,程序是通过cookie.setXXX设置各种属性,用cookie.getXXX读出cookie的属性,Cookie的主要属性及功能见下表
Cookie对象常用方法:
方法 | 描述 |
---|---|
int getMaxAge() | 返回Cookie过期之前的最大时间,以秒计算 |
String getName() | 返回Cookie的名字 |
String getPath() | 返回Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录以及其子目录下所有页面 |
boolean getSecure() | 如果浏览器通过安全协议发送Cookies将返回true值,如果浏览器使用标准协议则返回false值 |
int getVersion() | 返回Cookie所遵从的协议版本 |
void setDomain(String pattern) | 设置Cookie中Cookie适用的域名 |
void setMaxAge(int expirt) | 以秒计算,设置Cookie过期时间 |
void setSecure(boolean falg) | 指出浏览器使用的安全协议,例如Https或者SSL |
void setValue(String newValue) | Cookie创建后设置一个新的值 |
示例学习:
创建新的JSP文件(Cooike.jsp)作为登录页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>请输入用户名</title>
</head>
<body>
<form action ="handle_cookie.jsp" method="post">
<input type="text" name="username">
<input type="submit" value = "提交">
</form>
</body>
</html>
新建JSP文件(handle_cookie.JSP)来设置cookie参数
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>请输入用户名</title>
</head>
<body>
<form action ="handle_cookie.jsp" method="post">
<input type="text" name="username">
<input type="submit" value = "提交">
</form>
</body>
</html>
新建JSP文件(read_cookie.jsp)来读取cookie值
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>读取cookie</title>
</head>
<body>
<%
String username = null;
Cookie cookie = null;
Cookie cookies[]=request.getCookies();
if(cookies != null)
{
for(int i=0;i<cookies.length;i++)
{
cookie = cookies[i];
if(cookie.getName().equals("username"))
{
username=cookie.getValue();
}
}
}
if(username != null)
{
out.println(username+"有效期为10s");
}else{
out.println("cookie已经失效"+username);
}
%>
</body>
</html>
运行结果:
本次学习失败,待解决!