Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

[9주차] 11. forward 액션태그, 다른곳으로 흐름을 이동시키고 싶을때(기능만 보면 response.sendRedirect와 같음) 본문

K-DigitalTraining 강의/8. JSP

[9주차] 11. forward 액션태그, 다른곳으로 흐름을 이동시키고 싶을때(기능만 보면 response.sendRedirect와 같음)

이대곤 2022. 7. 12. 19:53

forward 액션태그란?

이전에 작성한 글에서 include 액션태그는 실행 결과를 가져오기 위해 흐름이 요청한쪽으로 이동했다가 응답으로 실행한 결과를 가지고 돌아왔는데, forward 액션태그는 흐름이 요청한 쪽으로 한 번 이동하면, 실행이 끝나도 다시 되돌아 가지 않는다. 즉, 응답이 없다. 이래서 돌아오지 않고 앞으로 전진하는 것이기 때문에 이름 자체가 forward라고 붙려지는거 같다.

 

세부적인 차이점을 비교하지 않는다는 가정하에

큰 틀에서, 페이지를 이동하는 것이기 때문에 response.sendRedirect() 혹은 <a> 태그와 같은 기능으로 볼 수 있다.

다른 점으로 forward 액션태그는 이동한 곳에서 이전에 존재하던 request 객체를 공유한다는 점 정도가 있다. 

 

이 액션태그가 사용되는 jsp 파일은 화면 출력용 코드가 있어도 눈에 보여지기전에 바로 액션태그로 요청한 파일쪽으로 넘어가므로 화면 출력용 보다는 페이지 이동중에 눈에 보이지 않아도 되는 로직을 중간에 껴 넣고 싶을 때 사용한다.

 

한가지 예를들면 아래의 예시에서 중간단계를 거쳐야 하는데 이를 구현하기 위해서

두번째 jsp파일의 맨 마지막줄에 세번쨰jsp를 요청하는 forward 액션태그를 삽입하면 될 것이다. 

네이버 로그인창(첫번째jsp파일) - "DB조회, 로그남김"(두번째jsp파일) - 로그인 성공해서 메인페이지(세번째jsp파일)

 

include 액션태그와 마찬가지로 필요에 따라 param 액션태그를 사용해 파라미터 값을 포함시켜 요청할 수 있다.

요청을 받은 그 파일 쪽에서는 request 객체를 통해 전달받은 파라미터의 값을 열람해 사용할 수 있다.

//방법1 : request 객체를 공유하는 것 만으로 충분한 경우, 간결히 작성가능
<jsp:forward page="Ex01_result.jsp"/>

//방법2 : request 객체가 포함하고 있는 데이터 말고도 넘겨주고 싶은 인자가 있는 경우
<jsp:forward page="Ex01_result.jsp">
 	<jsp:param value="30" name="age"/>
</jsp:forward>

예시. forward 액션태그

페이지1

페이지2

* forward 액션태그를 만나면 브라우저 출력관련 버퍼가 초기화되어 화면은 출력 되려다가 말음.

  단, System.out.print()문은 잘 실행되어 여기 페이지를 거쳐간 것을 콘솔창을 통해 알 수 있음.

페이지3

* 특이한 점으로 url은 이전의 jsp 파일을 가리키고 있지만, 브라우저의 출력 결과는 액션태그로 요청한 jsp파일의 결과가 보여짐

* request 객체가 공유되고 있는것을 알수 있음 

 

 

Comments