9장. 요청 흐름제어와 모듈화 #1: <jsp:forward> 액션태그 사용 #2: response.sendRedirect() 사용 #3: <jsp:include> 액션태그 사용 #4: <%@ include %> 지시문 사용: Chap 6 제9장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 하나의 JSP 페이지에서 다른 JSP 페이지로 요청 처리를 전달할 때 사용 흐름제어 request가 from.jsp로 전달 from.jsp는 <jsp:forward> 액션태그 실행 <jsp:forward> 액션태그가 실행되면 request 흐름이 to.jsp로 이동됨 request 흐름이 이동될 때 from.jsp에서 사용된 request/response 기본 객체가 to.jsp로 전달됨 to.jsp는 response를 생성 제1장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 중요사항 from.jsp가 아닌 to.jsp가 생성한 응답 결과가 웹 브라우저에 전달된다. from.jsp에서 사용한 request, response 기본 객체가 to.jsp에 그대로 전달된다. <jsp:forward> 액션 태그 사용 이유 모듈화 (Modulization) 기능별로 모듈화하여 구조적 프로그래밍을 실현 제1장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 기본 용법 사용 예 <jsp:forward page=“이동할 페이지” /> <jsp:forward page="forward/to.jsp"/> <% String url="forward/to.jsp"; %> <jsp:forward page="<%= url %>"/> 제9장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 [예제 9.1-1] jspbook\ch09\from.jsp 01 02 03 04 05 06 07 08 09 10 <%@ page contentType="text/html;charset=utf-8" %> <html> <head><title>from.jsp의 제목</title></head> <body> 이 페이지는 from.jsp가 생성한 것입니다. <jsp:forward page="/ch09/forward/to.jsp" /> // to.jsp로 요청 흐름 포워딩 </body> </html> [예제 9.1-2] jspbook\ch09\forward\to.jsp 01 02 03 04 05 06 07 08 09 10 <%@ page contentType="text/html;charset=utf-8" %> <html> <head><title>to.jsp의 실행 결과</title></head> <body> to.jsp가 생성한 내용<br/> 날짜: <%= new java.util.Date() %> </body> </html> 제9장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 위 결과에서 주목할만한 점 웹 브라우저의 주소는 from.jsp로서 최초로 요청을 받은 JSP의 주소이다. from.jsp에서 출력할 내용은 브라우저에 보이지 않고 <jsp:forward>를 사용해서 이동한 to.jsp의 출력 결과만 웹 브라우저에 출력되었다. 웹 브라우저는 요청의 흐름이 이동되는 사실을 전혀 알지 못한다. Tomcat 내에서 request 흐름을 이동시키기 때문에 웹 브라우저의 URL은 to.jsp로 변경되지 않음 제9장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 page 속성에 경로명 입력하는 2 가지 방법 웹 어플리케이션 폴더를 기준으로 한 절대 경로 현재 JSP 페이지 (즉, from.jsp) 를 기준으로 한 상대 경로 경로 입력 예 1 절대 경로 상대 경로 <jsp:forward page="/ch09/forward/to.jsp" /> <jsp:forward page="forward/to.jsp" /> 제9장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 경로 입력 예 2 절대 경로 상대 경로 같은/하위 폴더에 위치한 경우에 편리 <jsp:forward page=“/ch09/forward/to.jsp" /> <jsp:forward page="../forward/to.jsp" /> 제9장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 -> from.jsp의 출력 결과는 사라지고 to.jsp의 출력 결과를 보냄 출력 버퍼가 존재하기 때문에 <jsp:forward> 액션 태그를 사용할 수 있다. 제9장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 [예제 9.2] jspbook\ch09\fromNoBuffer.jsp 01 02 03 04 05 06 07 08 09 10 11 <%@ page buffer="none“ %> // buffer 속성을 none으로 설정 <%@ page contentType = "text/html; charset=euc-kr" %> <html> <head><title>fromNoBuffer.jsp</title></head> <body> from.jsp가 생성한 내용 <jsp:forward page="/ch09/forward/to.jsp" /> // buffer 속성이 none인 경우 포워딩 불가 </body> </html> 출력 buffer가 없기 때문에 fromNoBuffer.jsp는 출력을 웹 브라우저로 즉각 전송한다. 이미 웹 브라우저에 데이터가 전송된 경우 <jsp:forward> 액션 태그를 사용해서 흐름을 이동할 수 없다! 제9장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 이용자가 서버로 보내는 정보의 조건에 따라서 서로 다른 결과 화면을 보여줌 <%@ page contentType="text/html;charset=utf-8" %> <% String forwardPage = null; // 조건에 따라 이동할 페이지를 지정 if (조건 판단1) { forwardPage = "페이지URL1"; } else if (조건 판단2) { forwardPage = "페이지URL2"; } else if (조건 판단3) { forwardPage = "페이지URL3"; } %> <jsp:forward page= "<%= forwardPage %>“ /> 제9장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 <%@ page contentType="text/html;charset=utf-8" %> <% String option = request.getParameter("option"); // 조건에 따라 이동할 페이지를 지정 if (option.equals("1")) { %> ... 내용 else if (option.equals("2")) { else if (option.equals("3")) { } 제9장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 Modulization <%@ page contentType="text/html;charset=utf-8" %> <% String code = request.getParameter("code"); String viewPageURI = null; if (code.equals("1")) { viewPageURI = "/ch09/forward/1.jsp"; } else if (code.equals("2")) { viewPageURI = "/ch09/forward/2.jsp"; } else if (code.equals("3")) { viewPageURI = "/ch09/forward/3.jsp"; } %> <jsp:forward page="<%= viewPageURI %>" /> 제9장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 [예제 9.3-1] jspbook\ch09\select.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 <%@ page contentType="text/html;charset=utf-8" %> <html> <head><title>옵션 선택 화면</title></head> <body> <form action="view.jsp"> 원하는 페이지 선택: <select name="code"> <option value="1">1 페이지</option> <option value="2">2 페이지</option> <option value="3">3 페이지</option> </select> <input type="submit" value="이동"> </form> </body> </html> 제9장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 [예제 9.3-2] jspbook\ch09\view.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 <%@ page contentType="text/html;charset=utf-8" %> <% String code = request.getParameter("code"); // 요청 파라미터 code에 대한 값 설정 String viewPageURI = null; if (code.equals("1")) { viewPageURI = "/ch09/forward/1.jsp"; } else if (code.equals("2")) { viewPageURI = "/ch09/forward/2.jsp"; } else if (code.equals("3")) { viewPageURI = "/ch09/forward/3.jsp"; } %> <jsp:forward page="<%= viewPageURI %>" /> // viewPageURI에 저장된 페이지로 포워딩 제9장
1. <jsp:forward> 액션 태그를 이용한 흐름 제어 [예제 9.3-2] jspbook\ch09\forward\1.jsp 01 02 03 04 05 06 07 08 09 <%@ page contentType="text/html;charset=utf-8" %> <html> <head><title>1 페이지</title></head> <body> 이 페이지는 <b><font size="5">1</font></b> 입니다. </body> </html> 제9장
2. 이동할 페이지로의 정보 전달 <jsp:forward> 액션 태그를 활용한 request 파라미터 전달 <jsp:param> 액션 태그 <jsp:forward> 액션 태그를 사용해서 요청 정보를 전달할 페이지에 추가로 정보를 전달하고 싶은 경우에 사용 사용 용법 <jsp:param> 액션 태그의 속성 name - 이동할 페이지에 전달될 파라미터의 이름 (표현식 <%= … %> 사용 불가) value - 이동할 페이지에 전달될 파라미터의 값 (표현식 <%= … %> 사용 가능) <jsp:forward page="move.jsp"> <jsp:param name="title" value="JSP"/> <jsp:param name="subject" value="forward"/> </jsp:forward> 제9장
2. 이동할 페이지로의 정보 전달 <jsp:forward> 액션 태그를 활용한 request 파라미터 전달 예 [예제 9.4-1] jspbook\ch09\paramFrom.jsp 01 02 03 04 05 06 07 08 <%@ page contentType="text/html;charset=utf-8" %> <% String value = request.getParameter("p1"); if(value == null) value = "NOPARAM"; %> <jsp:forward page="forward/paramTo.jsp"> <jsp:param name="p2" value="<%=value%>"/> // value 속성에 표현식 사용 가능 </jsp:forward> [예제 9.4-2] jspbook\ch09\forward\paramTo.jsp 01 02 03 04 05 06 07 08 <%@ page contentType="text/html;charset=utf-8" %> <html> <head><title>paramTo</title></head> <body> p1 파라미터 : <%=request.getParameter("p1")%> <br/> p2 파라미터 : <%=request.getParameter("p2")%> </body> </html> 제9장
2. 이동할 페이지로의 정보 전달 <jsp:forward> 액션 태그를 활용한 request 파라미터 전달 예 (계속) paramFrom.jsp 수행에서 "p1" 파라미터를 지정하지 않은 경우 paramFrom.jsp 수행에서 "p1" 파라미터를 지정한 경우 http://localhost:8080/jspbook/ch09/paramFrom.jsp http://localhost:8080/jspbook/ch09/paramFrom.jsp?p1=Hello 제9장
2. 이동할 페이지로의 정보 전달 request 기본 객체가 지닌 속성을 활용한 정보 전달 #1: <jsp:forward> 로 정보 전달 #2: 속성(Attribute)를 활용한 정보 전달 from.jsp와 to.jsp는 request 객체를 공유하므로 from.jsp에서 request객체에 새로운 속성을 추가하게 되면 to.jsp에서 그 속성을 읽어와서 사용할 수 있음 제9장
2. 이동할 페이지로의 정보 전달 request 기본 객체가 지닌 속성을 활용한 정보 전달 [예제 9.5-1] jspbook\ch09\forward\timeFrom.jsp 01 02 03 04 05 06 07 08 <%@ page contentType="text/html;charset=utf-8" %> <%@ page import = "java.util.Calendar" %> <% Calendar cal = Calendar.getInstance(); request.setAttribute("cal", cal); request.setAttribute("name", "홍길동"); %> <jsp:forward page="forward/timeTo.jsp"/> // timeTo.jsp로 포워딩 // Calendar 객체와 String 객체를 request 기본 객체에 속성으로 저장 제9장
2. 이동할 페이지로의 정보 전달 request 기본 객체가 지닌 속성을 활용한 정보 전달 [예제 9.5-2] jspbook\ch09\forward\timeTo.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 <%@ page contentType="text/html;charset=utf-8" %> <%@ page import="java.util.Calendar" %> <html> <head><title>현재 시간</title></head> <body> <% Calendar cal = (Calendar)request.getAttribute("cal"); String name = (String)request.getAttribute("name"); %> <%= name %> 선생님! <br/> 현재 시간은 <%= cal.get(Calendar.HOUR) %>시 <%= cal.get(Calendar.MINUTE) %>분 <%= cal.get(Calendar.SECOND) %>초입니다. </body> </html> // request 기본 객체에서 속성 정보 읽어 옴 제9장
3. response 기본 객체를 이용한 흐름 제어 웹 브라우저에서 페이지가 자동으로 이동 <jsp:forward>는 Tomcat 내부에서 페이지 이동 response 객체의 redirect 기능이나 클라이언트에서 처리하는 JavaScript 방식을 사용: 두 번의 request이므로 URL이 바뀜 e.g., 게시판의 글쓰기를 완료한 후에 목록 페이지로 이동 <% String paramString = "code=A000&type=C"; response.sendRedirect("move.jsp"+paramString); %> 제9장
3. response 기본 객체를 이용한 흐름 제어 웹 브라우저에서 페이지가 자동으로 이동하는 예 [예제 9.6-1] jspbook\ch09\sendParam1.jsp 01 02 03 04 05 06 07 08 09 - 10 <%@ page contentType="text/html;charset=utf-8" %> <%@ page import="java.net.URLEncoder" %> <%@ page import="java.util.Random" %> <% Random random = new Random(); int number = random.nextInt(); String numberString = Integer.toString(number); response.sendRedirect(request.getContextPath() + "/ch09/receiveParam.jsp?num=" + numberString); // receiveParam.jsp로 리다이렉트 %> // Random 객체로부터 임의의 정수값을 얻어온다. Request.getContextPath(): [예제 8.1-2] jspbook\ch08\request_result.jsp 제9장
3. response 기본 객체를 이용한 흐름 제어 웹 브라우저에서 페이지가 자동으로 이동하는 예 (계속) [예제 9.6-2] jspbook\ch09\receiveParam.jsp 01 02 03 04 05 06 07 <%@ page contentType="text/html;charset=utf-8" %> <html> <head><title>파라미터 출력</title></head> <body> 전달받은 정수 : <%= request.getParameter("num") %> </body> </html> 제9장
4. 자바스크립트를 이용한 흐름 제어 웹 브라우저에서 페이지가 자동으로 이동하는 예 (계속) 클라이언트에서 처리하는 자바스크립트방식을 사용 [예제 9.6-3] jspbook\ch09\sendParam2.jsp 01 02 03 04 05 06 07 08 09 10 - 11 <%@ page contentType="text/html;charset=utf-8" %> <%@ page import="java.net.URLEncoder" %> <%@ page import="java.util.Random" %> <% Random random = new Random(); int number = random.nextInt(); String numberString = Integer.toString(number); // 숫자를 문자열로 변환 %> <script language = "JavaScript"> location.href = "<%= request.getContextPath() %>/ch09/receiveParam.jsp?num=<%= numberString %>"; // Javascript의 location 객체의 href 속성을 활용해서 리다이렉트 </script> // Random 객체로부터 임의의 정수값을 얻어온다. 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 flush="false" : "출력 내용 A"를 출력 버퍼에 여전히 저장한 채 요청 흐름이 sub.jsp로 이동된다. flush="true" (디폴트): "출력 내용 A"는 웹 브라우저로 보내어지고 요청 흐름이 sub.jsp로 이동 출력 버퍼를 이렇게 비우게 되면 HTTP response 헤더 정보도 함께 보내어지므로 이후 (요청 흐름이 sub.jsp로 이동한 후)에 헤더 정보를 추가하거나 변경하는 작업은 할 수가 없다. <jsp:include page="포함할 페이지" flush="true" /> 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 [예제 9.7-1] jspbook\ch09\includer.jsp 01 02 03 04 05 06 07 08 09 10 11 <%@ page contentType="text/html;charset=utf-8" %> <html> <head><title>includer 페이지</title></head> <body> includer.jsp에서 출력하는 내용: <%= "Hello World!" %> <jsp:include page="include/sub.jsp" flush="false" /> // sub.jsp 포함 액션 태그 수행 이후에 출력하는 내용. </body> </html> [예제 9.7-2] jspbook\ch09\include\sub.jsp 01 02 03 04 <%@ page contentType="text/html;charset=utf-8" %> <p> <font size="+2" color="blue">sub.jsp에서 출력하는 내용: <%= "Hello World!" %></font> </p> 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 Browser: “소스 코드 보기” <html> <head><title>includer 페이지</title></head> <body> includer.jsp에서 출력하는 내용: Hello World! <p> <font size="+2" color="blue">sub.jsp에서 출력하는 내용: Hello World!</font> </p> 액션 태그 수행 이후에 출력하는 내용. </body> </html> 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 일반적인 페이지 레이아웃 상단 메뉴: 바뀌지 않음 우측/좌측 메뉴: 상황에 따라서 변경 중앙의 주 내용: 우측/좌측 메뉴의 링크를 클릭할 때마다 변경 하단의 부가 내용 : 바뀌지 않음 페이지 레이아웃의 이전 방법 HTML 태그인 <frame>과 <frameset>을 사용 최근 방법 HTML 태그인 <table>, <tr>, <td> 태그 등으로 처리 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 <table>, <tr>, <td> 태그를 활용한 페이지 레이아웃의 전형적인 예 <table> <tr> <td colspan="2"> <!-- 모든 페이지에서 같은 내용을 지니는 상단 메뉴 코드 --> <a href="...">Home</a>... ... </td> </tr> <td width="80%"> <!-- 페이지마다 다른 중앙 주 내용 부분 --> Welcome to Our Site!. <td> <!-- 우측 메뉴에 대한 코드 --> <a href="...">Java</a>... <!-- 모든 페이지에서 같은 내용을 지닌 하단 부가 내용 코드 --> Copyright 2009... </table> 웹 사이트가 상당히 많은 수의 JSP 페이지로 구성되어 있고 그러한 JSP 페이지들을 같은 방식으로 왼쪽과 같이 코딩해야 한다면 문제가 있다. 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 e.g., 상단 메뉴 변경시 모든 JSP 코드들을 변경해야 함 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 <jsp:include> 액션 태그의 활용 가치 모듈화(Modulization) <jsp:include>를 통한 유지보수 문제 해결 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 [예제 9.8-1] jspbook\ch09\home.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 <%@ page contentType="text/html;charset=utf-8" %> <html> <head><title>모듈화</title></head> <body> <table width="500" border="1" cellpadding="5" align="center"> <tr> <td colspan="2"> <jsp:include page="include/top.jsp" flush="false" /> // top.jsp 포함 </td> </tr> <td width="80%" valign="middle"> 반갑습니다. 중앙의 주 내용입니다.<br/> <img src="bird1.jpg" width="200" border="0"/> 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 [예제 9.8-1] jspbook\ch09\home.jsp 16 17 18 19 20 21 22 23 24 25 26 <td valign="top"> <jsp:include page="include/menu.jsp" flush="false" /> // menu.jsp 포함 </td> </tr> <tr> <td colspan="2"> // bottom.jsp 포함 <jsp:include page="include/bottom.jsp" flush="false" /> </body> </html> 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 [예제 9.8-2] jspbook\ch09\include\top.jsp 01 02 03 04 05 06 <%@ page contentType="text/html;charset=utf-8" %> TOP 메뉴 - <a href="home.jsp">HOME</a> <a href="info.jsp">INFO</a> <a href="music.jsp">MUSIC</a> [예제 9.8-3] jspbook\ch09\include\menu.jsp 01 02 03 04 05 06 <%@ page contentType="text/html;charset=utf-8" %> 우측 MENU 페이지<br/><br/> <a href="#">자기소개</a><br/> <a href="#">방명록</a><br/> <a href="#">자유게시판</a> [예제 9.8-4] jspbook\ch09\include\bottom.jsp 01 02 03 04 05 <%@ page contentType="text/html;charset=utf-8" %> BOTTOM 부가 내용 - <a href="#">회사소개</a> | <a href="#">찾아오는길</a> 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 [예제 9.8-5] jspbook\ch09\infojsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <%@ page contentType="text/html;charset=utf-8" %> <html> <head><title>모듈화</title></head> <body> <table width="500" border="1" cellpadding="5" align="center"> <tr> <td colspan="2"> <jsp:include page="include/top.jsp" flush="false" /> </td> </tr> <td width="80%" valign="middle"> Info 내용입니다.<br/> <img src="bird2.jpg" width="350" border="0"/> <td valign="top"> <jsp:include page="include/menu.jsp" flush="false" /> <jsp:include page="include/bottom.jsp" flush="false" /> </body> </html> 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 [예제 9.8-6] jspbook\ch09\music.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <%@ page contentType="text/html;charset=utf-8" %> <html> <head><title>모듈화</title></head> <body> <table width="500" border="1" cellpadding="5" align="center"> <tr> <td colspan="2"> <jsp:include page="include/top.jsp" flush="false" /> </td> </tr> <td width="80%" valign="middle"> Music 내용입니다.<br/> <img src="bird3.jpg" width="300" border="0"/> <td valign="top"> <jsp:include page="include/menu.jsp" flush="false" /> <jsp:include page="include/bottom.jsp" flush="false" /> </body> </html> 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 home.jsp, info.jsp, music.jsp 에서 처럼 여러 개의 JSP 파일이 거의 동일한 형태를 가지고 있다면 Template (템플릿) 개념 도입 추천 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 - 공통적인 내용만을 가지고 있는 별도의 index.jsp 페이지 작성 [예제 9.9-1] jspbook\ch09\index.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 <%@ page contentType="text/html;charset=utf-8" %> <% String targetPage=request.getParameter("target") + "2.jsp"; %> <html> <head><title>템플릿+모듈화</title></head> <body> <table width="500" border="1" cellpadding="5" align="center"> <tr> <td colspan="2"> <jsp:include page="include/top2.jsp" flush="false" /> // top.jsp top2.jsp </td> </tr> 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 Browser에서 아래와 같이 실행: request의 parameter 전송 [예제 9.9-1] jspbook\ch09\index.jsp 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <tr> <td width="80%" valign="middle"> <jsp:include page="<%= targetPage%>" flush="false" />// targetPage에 저장된 페이지 포함 </td> <td valign="top"> <jsp:include page="include/menu.jsp" flush="false" /> // 이전 예제의 menu.jsp 포함 </tr> <td colspan="2"> <jsp:include page="include/bottom.jsp" flush="false" /> 이전 예제의 bottom.jsp 포함 </body> </html> http://localhost:8080/jspbook/ch09/index.jsp?target=home http://localhost:8080/jspbook/ch09/index.jsp?target=info http://localhost:8080/jspbook/ch09/index.jsp?target=music 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 [예제 9.9-2] jspbook\ch09\home2.jsp 01 02 03 <%@ page contentType="text/html;charset=utf-8" %> 반갑습니다. 중앙의 주 내용입니다.<br/> <img src="bird1.jpg" width="200" border="0"/> [예제 9.9-3] jspbook\ch09\info2.jsp 01 02 03 <%@ page contentType="text/html;charset=utf-8" %> Info 내용입니다.<br/> <img src="bird2.jpg" width="350" border="0"/> [예제 9.9-4] jspbook\ch09\music2.jsp 01 02 03 <%@ page contentType="text/html;charset=utf-8" %> Music 내용입니다.<br/> <img src="bird3.jpg" width="300" border="0"/> 제9장
5. <jsp:include> 액션 태그를 이용한 JSP페이지 모듈화 본 예제에 접근하기 위한 URL 모음 [예제 9.9-5] jspbook\ch09\include\top2.jsp 01 02 03 04 05 06 <%@ page contentType="text/html;charset=utf-8" %> TOP 메뉴 - <a href="index.jsp?target=home">HOME</a> <a href="index.jsp?target=info">INFO</a> <a href="index.jsp?target=music">MUSIC</a> http://localhost:8080/jspbook/ch09/index.jsp?target=home http://localhost:8080/jspbook/ch09/index.jsp?target=info http://localhost:8080/jspbook/ch09/index.jsp?target=music 제9장
6. 포함할 페이지로의 정보 전달 #1: <jsp:include> 액션 태그를 활용한 request 파라미터 전달 <jsp:param> 액션 태그 사용 <jsp:include page="/include/top.jsp“ flush="false" > <jsp:param name="param1" value="value1" /> <jsp:param name="param2" value="value2" /> </jsp:include> [예제 9.10-1] jspbook\ch09\paramIncluder.jsp 01 02 03 04 05 06 07 08 09 10 11 12 <%@ page contentType="text/html;charset=utf-8" %> <html> <head><title>paramIncluder</title></head> <body> 종류: 서적 <jsp:include page="./include/paramSub.jsp" flush="false"> // paramSub.jsp 페이지 포함 <jsp:param name="type" value="language" /> // type 파라미터 값 설정 </jsp:include> </body> </html> 제9장
6. 포함할 페이지로의 정보 전달 #1: <jsp:include> 액션 태그를 활용한 request 파라미터 전달 request.getParameter() 사용 [예제 9.10-2] jspbook\ch09\include\paramSub.jsp 01 02 03 04 05 06 07 08 09 10 11 <%@ page contentType="text/html;charset=utf-8" %> <% String type = request.getParameter("type"); // type 파라미터 값 얻어오기 %> <br/> 유형: <%= type %> <br/> 리스트: <ol> <li> JSP 웹 프로그래밍 <li> Java 정복 </ol> 제9장
6. 포함할 페이지로의 정보 전달 #2: request 기본 객체의 속성을 활용한 정보 전달 앞선 예제의 재구성: : request.setAttribute() 사용 [예제 9.11-1] jspbook\ch09\attrIncluder.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 <%@ page contentType="text/html;charset=utf-8" %> <html> <head><title>attrIncluder</title></head> <body> 종류: 서적 <% String type = "language"; request.setAttribute("type", type); //type 속성 설정 %> <jsp:include page="./include/attrSub.jsp" flush="false"/> // attrSub.jsp 페이지 포함 </body> </html> 제9장
6. 포함할 페이지로의 정보 전달 #2: request 기본 객체의 속성을 활용한 정보 전달 앞선 예제의 재구성: request.getAttribute() 사용 [예제 9.11-2] jspbook\ch09\include\attrSub.jsp 01 02 03 04 05 06 07 08 09 10 11 <%@ page contentType="text/html;charset=utf-8" %> <% String type = (String)request.getAttribute("type"); // type 속성 얻어오기 %> <br/> 유형: <%= type %> <br/> 리스트: <ol> <li> JSP 웹 프로그래밍 <li> Java 정복 </ol> 제9장
7. JSP에서 요청흐름과 모듈화의 비교 정리 #1: forward 첫 번째 방법: <jsp:forward> 액션 태그 사용 예 머리속 개념 주의점 요청 흐름이 넘어가게 되는 페이지는 반드시 해당 웹 어플리케이션 내부에 존재하는 페이지여야 한다는 점 <jsp:forward page="move.jsp" flush="false" /> 또는 <jsp:forward page="move.jsp" flush="false"> <jsp:param name="title" value="JSP"/> <jsp:param name="subject" value="forward"/> </jsp:forward> <jsp:forward page="http://www.daum.net" flush="false" /> ----- (X) 제9장
7. JSP에서 요청흐름과 모듈화의 비교 정리 #2: forward 두 번째 방법: reponse.sendRedirect 메소드 사용 예 머리속 개념 주의점 현재의 JSP 페이지와 전혀 관계가 없는 Daum 웹 페이지도 설정이 가능 <% String paramString = "code=A000&type=C"; response.sendRedirect("move.jsp"+paramString); %> <% response.sendRedirect("http://www.daum.net"); %> ----- (O) 제9장
7. JSP에서 요청흐름과 모듈화의 비교 정리 #3: include 첫 번째 방법: <jsp:include> 액션 태그 사용 예 머리속 개념 주의점 page 속성에 설정될 수 있는 JSP 페이지는 반드시 현재 JSP 페이지가 수행되고 있는 웹 어플리케이션과 같은 폴더 밑 그 하위에 존재해야 함. <jsp:include page="module.jsp" flush="false" /> 또는 <jsp:include page="module.jsp" flush="false"> <jsp:param name="title" value="JSP"/> <jsp:param name="subject" value="include"/> </jsp:include> 제9장
7. JSP에서 요청흐름과 모듈화의 비교 정리 #4: include 두 번째 방법: <%@ include> 지시문: Chap 6 사용 예 머리속 개념 주의점 file 속성에 할당할 수 있는 파일 위치도 현재 웹 어플리케이션 내부에 존재하는 것만 가능 하지만 반드시 JSP 페이지 또는 HTML 페이지일 필요는 없으며 간단한 텍스트 파일도 가능하다. <%@ include file="include.jspf" %> 제9장