Cookie和Session

Cookie & Session

会话技术
会话:第一次请求发送过来,开始会话
多次请求之后
关闭客户端/浏览器 结束会话
HTTP协议无状态,客户端本身没有有效信息给服务器

Cookie

Cookie:
------------存在于客户端
------------1.服务器接收到请求
------------2.服务器通过response将内容存储到客户端
1.服务器接收参数
2.创建Cookie map
3.把Cookies带到客户端
Cookie默认是会话结束就清除的
但是可以设置Cookie的持久化,持久化时间

//Servlet3Demo
		// 2.创建Cookie map 不支持中文
		Cookie cookie = new Cookie("name", "bao");
		// 设置cookie的持久化时间 单位秒
		cookie.setMaxAge(Integer.MAX_VALUE);
		// 携带路径:访问哪些资源会把cookie携带到服务器
		// 默认携带路径 - 当前目录
		// /web04/hello/Servlet3Demo
		//cookie.setPath("/"); // 当前服务器所有应用
		//cookie.setPath("/web04"); // 当前应用	
		// 结论:只有name和path一致的时候,才算同一个cookie
		// 3.把Cookie带到客户端
		response.addCookie(cookie);
//Servlet4Demo
// 获得文件对应的mimetype类型
		request.getServletContext().getMimeType("jpg");
		// 1.获得客户端通过request携带过来的Cookie
		// 获得客户端带过来的所有的cookie,可能为null
		Cookie[] cookies = request.getCookies();
		if (cookies!=null) {
			for (Cookie c : cookies) {
				System.out.println(c.getName() +" = "+ c.getValue());
			}
		}
		

Session

Session:存在于服务器,存数据 取数据
-----------域对象:
-----------范围:一次会话
1.获得session对象
获得对象:request.getSession(); ->都是域对象,范围小的域对象可以获得范围大的域对象
如果第一次调用,服务器会给客户端先创建一个session,并返回
如果再次调用,直接返回原先创建好的session --通过JSESSIONID
Cookie会保存JSESSION,之后通过JSESSION识别session
Session依赖于Cookie
2.存数据
设置cookie持久化(JseesionID持久化),获得jessionid,session.getId()
3.JSESSIONID持久化
JSESSION

//1.获得session对象
		HttpSession session = request.getSession();
		//2.存数据
		session.setAttribute("age", 19);
		String jessionid = session.getId();
		//3.JSESSION持久化
		Cookie cookie = new Cookie("JSESSIONID",jessionid);
		cookie.setPath(request.getContextPath());
		
		cookie.setMaxAge(Integer.MAX_VALUE);
		response.addCookie(cookie);	

4.取得数据

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
		Object age = session.getAttribute("age");
		response.getWriter().write("age:"+age.toString()+"\n"+session.getId());
		
	
	}
Session生命周期

Session什么时候创建:
第一次调用request.getSession()
什么时候销毁:
注意:不是会话结束session就销毁的
服务器关闭(非正常关闭)
手动销毁 session.invalidate()
超时,默认30分钟 - 总最后一次没有对网站进行请求操作开始计时
在应用内部的web.xml文件中修改
< session-config>
< session-timeout>1最低1分钟
< /session-config>

小结:
ServletContext:服务器全程
session:一次会话 - 登陆后的用户信息,临时购物车,
request:一次请求 - 转发
cookie:存客户端、JESSIONID、用户名、密码
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值