Сессии и файлы cookie

задняя часть база данных сервер

  Поскольку протокол http не имеет состояния, необходимо использовать сеанс для записи состояния клиента, например сценарий корзины покупок, сервер создает специальный сеанс, чтобы пользователь мог идентифицировать и отслеживать пользователя.
   Существует множество способов сохранения сессий на сервере, включая память, базу данных и файлы.
  Рассмотрите возможность переноса сеансов при кластеризации. На крупных веб-сайтах будут выделенные кластеры серверов сеансов для сохранения сеансов пользователей. В настоящее время сеансы обычно хранятся в памяти.


Как сервер идентифицирует конкретного клиента?

   Для каждого HTTP-запроса клиент отправляет на сервер ответный файл cookie. Большинство приложений используют файлы cookie для отслеживания сеансов.
Когда сессия создается в первый раз, сервер сообщает клиенту в протоколе http, что id сессии нужно записать в класс cookie, после каждого запроса id будет отправляться в базу данных, и я буду знать кто ты.
   Если ваш браузер отключает файлы cookie, вы можете использовать перезапись URL для отслеживания сеанса.


Сценарий входа в файл cookie, после того, как вы вошли на веб-сайт один раз, при втором посещении не требуется вводить пароль учетной записи для автоматического входа, то есть запись информации в файл cookie, когда вы посещаете веб-сайт, сценарий страница веб-сайта считывает файл cookie и автоматически заполняет имя пользователя для вас

Cookie

механизм cookie

содержимое куки

CookieAPI

Создание и отправка файлов cookie

@WebServlet("/sendCookie")
public class sendCookie extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//创建cookie
		Cookie cookie=new Cookie("name","zqf");//只能存字符串,和域对象不一样
		//发送cookie到客户端
		response.addCookie(cookie);
	}
}

При первом посещении видно, что заголовок ответа содержит файл cookie, который отправляется клиенту.

При втором посещении вы можете увидеть, что заголовок запроса также содержит файлы cookie, которые сервер отправляет клиенту и сохраняет



Куки на уровне сеанса, а это значит, что браузер начинает закрываться, а куки исчезают при закрытии браузера, но иногда почему то не исчезают, потому что для куки установлено время сохранения на клиенте

Установить время сохранения куки

 cookie.setMaxAge(10*60*1000);
 设置cookie在浏览器中存储时间为10分钟,到时间自动删除cookie信息

Установить путь переноса файлов cookie

cookie.setPath("/");访问服务器下所有资源都携带这个cookie
cookie.setPath("/项目名/当前页面");则访问当前页面才携带cookie

Удалить файлы cookie.

@WebServlet("/removeCookie")
public class removeCookie extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//删除客户端保存name-xxx的cookie信息
		Cookie cookie=new Cookie("name","");
		//设置时间为0
		cookie.setMaxAge(0);
		response.addCookie(cookie);
	}
}

получить печенье

@WebServlet("/getCookie")
public class getCookie extends HttpServlet {
	//获得cookie的值
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Cookie[] cookies = request.getCookies();
		for(Cookie cookie:cookies) {
			String cookieName = cookie.getName();
			if(cookieName.equals("name")) {
				String cookieValue = cookie.getValue();
				System.out.println(cookieValue);
			}
		}
	}
}

Session

Технология сеанса основана на Cookie, Технология Cookie Магазины сеанса Номер сеанса --jsessionId

Механизм сеанса

session是一种服务度机制,类似散列表结构来存储用户数据
浏览器第一次向客户端发送请求时,服务器会自动生成一个session和sessionid
sessionid唯一标识这个session
服务器响应时把sessionid发送给浏览器
浏览器第二次向服务器发送请求时就会携带这个sessionid
服务器通过这个id找到对应的session获取用户数据

недостатки сеанса

cookie被禁止,session也会被禁止,可以通过url重写摆脱托cookie

Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份
Session数据放在服务器上,Cookie数据存放在客户的浏览器上

жизненный цикл сеанса

жизненный цикл

创建    
    第一次执行request.getSession()时创建
销毁
    服务器(非正常)关闭
    Session过期
        tomcat下web.xml自动配置
    手动销毁
        session.invalidate();

Когда сервер отключается, сеанс уничтожается?

不对,有时间的,看session是否过期

Разница между сеансом и файлом cookie

session保存在服务器,cookie保存在客户端
session中保存的时对象,cookie保存的是字符串
session不能区分路径,同一个用户访问一个网站期间,所有的session在任何一个地方都可以访问
cookie如果设置路径,则在某些地方不能访问
session需要借助cookie才能正常工作,如果禁用cookie,session则失效
客户端会在发送请求的时候,自动将本地存活的cookie封装在信息头发送给服务器

Сценарии приложений сеанса и файла cookie

session上下文机制,针对每一个用户,通过sessionid来区分不同客户
session是以cookie或url重写为基础的,默认使用cookie实现,系统会创造一个名为jsessionid的输出cookie
重要状态走session,不重要走cookie,登陆信息用session,购物车用cookie