출처사이트 : https://devyongsik.tistory.com/m/93
JSP에서는 페이지 이동시 다음 4가지 정도의 방법이 있습니다
① JavaScript를 이용
window.open, location.href, location.replace 등을 이용할수 있습니다
login_process.jsp
<% if (a == null) { %>
<script>location.href = "admin.jsp"; </script>
<% } else { %>
<script>alert('권한이 없어요!'); window.history.back(); </script>
<% } %>
특징적인부분은 브라우져의 주소창이 변경되며
(이말은 즉슨 클라이언트가 다시 admin.jsp를 서버에 요청한다는 말입니다)
login_process.jsp 에서 jsp가 다 실행되고 브라우져에 out put된 html 및 javascript들만으로
실행된 코드들이라는 것입니다
② response.sendRedirect를 이용
login_process.jsp
<% if (a == null) {
response.sendRedirect("admin.jsp");
} else {
response.sendRedirect("login.jsp");
}
a = "test 입니다";
System.out.println(a);
%>
이 코드에서 a가 출력될까요 안될까요?
출력 됩니다.
sendRedirect가 되더라도 밑에 jsp 코드들은 모두 실행 된다는 말입니다
response.sendRedirect는 기본적으로 모든 로직들을 다 처리한 후 코드 맨 마지막 부분에
사용하는 것이 올바른 방법입니다
만약 그렇지 못한 경우는 response.sendRedirect 다음 바로 return; 이라는 코드를 집어 넣어야 합니다
response.sendRedirect은 HTTP 헤더정보를 변경하여 redirect시키기 때문에 역시 브라우져의 주소창이 변경되며 sendRedirect가 실행되기전 html이나 javascript로 out put되는 코드들은 모두 실행되지 않습니다.
③ forward 이용
jsp 태그의 <jsp:forward> 나 servlet의 RequestDispatcher.forward 를 이용할수 있습니다
login_process.jsp
<% if (a == null) { %>
<jsp:forward page="admin.jsp"/>
<% } else { %>
<jsp:forward page="login.jsp"/>
<% }
a = "test 입니다";
System.out.println(a);
%>
그럼 위의 코드의 경우 a가 출력 될까요 안될까요?
정답은 출력 안됩니다. 바로 forward 되어 버립니다.
클라이언트로 응답주지 않고 바로 서버측에서 admin.jsp로 이동하기 때문에
주소창이 바뀌지 않고 그로인해 브라우져에 출력되는 응답속도 또한 사용자가 보기에는
응답이 빠른 장점이 있습니다
하지만 forward 이후 JSP 코드들이 실행되지 않는것 사실이지만 만약 finally절이 있는경우
finally절은 실행 됨으로 확실히 알아둡시다.
④ meta 태그 이용
마지막으로 meta 태그를 이용할 수도 있습니다.
<META http-equiv=refresh content="0;url=admin.jsp">
즉 요약하자면..
페이지 이동 방법이 여러가지가 있습니다.
'웹개발 > jsp' 카테고리의 다른 글
세션 생성 및 제거. (0) | 2022.02.17 |
---|---|
페이지 이동시키는 방법(forward, redirect 차이) (0) | 2022.02.17 |
파일 업로드/다운로드구현 multipart (0) | 2022.02.17 |
jsp태그 및 <% 사용해서 개발하기 (0) | 2022.02.17 |
ajax로 form data(multipart) 전송 하기 (0) | 2022.02.17 |
댓글