Есть некоторые большие различия между redirect
и forward
. Эта статья поможет вам лучше понять вашу проблему.
Некоторые вещи, которые следует иметь в виду из статьи:
FORWARD
1) Объекты запроса и ответа останутся тем же объектом после пересылки. Объекты области запроса будут по-прежнему доступны (поэтому, если вы попытаетесь добавить "/", вы получите статус 405 - он попытается перенаправить вас на сервлет "/ second", но единственный переопределенный запрос - GET
)
REDIRECT
1) Запрос перенаправлен на другой ресурс
2) A создается новый запрос
Поэтому вместо использования rd.forward
я бы предложил вам использовать метод sendRedirect()
из HttpServletResponse
класса.
response.sendRedirect(request.getContextPath() + "/second");
AND правильный способ получения атрибута имени пользователя сеанса таков:
String uname = (String) session.getValue("username");
В противном случае он попытается найти ключ uname , который установлен , а не . uname
было только значением, сопоставленным с username key (session.putValue("username",uname);