Бесплатный курс по Java: от основ до продвинутого уровня
Работа с сессиями (Session) в Java-cервлетах
Если выбрать все cookies нашего веб-ресурса, то там всегда будет кук с именем SESSIONID и значением идентификатором.
Этот идентификатор уникален для каждого клиента и он отправляется на сервер при запросах клиента и сервер ассоциирует этот уникльный ID с сессией конкретного клиента.
Благодаря этому на сервере мы можем ложить в сессию конкретного клиента различную информацию и эта информация, ясное дело, будет ассоциирована с конкретным клиентом.
Например:
Когда клиент хочет что-то купить в интернет-магазине, он добавляет товар в корзину, при этом за кулисами товар добавляется в сессию клиента. Когда клиент захочет просмотреть корзину сервер выгребает товары из сессии и показывает клиенту.
Сессия обычно живет какой-то промежуток времени и его зачастую можно настроить.
Как простой пример давайте что-нибудь положим в сессию клиента и отправим ее содержимое на страницу клиента.
Пример программы:
import java.util.*;
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.HttpSession;
import javax.servlet.annotation.*;
@WebServlet(“/sessionsservlet”)
public class MyServlet extends HttpServlet{
int i = 0;
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter pw = resp.getWriter();
//getSession – получаем сессию клиента
HttpSession sess = req.getSession();
//допустим клиент положил какойто товар в корзину
String someProductName = “Refrigerator”;
//и можем положить его имя в сессию
sess.setAttribute(“product”, someProductName);
//getAttributeNames – получаем имена аттрибутов
Enumeration attrNames = sess.getAttributeNames();
while(attrNames.hasMoreElements()) {
String attrName = attrNames.nextElement();
//выводим имя аттрибута
pw.println(attrName);
//выводим значение аттрибута
pw.println(sess.getAttribute(attrName));
pw.println(“-------------“);
}
}
}
Проверим работу программы с Session
Скомпилируем файл сервлета и в адресной строке перейдем по адресу /sessionsservlet.