1. Что такое печенье? Комментарии сети Байду
Проще говоря, файл cookie - это часть информации, временно хранящейся на вашем компьютере сервером, чтобы сервер мог использовать его для идентификации вашего компьютера. Когда вы просматриваете веб -сайт, веб -сервер сначала отправит небольшое количество информации, чтобы поместить его на компьютер. Когда вы посетите один и тот же веб -сайт в следующий раз, веб -сервер сначала проверит, есть ли какая -либо информация о файле cookie, которую он оставил в прошлый раз. Если это так, пользователь будет оцениваться на основе контента в файле cookie и отправить вам конкретный контент веб -страницы.
2. Где печенье?
3. Можно ли удалить файлы cookie?
4. Принцип реализации cookie
В первый раз, когда я прошу браузер, в магазине печенья браузера, нет печенья,
Первое посещение не содержит куки. Браузер добавляет заголовок запроса cookie к сообщению HTTP -запроса, чтобы перенести файл cookie обратно на веб -сервер. Браузер хранит информационный фрагмент cookie в виде пар «имя/значение» (пары именных значений). В следующий раз, когда вы получите доступ, веб-сервер добавляет заголовок ответа Set-Cookie к ответному сообщению HTTP, чтобы отправить информацию о файле cookie в браузер.
Давайте посмотрим на печенье по реальности
Создайте cookie.jsp, set session = "false" для легкого наблюдения
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8" session = "false"%> <! Doctype html public "-// w3c // dtd html 4.01 Transitional // en"-// W3c // dtd html 4.01 // en "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> insert title здесь. Cookie ("name", "wyf"); response.addcookie (cookie);%> </body> </html>Сначала мы получаем доступ к файлу cookie.jsp, введите его в IE
http: // localhost: 8080/day01/cookie.jsp
В заголовке запроса вы можете видеть, что в первом посещении не есть файлы cookie.
В заголовке ответа он отправляется обратно через Set-Cookie и сохраняется в местном магазине печенья браузера
Мы получаем доступ к файлу COOK.JSP во второй раз, чтобы увидеть, есть ли какие -либо изменения
В заголовке запроса вы можете увидеть, что доступ - это запрос, который носит куки из местной зоны хранения cookie в браузере.
Ниже приведен заголовок ответа:
Давайте используем интерактивный график, чтобы понять механизм файлов cookie:
Давайте посмотрим на создание и приобретение файлов cookie
Код в cookie.jsp означает: если в запросе нет файлов cookie, он будет создан и возвращен. Если запрос содержит файл cookie, он выведет пару клавиш Cookie (Value)
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8" session = "false"%> <! Doctype html public "-// w3c // dtd html 4.01 Transitional // en"-// W3c // dtd html 4.01 // en "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> insert tit request.getCookies (); if (cookies! = null && cookies.length> 0) {for (cookie cookie: cookie) {out.print (cookie.getname ()+":"+cookie.getvalue ());}} else {out.print ("Нет cookie, создается и возвращает"); Cookie ("name", "wyf"); response.addcookie (cookie);}%> </body> </html>Первый визит
Второй визит
Приведенная выше операция заключается в том, что нам нужно снова закрыть браузер. Почему мы отлаживаемся?
Потому что по умолчанию печенье-это печенье на уровне сеанса, хранящийся в ядре браузера, а пользователь удаляется после выхода из браузера. Если вы хотите, чтобы браузер хранил печенье на диске, вам нужно использовать Maxage, который находится в секундах
Давайте посмотрим на постоянные печенья
<%Cookie [] cookie = request.getcookies (); if (cookies! = Null && cookie.length> 0) {for (cookie cookie: cookie) {out.print (cookie.getname ()+":"+cookie.getvalue ());}} inese {out.print ("Нет cookie, созданный и returned kookie cookie uisie ukie cookie); Cookie ("name", "wyf"); cookie.setmaxage (30); response.addcookie (cookie);}%>cookie.setmaxage (30); Установите 30 секунд, поэтому я не сделаю скриншот здесь. Просто скажи, что это под твоим именем. Если у вас нет файлов cookie в первый раз, вы можете создать файлы cookie во второй раз. Если у вас нет файлов cookie во второй раз, вы можете закрыть браузер и доступ в течение 30 секунд. Вы по-прежнему предпринимаете файлы cookie для пары клавиш, вместо предыдущей подсказки у вас нет файлов cookie для печенья для предыдущего. У вас нет печенья для печенья для предыдущего.
Автоматический вход в систему
Login.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"-// w3c // dtd html 4.01 // en «http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> ineert ineert with> type = "text" name = "name"/> <input type = "Отправить" value = "sumit" // </form> </body> </html>
Успех.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8" session = "false"%> <! Doctype html public "-// w3c // dtd html 4.01 Transitional // en"-// W3c // dtd html 4.01 // en "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 ">« Название ». Информация в cookie и установите время name name = request.getparameter ("name"); if (name! = null &&! name.trim (). equals ("")) {cookie cookie = new cookie ("namecookie", name); cookie.setMax (60); cookie и прочитайте информацию пользователя из cookie. Есть, распечатайте приветственное сообщение cookie [] cookies = request.getCookies (); if (cookies! = Null && cookies.length> 0) {for (cookie cookie: cookie) {string cookiename = cookie.getname (); if ("namecookie" .equals (cookiename) {string val = cookie ! = null &&! name.trim (). equals ("")) {out.print ("hello" + name);} else {// Если нет параметров запроса и нет файлов cookie, перенаправить в login.jspresponse.sendredirect ("login.jsp");}%> </body> </html>; В первый раз, когда вы посещаете http: // localhost: 8080/day01/login.jsp, введите значение параметра имени и отправьте его. В Success.jsp сначала получите значение имени отправленного параметра. Если он не является нулевым, затем установите файл cookie напрямую, сохраните значение имени параметра, а затем выведите значение параметра имени на странице. Когда вы посещаете второй раз, вы напрямую вводите http: // localhost: 8080/day01/success.jsp,
С тех пор, как мы несем значение имени параметра, нам нужно получить значение только из значения значения cookie, а затем отобразить выход
Покажите недавнюю историю покупок
books.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"-// w3c // dtd html 4.01 // en "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> Вставьте титул здесь </tit href = "book.jsp? book = javaweb"> javaweb </a> <a href = "book.jsp? book = java"> java </a> <a href = "book.jsp? book = oracle"> oracle </a> <a href = "book.jsp? href = "book.jsp? book = javascript"> javascript </a> <a href = "book.jsp? book = android"> android </a> <a href = "book.jsp? book = jbpm"> jbpm </a> <br> <%// Получить все cookies [] cookies = jet. Книга, если cookiEname is atguigu_book_, он соответствует условиям if (cookies! = Null && cookies.length> 0) {for (cookie c: cookies) {string cookiename = c.getname (); if (cookiename.startswith ("safly")) {// show cookieivalueout.println (c.getValue ()); out.print ("<br>");}}}%> </body> </html>Book.jsp
<%@page import = "java.util.arraylist"%> <%@page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transitional // en" «http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 ">« Название> Название здесь »</title> </head> <broad>: <%= %> <br> <br> <a href = "books.jsp"> return </a> < %string book = request.getParameter ("book"); // Определить файл cookie для удаления cookie [] cookie = request.getcookies (); // Сохранить все cookie, начинающиеся с SaflyArrayList <Cookie> sakcookies = new ArrayList <silie> (Cookie US Savie Savie Savies stisple -Its. cookie, сопоставленные с входящей книгой cookie cookie tempcookie = null; if (cookies! = null && cookies.length> 0) {for (cookie c: cookie) {string cookiename = c.getname (); if (cookiename.startswith ("safly") {bookcookies.add (c); if (c.getValue (). equals (book)) {out.print ("c.getValue (). equals (book)"); tempcookie = c;}}}}} // select 5 книг, отличных от этих 5 книг, если (bookcookies.size ()> = 5 && tempcookie = null) {tempcookie = 5 && tempcookie = null) {tempcookie = 0); //out.print("tempcookie == null ");} // Если это в нем, удалите сам книгкуки, удалите дубликаты печенья в списке и передайте его обратно if (tempcookie! = null) {tempcookie.setmaxage (0); response.addcookie (Tempcookie);} // возвращает книгу, переданную из книг.Давайте поговорим о логических отношениях:
В Books.jsp ниже приведен список книг.
Javaweb
Ява
Оракул
Аякс
JavaScript
Android
JBPM
Я случайным образом выбираю ссылку (например, Javaweb), чтобы перейти к Book.jsp. В первый раз, когда я получил доступ к нему, не было никакого печенья, поэтому я позвонил в следующий метод Book.jsp и создал cookie. На странице книги.
Cookie cook = new cookie ("safly"+book, book); response.addcookie (повар); Теперь мы вернулись в Books.jsp и выбрали книгу Javaweb. Мы выбираем книгу (предполагая Java), а затем прыгаем на Books.jsp. В этот момент мы принесем cookie (оно было передано мне, когда Javaweb был выбран впервые, чтобы получить доступ к Books.jsp). Ключевым значением этого печенья является Saflyjavawebjavaweb, но что? Выбор второй книги Java не поставляется с печеньем (без благосостояния)
Затем введите cooks.jsp
if (cookiename.startswith ("safly")) {bookcookies.add (c);}Итак, поместите Saflyjavawebjavaweb в книжные книги (хранение выбранного списка книг), а затем будет создана Saftyjavajava. Когда вы нажимаете на Renturn, дайте cookies.jsp Reverse
Полем Полем Полем Полем При выборе книги для 3 -го, 4 -го и 5 -го раза это тот же процесс. Если вы выбираете 5 книг в книгах.
C.GetValue (). Equals (Book), чтобы получить выбранную книгу. Нам нужно удалить этот файл cookie, а затем добавить его снова и передать его обратно в код cookie.jsp следующим образом:
tempcookie.setmaxage (0); response.addcookie (Tempcookie);
Если вы выберете 5 книг в книгах.
Давайте просто Tempcookie = bookcookies.get (0); Уберите первую книгу из 5 книг, затем Tempcookie.setMaxage (0); Удалить первое печенье, затем создайте cookie обратно в cookies.jsp
Вот несколько скриншотов:
Действительный путь печенья
cookie2.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"-// w3c // dtd html 4.01 // en "http://www.w3.org/tr/html4/loose.dtd"><html><head><meta http-equiv =" content-type "content =" text/html; charset = utf-8 "> insert title здесь </title> </head> <body> <%cookie = nullie = nullie = nullie = nullie = nullie = nullie = nullie = nullie = nullie = nullie = nullie = nullie = request.getCookies (); if (cookies! = null && cookies.length> 0) {for (cookie cookie: cookie) {if ("cookiepath" .equals (cookie.getname ())) {cookieivalue = cookie.getvalue ();}}} if (cookievalue! null) {out.print (cookievalue);} else {out.print ("Нет указанных cookie");}%> </body> </html>writercookie.jsp
<%@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"-// w3c // dtd html 4.01 // en "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><%//can function as the current directory and subdirectories of the current Справочник, но не может действовать в предыдущем каталоге текущего каталога // может установить объем печенья через setpath,/представляет корневой каталог сайта cookie = new cookie ("cookiepath", "cookiepathvalue"); cookie.setpath (refess.getContextPath ()); cookie2.jsp </a> </body> </html>to cookie2.jsp - это cookie2.jsp, который обращается к верхнему каталогу writercookie.jsp
Выше приведено разработка Javaweb с использованием файлов cookie для создания - получить - настойчивость, автоматический вход, записи покупок и пути функций. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!