JavaWeb学习笔记(六)Cookie 和 Session
程序员文章站
2024-02-28 08:46:10
...
上一篇:JavaWeb学习笔记(五)HttpServletRequest和HttpServletResponse
一、cookie
当浏览器被访问,保存一个名为lastLoginTime的cookie,设置其值是访问时间
当下一次访问浏览器时,获取cookie数组,找到名为lastLoginTime的cookie,获取其值
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//解决中文乱码
resp.setContentType("text/html");
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter();
Cookie[] cookies = req.getCookies();
if(cookies!=null){//如果访问过
//取到名为lastLoginTime的cookie的值,输出
for(int i=0;i< cookies.length;i++){
Cookie cookie = cookies[i];
if(cookie.getName().equals("lastLoginTime")){
//Long.parseLong 将 string 参数解析为有符号十进制
long lastLoginTime = Long.parseLong(cookie.getValue());
Date date = new Date(lastLoginTime);
out.write("上一次登录时间:");
out.write(date.toString());
}
}
}else{
out.write("第一次登录");
}
//设置一个名为lastLoginTime的cookie
Cookie cookie = new Cookie("lastLoginTime",System.currentTimeMillis()+"");
resp.addCookie(cookie);
}
在另外的类中删除cookie:
二、Session
存session
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//解决中文乱码
resp.setContentType("text/html");
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
HttpSession session = req.getSession();
session.setAttribute("name","小罗");
String sessionId = session.getId();
if(session.isNew()){resp.getWriter().write("session创建成功ID="+sessionId);}
else{resp.getWriter().write("session已存在ID="+sessionId);}
}
获取session
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
String name = (String)session.getAttribute("name");
System.out.println(name);
}
删除session
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
session.removeAttribute("name");
session.invalidate();
}
也可以在web.xml中设置时间,默认失效
三、区别
1. cookie数据存放在客户的浏览器上,session数据放在服务器上:
对于cookie:WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie里的内容来判断使用者
对于session:用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,所以一旦客户端禁用Cookie,那么Session也会失效。
2. cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
3. session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
4. 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。Session对象没有对存储的数据量的限制,其中可以保存更为复杂的数据类型
上一篇: java应用领域分析
下一篇: 小程序学习(5)