이전글
<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"만 남게 됩니다.
'Servlet&Jsp' 카테고리의 다른 글
[서블릿/JSP] RequestDispatcher로 include() 하기 (0) | 2018.08.10 |
---|---|
[서블릿/JSP] RequestDispatcher란. RequestDispatcher로 forward() 하기 (7) | 2018.08.09 |
[서블릿/JSP] <jsp:include> 액션 태그에서 <jsp:param> 사용시 Expecting jsp:param 오류. (0) | 2018.08.03 |
[서블릿/JSP] <jsp:include> 액션 태그 동작 방식 및 JSP 모듈화 개념 (0) | 2018.08.02 |
[서블릿/JSP] <jsp:include> 액션 태그 사용법. <jsp:param> 으로 데이터 넘기기. 데이터 공유하기 (0) | 2018.08.02 |