版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yaonga/article/details/86680315
Cookie和Session实现
1.核心概念
Cookie是存在于浏览器的文本,用于保存用户的登录密码等数据;
Session存在于服务端,用于跟踪用户登录状态等;
2.Cookie实现
Cookie[] cookies = request.getCookies();
if(cookies!=null&&cookies.length>0)
{
for (Cookie cookie:cookies)
{
System.out.println(cookie.getName()+":"+cookie.getValue());
}
}else
{
Cookie cookie = new Cookie("name", "yalong");
cookie.setMaxAge(120);
response.addCookie(cookie);
}
在servelt中通过response给浏览器设置Cookie数据。
3.Session实现
String user = request.getParameter("user");
String password = request.getParameter("password");
HttpSession session = request.getSession();
String username = (String) request.getSession().getAttribute("user");
if(username ==null || username.equals(""))
{
if("yalong".equals(user)&&"yalong921".equals(password))
{
session.setAttribute("user", user);
session.setAttribute("password", password);
response.getWriter().print("登录成功");
}else
{
response.getWriter().print("首次登录失败");
}
}else
{
response.getWriter().print("当前处于登录状态");
}
底层原理:服务器为每一个访问的浏览器分配一个唯一的id,并且会将这个jsessionid以cookie的形式发送到浏览器(服务器调用了getSession()方法才会返回jsessionid到浏览器,并不是每个请求过来都返回),浏览器再次访问时就会把这个jsessionid发送到服务器,服务器就能找到session对象。
如果浏览器再次访问(请求消息头中带有jessionid)时,服务器能找到对应的sessionid,则服务器不再返回sessionid到浏览器。