Servlet之Cookie、Session

Servlet

Cookie

存储在客户端的对象,存数据(key-value)
不安全,存数据有限-------4kb

  1. 通过服务器的程序Servlet,把Cookie对象存到客户端
@WebServlet("/CookieServlet")
public class CookieServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//cookie存储的数据只能是字符串
		Cookie cookie1 = new Cookie("name1","admin1");
		Cookie cookie2 = new Cookie("name2","admin2");
		cookie2.setMaxAge(1800);//设置时间,时间单位是秒
		//添加cookie到客户端
		resp.addCookie(cookie1);
		resp.addCookie(cookie2);
	}
	
}
@WebServlet("/GetCookieServlet")
public class GetCookieServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException ,IOException {
		Cookie[] cookies = req.getCookies();
		if(cookies != null) {
			for(Cookie c : cookies) {
				if(c.getName().equals("name1")) {
					resp.getWriter().write(c.getValue());
				}
				if(c.getName().equals("name2")) {
					resp.getWriter().write(c.getValue());
				}
			}
		}
	}
}
  1. cookie生命周期
    2.1 暂时性的cookie(没有设置时间)
    浏览器关闭即失效
    2.2 永久性cookie(通过setMaxAge设置了时间)
    过了时间失效
    2.3 调用setMaxAge(0);即失效

Session

服务器和客户端连续的会话(请求响应)过程,需要管理数据,这个过程中对数据的管理叫会话管理

  1. 获取session对象
    request.getSession(); 和 request.getSession(true); 都是第一次被调用时创建session对象,在session没有失效期间,再次被调用时返回session对象
    request.getSession(false);是第一次被调用时创建session对象,在session没有失效期间,再次被调用时返回null
  2. session的常用方法
@WebServlet("/SessionServlet")
public class SessionServlet extends HttpServlet{
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		HttpSession session = req.getSession();
		System.out.println(session.isNew());
		System.out.println(session.getId());
		System.out.println(session.getMaxInactiveInterval());
		System.out.println(new Date(session.getLastAccessedTime()));
	}
}
  1. session存储数据
    setAttribute(); getAttribute(); removeAttribute();
  2. session的工作原理
    创建session对象时,会有一个唯一的id(JSESSIONID)标识当前session,当响应客户端时,会把JSESSIONID存放到Cookie中,当客户端再次请求服务器时,JSESSIONID会作为请求头信息的一部分返回到服务器,服务器根据JSESSIONID判断session对象,如果找到了对应的session,则返回该session对象,如果没找到,则创建一个新的session对象
  3. session失效时间
    5.1 默认是30分钟没有访问就失效
    5.2 设置session失效时间
    session.setMaxInactiveInterval(1800);//单位是秒
    5.3 无条件让session失效,调用该方法,session就失效
    session.invalidate();

总结

request:一次请求
session:一次会话
application:整个应用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值