request.setAttribute()의 사용법이 너무 걱정됩니다.
"forward는 클라이언트로부터의 리디렉션입니다. sendRedirect는 서버로부터의 리디렉션입니다. 서버에서 리디렉션하고 싶습니다."
위의 설명은 완전히 오해되었습니다! !
Forward는 현재 요청을 전달하는 리디렉션입니다. 동일한 컨테이너에서만 사용할 수 있으며 클라이언트의 요청 상태를 저장합니다.
sendRedirect는 리디렉션이며 동일한 컨테이너에서 사용하거나 다른 컨테이너로 요청을 보낼 수 있지만 요청 정보는 손실됩니다. 이는 요청을 다시 보내는 것과 같습니다.
request.setAttribute는 요청 필드에 요청 매개변수를 추가하므로 sendRedirect 이후에는 request.setAttribute 요청을 얻을 수 없습니다.
해결책(2개):
1. 동일한 서버(컨테이너)에서 리디렉션 작업을 수행하는 경우. 그런 다음 다음과 같이 변경할 수 있습니다.
request.setAttribute("cha", cha);
request.getSession () .setAttribute("cha", cha);
그러면
lt; Object a = (Object)request.getSession().getAttribute("cha");gt;
p>그 외 사항은 변경되지 않습니다.
2. 서블릿에 다음과 같이 작성합니다:
Change
response.sendRedirect(“a.jsp”);
response.sendRedirect("a.jsp?a=cha");
그런 다음 a.jsp 페이지에서 직접
lt;=request. ("a")gt;
그렇습니다. lt; Object a = (Object)request.getAttribute("cha");gt;를 작성할 필요가 없습니다.
물론이죠. .forward도 구현할 수 있으니 더 이상 쓰지 않겠습니다.