GitHub

https://github.com/Backcoder-June

BackCoder 기록 그리고 숙달

Back to the JSP

[JSTL] url 맵핑 <c: import / redirect url=" " >

Backcoder 2022. 8. 13. 20:13

[ URL 맵핑 넘기기 ] 

 

- URL 맵핑 넘기기는 Java에서부터, RequestDispatcher 을 사용해 forward / include 방식으로 가능했다. 

JSP 액션태그를 사용하면 더욱 간단하게 사용이 가능했다. 

 

[ 자바 ]

<% RequestDispatcher rd = request.getRequestDispatcher( URL );

rd.forward (req, resp); %> 

 

[ JSP action 태그 ] 

<jsp:forward  page= "URL" /> 

 

<jsp:include  page="/JSP_prac/includeTarget.jsp">
<jsp:param name="id2" value="Tom"/>
</jsp:include>

 

 

=> 이것의 JSTL 버전 url 태그로 만들어둔 것. 

 

[ JSTL 버전 URL 맵핑 ] 

 

<c:url  var="mypage"  value="URL" />

: url 태그로, 맵핑할 url 을 변수로 담아두고 사용하면, 가독성을 높일 수 있다.

( 바로 url 에 주소를 입력해도 된다. ) 

 

(1) import 방식 

 

<c:import  url= "${mypage}" >
<c:param  name="name"  value="jho"/>
<c:param  name="age"  value="100"/>
</c:import>

 

: 현재 페이지에 import 방식으로 url 주소에 담아둔 jsp 를 가져오겠다. 

( 가져오면서, import 하는 jsp 에 파라미터로 ?name=jho&age=100  준 값으로 가져오겠다. )

( param 주는 방식은 jsp action 태그와 똑같다. )  

 

- JSTL import 방식은  RequestDispatch 에서 include 방식이라 봐도 된다. 

- 현재 jsp 페이지에 주도권을 다시 가져오고, include 하는 jsp 를 가지고와서 완전히 포함해서사용한다.

- 두 페이지의 뷰단을 다 합친 결과물을 표시한다

 

(2) redirect 방식 

 

<c:redirect url="jstl_mapping.jsp">
<c:param name="name" value="jho"/>
<c:param name="age" value="100"/>
</c:redirect>

 

: 현재 페이지에서 forward 방식으로, url 주소까지 넘기겠다.   

 

- 주도권이 아예 redirect 시킨 jsp 로 넘어간다. 

- redirect 된 쪽의 VIEW 결과만 보여준다. 

 

- 실제 URL 주소 자체도, redirect 된 주소로 넘어간다. 

 

=> requestDispatcher 에서 forward 방식은,

주도권은 넘기지만, URL 주소자체는 여전히 처음 URL 주소를 유지한다.

 

JSTL redirect 방식을 사용하면,

마치 forward 방식 +  response.sendRedirect 를 사용한 것처럼 

forward를 시키면서 + URL 까지 해당 주소로 redirect 시키는 효과를 낸다.