cookie和session的用法和联系

cookie的运行过程
1.服务器端向客户端写一个cookie
2.客户端在访问服务器端的时候,服务器端向客户端写入cookie,方法:response.sendCookie(Cookie cookie)
3.客户端接收到cookie后存于浏览器缓存中
4.当客户端再次访问服务器时,cookie将作为一个请求发送到服务器端
5.服务器端接受cookie请求
注意事项:
1.cookie的路径问题
在访问服务器资源时,如果创建了cookie,且不设置携带路径,那么该cookie信息会在访问产生该cookie的web资源所在的路径都携带cookie信息
所以在创建cookie时,可以为cookie设置携带该cookie的路径
方法:cookie.setPath(“要携带该cookie的资源路径”),此方法表示只在访问该路径下的资源时才会携带cookie
cookie.setPath("/")表示在访问该服务器下的所有的资源时都会携带该cookie
cookie.setPath("/WEB16")表示在访问WEB16这个应用工程时都会携带cookie
2.cookie的持久化问题
当然cookie也可以存在更长的时间,上述为会话级别的cookie,当浏览器关闭后cookie信息就会销毁
可以将cookie进行持久化,存储于客户端的硬盘文件中,通过cookie.setMaxAge(int seconds)方法进行持久化,
cookie信息则会在硬盘上保存seconds秒
3.删除一个cookie
如果要删除一个cookie,则需要设置一个相同的名字的cookie,并且与要删除的cookie的Path相同,
将这个cookie的时间设置为0,最后response.addCookie(cookie),即删除原来的cookie
下面用cookie返回上一次访问时间:

package lastLoginTime;

import java.io.IOException;
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;

/**
 * Servlet implementation class lastLoginTime
 */
public class lastLoginTime extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public lastLoginTime() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//显示用户上一次登陆的时间
		//1.客户端先访问服务器,该servlet记住这次访问的时间
		Date date = new Date();
		String datetime = date.toString();
		//2.将当前时间以cookie的形式写给客户端
		Cookie lastTime = new Cookie("lastTime",datetime);
		response.addCookie(lastTime);
		//3.获取客户端这个携带名字叫lastTime的这个cookie,并获得时间,显示给用户
		//获取客户端cookie信息的数组
		Cookie[] cookies = request.getCookies();
		if(cookies!=null)
		{
			for(Cookie cookie : cookies)
			{
				String cookieName = cookie.getName();
				if(cookieName.equals("lastTime"))
				{
					String lasttime = cookie.getValue();
					response.getWriter().write(lasttime);
				}
			}
		}
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

session的用法:
session技术 session也是域对象,作用范围在一次会话当中,
session技术是将数据存储在服务器端的技术,会为每个客户端创建一块内存空间存储客户数据
session 技术是基于cookie的,cookie技术会帮助我们存储session编号-----JESSIONID(唯一性标识)
怎样创建专属于一个客户端的session区域?request.getSession();
怎样向session区域中存取数据?
session对象的生命周期
第一次执行request.getSession()时创建
销毁:服务器关闭时销毁
session过期或者失效,默认30分钟,可通过Tomcat文件夹下Conf下web.xml配置
从何时开始计时这30分钟?
从不操作服务器的资源开始计时,默认从客户端的最后一次操作开始计时

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值