session的工作原理以及与cookie的区别

  • A+
所属分类:Java
session的工作原理以及与cookie的区别

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中。

  • 我的微信
  • 加好友一起交流!
  • weinxin
  • 微信公众号
  • 关注公众号获取分享资源!
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: