2016-06-27 4 views
0

response.sendRedirect를 사용하여 숨겨진 매개 변수를 전달해야합니다 (어떤 경우에는 전달을 사용하고 싶지 않습니다).Response.sendRedirect()를 사용하는 숨겨진 매개 변수에 대한 내 방법은 괜찮습니까?

나는 PAR1 = val1과 & PAR2 = val2만큼 &, ...이 같은 세션 객체를 사용하고 같은 매개 변수를 GET 사용하지 않기 때문에?

session.setAttribute("error_message", "Error: e-mail is null"); 
response.sendRedirect(targetURL); 

을 그리고 때 "에서 targetUrl을" 당신이 내가 무엇을해야합니까 합리적인/신뢰할 수있는 종류의 생각

if(session.getAttribute("error_message") != null) {%> 
    <h4><%=session.getAttribute("error_message").toString()%></h4> <% 
    session.removeAttribute("error_message"); 
} 
%> 

가 수행로드, 나는 값을 읽은 다음 그 세션 속성을 제거 (그것은 JSP 파일 것)? 성능에 좋지 않습니까? 당신이 그것에 대해 어떻게 생각하십니까? 계속하거나 그 코드를 스 래시?

감사합니다.

답변

1

귀하의 경우에는 세션을 사용해도됩니다. 명심해야 할 점은 세션이 스레드로부터 안전하지 않다는 것입니다. 동일한 브라우저 창에있는 다른 탭에서 속성을 제거하면 오류가 발생합니다.

성능에 좋지 않습니다.

URL로 데이터를 전달하지 않고 response.sendRedirect()을 사용하는 경우 세션 범위가 좋은 옵션입니다.

+0

감사합니다. @ AndrewRibeiro! :-) – Ommadawn

+0

잠금을 사용하여 세션을 쿼리/수정하는 부분을 래핑하는 것이 합리적입니까? – Ommadawn

+0

일단 세션 범위가 스레드로부터 안전하지 않으면 완전히. 일반적으로 사용되는 것은 [동기화] (https://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html) 메소드 –