이전글


<jsp:param> 액션태그와 사용자 요청 파라미터가 겹치는 경우
만약 greeting이라는 파라미터 속성에 대해 브라우저에서 URL?greeting=xxxx 와 같이 파라미터를 보냄과 동시에 <jsp:parem name="greering" value="xxxx">를 사용하는것처럼 같은 속성에 대해 겹치게 되면 어떻게 될까요? 이때에는 포함되는 페이지 입장에서 우선적으로 <jsp:param>에 명시된 값을 사용합니다.


main.jsp
<%
      request.setCharacterEncoding("UTF-8");
%>
 
 
<jsp:include page="/included.jsp" flush="false">
      <jsp:param name="greeting" value="안녕하세요." />                                            
</jsp:include>
 
 
<%=   request.getParameter("greeting"%>
cs

 

 

included.jsp
<%
      String greeting = request.getParameter("greeting");                                        
%>
 
 
<%= greeting %>
cs

 

 


다음과 같이 http://localhost/main.jsp?greeting=hello 로 요청을 하게 되면 포함되는 페이지에서는 넘겨받은 "안녕하세요." 를 출력하고 있습니다. 그런데 included.jsp 페이지 처리 이후 다시 main.jsp 로 제어가 돌아왔을때에는 hello가 출력됩니다.





<jsp:param> 액션태그의 값은 넘겨받는 페이지에서만 적용된다
포함되는 페이지인 included.jsp 에서 <jsp:param> 액션태그의 값이 우선순위를 갖는 이유는 제어가 넘어갈 때 별도로 값을 추가하여 넘기기 때문입니다. 또한 <jsp:param> 를 통해 넘긴 데이터는 <jsp:param> 액션태그로 포함되는 페이지에서만 사용할 수 있습니다.

main.jsp
<%
      request.setCharacterEncoding("UTF-8");
%>
<jsp:include page="/included.jsp" flush="false">
      <jsp:param name="greeting" value="안녕하세요." />
</jsp:include>
 
 
--------------------main.jsp-------------<br>
<%    String[] greeting = request.getParameterValues("greeting");%>                        
파라미터 개수 : <%= greeting.length %><br>
<%= greeting[0%><br>
--------------------main.jsp-------------
cs

 

 


included.jsp
--------------------includes.jsp-------------<br>
 
파라미터 개수 : <%= greeting.length %><br>
<%= greeting[0%><br>
<%= greeting[1%><br>
--------------------includes.jsp-------------<br>                                            
 
cs

 



http://localhost/main.jsp?greeting=hello 로 요청한 결과입니다. request.getParameterValues() 로 값을 넘겨받도록 해보니 포함되는 페이지에서는 사용자가 넘긴 파라미터와 액션태그를 통해 넘긴 파라미터 둘 다 값을 가지고 있는것을 확인할 수 있습니다. 그러나 main.jsp에서는 사용자가 쿼리스트링을 통해 넘긴 데이터만을 가지고 있습니다.



즉 사용자가 요청할 때 넘긴 파라미터는 main.jsp가 가지고 있고 included.jsp로 제어가 넘어갈 때 request 파라미터에 "안녕하세요"를 추가하여 넘기고 included.jsp의 처리가 끝난 후 main.jsp페이지로 제어가 돌아올 때 "안녕하세요" 를 제거하여 사용자가 요청한 "hello"만 남게 됩니다.


블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,