TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #586 4.47K
🤔 Какие различные методы управления сессией в сервлетах знаешь?

В Java сервлетах существует несколько методов управления сессиями, которые позволяют сохранять и отслеживать состояние пользователя между запросами. Вот основные методы:

🟠HTTP сессии (HttpSession): Использует объект HttpSession для хранения информации о сессии на стороне сервера.

Создание и получение сессии:
HttpSession session = request.getSession();


Получение существующей сессии или создание новой:
HttpSession session = request.getSession(true);


Получение существующей сессии, если она есть, иначе возвращает null:
HttpSession session = request.getSession(false);


Сохранение данных в сессии:
session.setAttribute("user", "John Doe");


Получение данных из сессии:
String user = (String) session.getAttribute("user");


Удаление данных из сессии:
session.removeAttribute("user");


Завершение сессии:
session.invalidate();


🟠Cookies (Куки): Использует HTTP cookies для сохранения информации на стороне клиента.

Создание куки:
Cookie userCookie = new Cookie("user", "John Doe");
response.addCookie(userCookie);


Получение куки из запроса:
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if ("user".equals(cookie.getName())) {
String user = cookie.getValue();
// Использование куки
}
}
}


🟠URL Rewriting (Переписывание URL): Добавление идентификатора сессии в URL для отслеживания сессии без использования cookies.

Добавление идентификатора сессии в URL:
String url = response.encodeURL("http://example.com/resource");
response.sendRedirect(url);


🟠Hidden Form Fields (Скрытые поля формы): Использование скрытых полей формы для передачи информации о сессии между запросами.
<form action="nextServlet" method="post">
<input type="hidden" name="sessionId" value="12345">
<input type="submit" value="Submit">
</form>


🟠URL Parameters (Параметры URL): Передача информации о сессии через параметры URL.
html
<a href="nextServlet?sessionId=12345">Next Page</a>

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;

public class SessionServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
session.setAttribute("user", "John Doe");

String user = (String) session.getAttribute("user");
response.getWriter().println("User: " + user);
}
}


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 12
  • ❤ 1
  • 🤔 1
  • 🤯 1
More from @easy_java_ru
  1. Oct 11, 2026🤔 Чем отличается where от having ? WHERE и HAVING используются для фильтрации записей, но…
  2. Oct 10, 2026🤔 На основании какой структуры данных реализован ArrayList? ArrayList реализован на базе…
  3. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
  4. Oct 9, 2026🤔 В чём различие между LeftJoin , RightJoin и InnerJoin? LEFT JOIN, RIGHT JOIN и INNER JO…
  5. Oct 8, 2026🤔 Что такое поток "демон"? Демон-поток — это поток, который: - Работает на фоне (например…
  6. Oct 7, 2026🤔 Может ли Entity-класс быть абстрактным? Да, Entity может быть абстрактным, если он служ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →