Я пытаюсь понять, как использовать сеансы с использованием JSTL, поэтому я начал с того, что пытался установить атрибут сеанса в Jsp и передать этот атрибут другому Jsp в одном приложении и получить его там.Передача атрибутов сеанса через форвард и перенаправление
Я установил атрибут и использовал диспетчер, чтобы перейти к другому сервлету, в другой попытке я использовал sendRedirect для перенаправления запроса на другой сервлет.
Вот первый Jsp (где установлен атрибут):
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<c:set var="session" scope="session" value="test"></c:set>
<%
response.sendRedirect("session.jsp"); // I know I could use the JSTL tag forward
%>
</body>
</html>
В другом Jsp ("session.jsp"):
<%
HttpSession s = request.getSession();
if(s.isNew())
out.print("new session ");
out.print(s.getAttribute("session"));
%>
При использовании sendRedirect результат "test"
, что означает, что сеанс не был вновь создан. Однако, когда я использую форвард (диспетчер), результат равен "new session test"
.
Я не знаю причины такого поведения, хотя было бы разумно, если бы результаты были отменены.
Я не могу поверить, что я пропустил эту точку! Спасибо человеку. –