会话及其会话技术【Cookie对象】

1、会话技术:在Web开发中,服务器跟踪用户信息的技术称为会话技术

2、Cookie对象:Cookie是一种会话技术,它用于将会话过程中的数据保存到用户的浏览器中,从而是浏览器和服务器可以更好的进行数据交互。

3、Cookie在浏览器和服务器之间的传输过程:当用户第一次访问浏览器时,服务器会在响应消息中增加Set-Cookie头字段,将用户信息以Cookie的形式发送给浏览器。一旦用户浏览器接受了服务器发送的Cookie信息,就会将它保存在浏览器的缓冲区中。这样,当浏览器后续访问该服务器时,都会在请求消息中将用户信息以Cookie的形式发送给Web服务器,从而使服务器端分辨出当前请求是由哪个用户发出的。

4、Set-Cookie语法格式:

Set-Cookie: user=itcast; Path=/;

其中,user表示Cookie的名称,itcast表示Cookie的值,Path表示Cookie的属性。Cookie必须以键值对的形式存在,其属性可以有多个,但是这些属性之间必须用分号和空格间隔。

5、Cookie API:为了封装Cookie信息,在Servlet API中提供了一个 javax.servlet.http.Cookie类,该类包含了生成Cookie信息和提取Cookie信息各个属性的方法。

5.1、构造方法:Cookie类有且仅有一个构造方法,具体语法格式如下:

public Cookie(java.lang.String name, java.lang.String value)

在Cookie的构造方法中,参数name用于指定Cookie的名称,参数value用于指定Cookie的值。Cookie一旦被创建,它的名称就不能更改,Cookie的值可以为任意值,创建后允许被修改。

6、示例代码:显示用户上次访问时间

package cookie;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LastAccessServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//指定服务器输出内容的编码方式为 UTF-8,防止发生乱码
		response.setContentType("text/html;charset=utf-8");
		//保存用户上一次的访问时间
		String lastAccessTime = null;
		//获取所有的Cookie,并将这些Cookie存放在数组中
		Cookie[] cookies = request.getCookies();
		//遍历Cookie数组
		for(int i = 0; cookies != null && i < cookies.length; i++){
			if("lastAccess".equals(cookies[i].getName())){
				//如果Cookie的名称为lastAccess,则获取该Cookie的值
				lastAccessTime = cookies[i].getValue();
				break;
			}
		}
		//判断是否存在lastAccess的Cookie
		if(lastAccessTime == null){
			response.getWriter().print("您是首次访问本站");
		}else{
			response.getWriter().print("您上次的访问时间是:" + lastAccessTime);
		}
		//创建Cookie,将当前时间作为Cookie的值发送给客户端
		String currentTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
		Cookie cookie = new Cookie("lastAccess", currentTime);
		response.addCookie(cookie);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		this.doGet(request, response);
	}
}

 

你可能感兴趣的:(JavaWeb)