9장. 요청 흐름제어와 모듈화 #1: <jsp:forward> 액션태그 사용

Slides:



Advertisements
Similar presentations
홈페이지 만들기. Cyber 공간에서 자신이 갖고 있는 정보 나 관심사를 다른 사람들에게 체계적으 로 공개하거나, 시간과 장소에 구애 받지 않고 정보화 시대에 발맞춰 자신을 어필 할 수 있음.
Advertisements

HTML + JavaScript UIT Series [Chapter 3] HTML 을 이용한 회원 정보 입력 양식 만들기.
XHTML Basic 제 13 장 1. XHTML Basic의 개요 2. XHTML Basic 기본 문법 3. 표 만들기
11 JSTL 사용하기.
2002/3/20 HTML 2002/3/20
10장 동적 HTML (Dynamic HTML)
HTML & CSS 겉핥기 2012 SUMMER SPARCS.
HTML과 CGI 프로그래밍 PHP 웹 프로그래밍 (PHP Web Programming) 문양세
예방접종 정보 SITE.
웹 해킹 기초와 실습.
1 HTML5 개요.
Internet Computing KUT Youn-Hee Han
12장. JSP에서 자바빈 활용 제12장.
7. JavaBeans 프로그래밍 JavaBeans JavaBeans 만들기 빈을 이용한 회원가입 양식 작성하기 빈 작성
12 커스텀 액션.
11장 방명록 한빛미디어(주).
UIT Series HTML + JavaScript [Chapter 1] Html을 이용한 웹 페이지 만들기.
HTML &JAVASCRIPT.
2 서블릿의 기초.
3장. 웹 어플리케이션과 JSP 및 Servlet의 이해 제3장.
9 표준 액션.
10장. 에러 처리 제10장.
JSP 내장 객체 개요 내장 객체 (참조 변수 이름) 자바 클래스 주요 역할
5 익셉션 처리.
Web Server와 DB 연동.
1장. JSP 및 Servlet을 활용한 동적 웹 프로그래밍 소개 제1장.
이 름: 정홍도 (과장) 팀 명: 개발사업팀 일 자:
3 JSP의 기초.
7 JSP의 기초.
4 쿠키와 세션.
6장. JSP 지시문 (Directives) 제6장.
중 간 고 사 (웹프로그래밍)
학습목표 학습목차 Table 태그를 이용하여 표 만들기를 이해할 수 있습니다.
강의 보조자료 & Homework #2 - 로그인과 이미지 카운터 만들기 -
홈페이지 만들기 HTML HyperText Markup Language 홈페이지를 만들 때 사용하는 언어
07장. <TABLE> 태그로 표 디자인하기
5. JSP의 내장객체1.
[INA240] Web Programming Homework #3 [INA240] Web Programming
5부 mHTML/KUN언어 배우기 5-1 mHTML과 KUN에 대해서 5-2 mHTML 기본태그
HTML5+CSS3 실무 테크닉 김은기 저.
16장 설문조사 한빛미디어(주).
4. JSP의 스크립트 요소 Script 요소의 이해 선언문(Declaration) Scirptlet 표현식 주석
8 데이터베이스 사용하기.
12 데이터베이스 사용하기.
Cookie 와 Session.
Html(front end) & jsp(back end)
HTML.
10장. 자바빈(JavaBean) 이 장에서 배울 내용 : 화면에 표시를 담당하는 JSP페이지와 실제프로그램을 처리하는 로직을 분리하는 것에 대해서 학습한다. 하나의 JSP페이지 안에 디자인부와 로직부가 혼재하게 되면 프로그램의 협업과 유지보수가 어렵다. 자바빈은 로직을.
이장에서 배울 내용 : 화면에 표시를 담당하는 JSP페이지와 실제프로그램을 처리하는 로직을 분리하는 것에 대해서 학습한다
Web Vulnerabilities 정보 보호 2008/05/31 Getroot.
9장 웹 사이트 초기 화면 제작 한빛미디어(주).
JavaScript 기초 Chapter 8 Part II
CGI (Common Gateway Interface)
JSP Programming with a Workbook
인터넷응용프로그래밍 Atom(개발 환경).
HTML 문서 작성 PART 1 Chapter 2 Part 1
HTML CSS 자바스크립트 무작정 따라하기
제 14 장 커스텀 태그 학기 인터넷비즈니스과 강 환수 교수.
JSP문법 JSP 기본 구조를 이해한다. 지시어, 스크립트릿 JSP 액션 태그 사용법을 익힌다. 한빛미디어(주)
표현언어와 커스텀태그 표현 언어의 개념을 이해한다. JSP1.2 커스텀 태그 개발 방법을 익힌다.
KTF 무선인터넷 표준 UI 2000년 4월 SK 텔레콤 귀중 CP 제공용
CGI (Common Gateway Interface)
17장 웹 사이트 제작 완성 한빛미디어(주).
문서작성에 사용되는 기본태그 MARQUEE, A.
ASP 수행 화면(1).
4장 JSP 페이지의 디렉티브(Directive)
세션 (Session) Yang-Sae Moon Department of Computer Science
Chapter03 HTML 포토앨범 만들기
JSP Programming with a Workbook
HTML HTML 기본 구조와 태그 다양한 태그 다루기
Presentation transcript:

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장