커피와 개발자

JSP 페이지간 이동 방법 본문

웹개발/JSP

JSP 페이지간 이동 방법

광박이 2009. 11. 17. 09:49
728x90

JSP 페이지간 이동

1. window.open, location.href, location.replace 등을 이용

example) login.jsp

<% if (a == null) { %>
      <script>location.href = "admin.jsp"; </script>
<% } else { %>
      <script>alert('권한이 없어요!'); window.history.back(); </script>
<% } %>

특징적인부분은 브라우져의 주소창이 변경되며 (클라이언트가 다시 admin.jsp를 서버에 요청) login.jsp 에서 jsp가 다 실행되고 브라우져에 out put된 html 및 javascript들만으로 실행된 코드들이라는 것.


2. response.sendRedirect를 이용

<% 
if (a == null) { 
    response.sendRedirect("admin.jsp");
} else { 
    response.sendRedirect("login.jsp");
}
a = "test 입니다";
System.out.println(a);
%>

 

sendRedirect가 되더라도 밑에 jsp 코드들은 모두 실행되어 a는 출력 된다.
response.sendRedirect는 기본적으로 모든 로직들을 다 처리한 후 코드 맨 마지막 부분에 사용하는 것이 올바른 방법이며, 만약 그렇지 못한 경우는 response.sendRedirect 다음 바로 return; 이라는 코드를 삽입response.sendRedirect은 HTTP 헤더정보를 변경하여 redirect시키기 때문에 역시 브라우져의 주소창이 변경되며 sendRedirect가 실행되기전 html이나 javascript로 out put되는 코드들은 모두 실행되지 않는다.


3. forward 이용

jsp 태그의 <jsp:forward> 나 servlet의 RequestDispatcher.forward 를 이용

<% if (a == null) { %>
    <jsp:forward page="admin.jsp"/>
<% } else { %>
    <jsp:forward page="login.jsp"/>
<% }
    a = "test 입니다";
    System.out.println(a);
%>

 

위의 코드의 경우 바로 forward 되어 a가 출력되지 않는다. 클라이언트로 응답주지 않고 바로 서버측에서 admin.jsp로 이동하기 때문에
주소창이 바뀌지 않고 그로인해 브라우져에 출력되는 응답속도 또한 사용자가 보기에는 응답이 빠른 장점이지만 forward 이후 JSP 코드들이 실행되지 않는것 사실이지만 만약 finally절이 있는경우 finally절은 실행된다.


4. meta 태그 이용

<META http-equiv="refresh" content="0;url=admin.jsp">

 

728x90
Comments