session的工作原理以及与cookie的区别
2018-01-03 21:33
369 查看
Session简介
在web开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),因此,在需要保存用户的数据时,服务器可以将用户的数据写入至session中,当用户可以使用浏览器访问其他程序时,其他程序可以将用户的数据从session中取出,为用户服务。Session实现原理
创建session当用户访问服务器时,如果服务器使用session时,就会为用户创建一个session,在创建session之前,服务器会检查用户发送的请求是否存在session id,如果存在session id,说明用户已经登录过服务器,已经为之创建了session对象,如果不存在,则创建一个新的session对象,并返回客户端。且这个session id 就是cookie。
package com.servlet.study; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * session测试 * @author liumengxi * * 2018-1-3 */ public class sessionDemo extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public sessionDemo() { super(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); HttpSession session = request.getSession(); //将数据存储至session中 session.setAttribute("data", "liumengxi"); //获取sessionId String sessionId = session.getId(); //判断session是不是新创建的 if(session.isNew()){ response.getWriter().print("session创建成功 ----> session id = " + sessionId ); }else{ response.getWriter().print("服务器已经存在Session ----> session id = " + sessionId ); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub this.doGet(request, response); } }
第一次访问服务器时,服务器创建一个新的session,将session id 以cookie形式返回至客户端
再次访问服务器,返回的则是已经存在的session id
Session与Cookie的区别
cookie数据存放在客户的浏览器上,session数据放在服务器上。cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗。
session会在一定时间内存放在服务器上。当访问增多,会比较占用服务器性能。考虑到减轻服务器性能方面,应当使用cookie。
单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点对多保存20个cookie。
将登陆信息等重要信息存放至session中,其他信息如果需要保留,存放在cookie中。
相关文章推荐
- COOKIE和SESSION有什么区别 以及各运行自机制?
- cookie用法以及cookie与session的区别
- session和cookie的用法以及区别
- Cookie、session和localStorage、以及sessionStorage之间的区别
- Cookie、session和localStorage、以及sessionStorage之间的区别
- 描述Cookie和Session的作用,区别和各自的应用范围,cookie、Session工作原理
- 描述Cookie和Session的作用,区别和各自的应用范围,cookie、Session工作原理
- session与cookie的区别以及配置
- Cookie、session和localStorage、以及sessionStorage之间的区别
- session的实现机制以及与cookie的区别
- 为什么要有cookie和session,以及cookie和session的区别
- 谈谈分布式Session的几种实现方式,Session和Cookie的区别和联系以及Session的实现原理
- cookie和session的的区别以及应用场景有哪些?
- cookie与session作用、区别、应用范围、session的工作原理
- POPTEST老李分享session,cookie的安全性以及区别 1
- 为什么会有session 和 cookie ,以及两者的区别
- Cookie和Session以及两者区别
- Cookie和Session的作用,区别和各自的应用范围,cookie、Session工作原理
- POPTEST老李分享session,cookie的安全性以及区别 2
- 描述Cookie和Session的作用,区别和各自的应用范围,cookie、Session工作原理