페이지

2015. 1. 28.

[JSP] 페이지를 이동하는 방식 2가지과(forward와 redirect) 액션태그

forward와 redirect



페이지를 이동하는 방식에는 2가지 방식이 있당...

redirect방식과  forward방식이 있음

forward가 디폴트임\

둘다 이동하는 의미는 같으나

redirect는 단순히 이동만 한다.

forward는 클라이언트의 정보를 가지고 이동한다.



form.jsp
<%
//페이지 디라이렉트 이동
//response.sendRedirect("formPro.jsp");
//단순히 이동만 한다. 파라미터 넘어가지 않음
//URL이 form.jsp 로나옴

//RequestDispatcher rd = request.getRequestDispatcher("formPro.jsp");
//rd.forward(request, response);
//포워드는 URL경로가 포워딩된 곳으로 바뀐다.
//formPro.jsp로 나옴

//포워드가 디폴트이기때문에 포워드는 잘 나오지 않음
//따라서 리다이렉트가 자주 나온다. 프레임워크에서
%>









jsp의 액션태그



자바문장 대신 쓰일수 있다.(편의성 태그)
html과 다름



이전의 INCLUDE  디렉티브의 경우는 인코딩방식등 이 같아야 사용할 수 있었다.

<jsp:include page="" />
하지만 jsp 액션태그는 실행결과를 합치는 것임!!!! 따라서 <@ page 의 내용이 달라도 합칠수 있다.

<jsp:include page="test.jsp">

이런 태그들은 xml파일 기반으로 만들어 졌다.



액션태그를 자주 사용하는 것은 jsp페이지의 모듈화를 시킬때 자주 사용한다.


페이지의 구역을 정하고 해당을 include하면 관리도 편하고 개발도 쉽고 상황에 맞는 것으로 include시키면 운영하기도 쉬움
>>이런것을 모듈화라고 한다.



예를들어

a.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<h1>AAAAAAAAAAAAAAAAAAAAAAA</h1>

<jsp:include page="b.jsp" />



b.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="EUC-KR"%>
<h1>BBBBBBBBBBBBBBBBBBBBBB</h1>



>> 결과를 가져 옴 따라서 charset이 다른데도 합치기가 가능








jsp:include는 값을 넘겨 줄수도 있다.

a.jsp

<h1>AAAAAAAAAAAAAAAAAAAAAAA</h1>

<jsp:include page="b.jsp" >
<jsp:param  name="message" value="Hello" />
</jsp:include>

<% //<jsp:param>에서 실행후 결과를 복사 한다는 의미!!%>



b.jsp

<h1>BBBBBBBBBBBBBBBBBBBBBB</h1>

<%
String message = request.getParameter("message");
%>

<font size="6" color="blue">
<%= message %>
</font>













포워드는 단순히 페이지 이동

<h1>AAAAAAAAAAAAAAAAAAAAAAA</h1>

<jsp:forward page="b.jsp" />




<h1>AAAAAAAAAAAAAAAAAAAAAAA</h1>

<jsp:forward page="b.jsp" >
<jsp:param value="hello" name="message"/>
</jsp:forward>



이렇게 하면 값을 전달할 수 있다.







<jsp:include flush="false">


flush는 정보를 계속 업데이트 받겠느냐? 는 의미?
true로 하면 정보가 계속 누적됨....