Cookie与Session

本文深入解析了Cookie与Session的工作原理及API使用,包括Cookie如何在客户端存储信息,以及Session如何在服务器端跟踪用户状态,详细介绍了两种技术在Web开发中的应用。

什么是cookie与session

cookie

在web应用中,当用户通过浏览器访问web服务器时,服务器会给客户发送一些请求,这些请求信息都保存在Cookie中。这样,当浏览器再次访问服务器时,都会在请求头中将cookie包含在其中一同发给服务器方便服务器再次响应。

session

当浏览器访问web服务器时,servlet容器就会创建一个session对象和ID属性,其中,session对象就是客户的数据,而ID就是用来查找客户session的唯一值。session对象存放在服务器端,ID通过cookie的方式发送到客户端中。当客户端中的session没有过去时,再次访问此网站时,会在请求头中以cookie的形式发送sessionID从而服务器通过该sessionID识别客户,调取相应的session

cookie API

方法声明功能描述
String getName()用于返回Cookie的名称
void setValue(String newValue)用于为Cookie设置一个新的值
String getValue()用户返回cookie的值
void setMaxAge(int expiry)用于设置Cookie在浏览器客户机上保存有效的秒数
int getMaxAge()用户返回cookie在浏览器客户机上保存有效的秒数
void setPath(String url)用于设置该cookie项的有效目录路径
String getPath()用于返回该Cookie项的有效目录路径
void setDomain()用于设置该cooki的有效域(访问域名)
String getDomain()用于返回该cookie的有效域
void setVersion(int v)用于设置该cookie采用的版本协议
int getVersion()用于返回该cookie采用的版本协议
void setComment(String purpose)用于设置该cookie项的注解部分
String getComment()用于返回该cookie项的注解部分
void setSecure(boolean flag)用于设置该cookie项是否只能使用安全的协议传送
boolean getSecure()用于返回该cookie项是否只能使用安全的协议传送
显示用户上一次访问时间
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		String lasttime = null;
		Cookie[] cookie = request.getCookies();
		for (int i = 0; cookie!=null&&i < cookie.length; i++) {
			if ("lasttime".equals(cookie[i].getName())) {
				lasttime = cookie[i].getValue();
				break;
			}
		}
		if (lasttime == null) {
			out.print("您是第一次访问本网站");
		}else {
			out.println("您上次访问的时间是:"+lasttime);
		}
		String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
		Cookie cookie1 = new Cookie("lasttime", time);
		response.addCookie(cookie1);
	}
session API
方法声明功能描述
String getId()用于返回与当前HttpSession对象关联的会话标识号
long getCreationTime()返回Session创建的时间,这个时间是创建Session的时间与1970年1月1日0:0:0之间时间差表示形式
long getLastAccessedTime()返回客户端最后一次发送与session相关请求的时间,这个时间是发送请求的时间与1970年1月1日00:00:00之间时间差表示形式
void setMaxlnactiveInterval(int interval)用于设置当前HttpSession对象可空闲的以秒为单位的最长时间,也就是修改当前会话的默认超时间隔
boolean isNew()判断当前HttpSession对象是否是新创建的
void invalidate()用于强制使Session对象无效
ServletContext getServletContext()用于返回当前HTTPSession对象所属的web应用程序对象,即代表当前web应用程序的servletcontext对象
void setAttribute(String name,Object value)用于将一个对象与一个名称关联后存储到当前的HttpSession对象中
String getAttribute()用于从当前HttpSession对象中返回指定名称的属性对象
void removeAttribute(String name)用于从当前HttpSession对象中删除指定名称的属性
Session超时管理
<!-- 设置session的默认超时时间 -->
<!-- 当tomcat中的这个sessionID超过30分钟未使用则删除这个sessionID -->
<session-config>
	<session-timeout>30</session-timeout>
</session-config>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值