Бесплатный курс по Java: от основ до продвинутого уровня
Работа с Cookies в Java-cервлетах
Cookies это данные, которые генерируются сервером и хранятся в браузере клиента.
Браузер клиента возвращает эти данные обратно на сервер когда клиент делает запрос из того же веб-ресурса.
Как пример, можно привести автоматический ввод логина и пароля когда пользователь заходит на страницу для входа в учетную запись, на которой он уже вводил свои логин и пароль. Думаю всем это должно быть знакомо.
Раскроем этот пример получше:
Когда клиент вводит логин и пароль на каком-то веб-ресурсе они отправляются на сервер и там сохраняются.
Сервер генерирует некий номер, который будет принадлежать только конкретно этому клиенту и отправляет сгенерированный номер клиенту, который сохраняется у него в браузере (в куках) и когда клиент повторно заходит на этот веб-ресурс браузер отправляет сохраненные куки с номером в них на сервер.
Сервер проверяет этот номер и по этому номеру отправляет клиенту его логин и пароль, и клиент не должен самостоятельно их опять вводить.
Как простой пример, давайте отправим клиенту какой-нибудь куки, чтобы он сохранился у него в браузере, и клиент отправит этот куки обратно на сервер, и сервер отправит клиенту эти куки для вывода на странице у клиента.
Пример программы:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.annotation.*;
@WebServlet(“/cookieservlet”)
public class MyServlet extends HttpServlet{
int i = 0;
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter pw = resp.getWriter();
//Также можем создать куки передав имя и значение
//кука как параметры конструктора класса Cookie.
Cookie cookie=new Cookie(“someCookieName”,”someCookieValue”);
//Довольно важный метод setPath, который следует упомянуть.
//Делает так чтобы этот куки был доступен только
//указанной аргументом странице нашего веб ресурса.
//То есть получить данный куки другой сервлет не сможет.
cookie.setPath(“/cookieservlet”);
//и отправить его клиенту в браузер
resp.addCookie(cookie);
//с помощью метода getCookies можем получить все куки,
//которые отправляем на клиент при запросах
//к нашему веб ресурсу.
Cookie[] allcookies = req.getCookies();
for(Cookie somecookie : allcookies){
//с помощью методов getName(), getValue()
//можем получить имя и значение куков веб-ресурса.
//Отправляем клиенту его куки для вывода.
pw.println(somecookie.getName()+” = ”
+somecookie.getValue());
}
}
}
Проверка работы программы с Cookies
Скомпилируем файл сервлета и в адресной строке перейдем по адресу /cookiesservlet.
Как видим, куки клиента были успешно отправлены сервером клиенту для вывода.
Можно также увидеть кук JSESSIONID. Что это за кук разберем в следующем уроке.
Также справа можно увидеть, что отправленный кук someCookieNameхраниться у клиента в браузере. Чтобы посмотреть хранящиеся куки в браузере Chrome нужно нажать на кнопку F12.
Эти куки клиент теперь может всегда посмотреть в браузере когда заходит на страницу данного сервлета и он будет там существовать пока клиент не очистит куки браузера.
Session в Java: как использовать сессии для хранения данных клиента. Пример работы с HttpSession, атрибутами и их применением в корзине интернет-магазина. Уникальный SESSIONID для каждого пользователя.