9 장. 요청흐름제어와모듈화
1. <jsp:forward> 액션태그를이용한흐름제어 <jsp:forward> 액션태그 하나의 JSP 페이지에서다른 JSP 페이지로요청처리를전달할때사용 중요사항 from.jsp 가아닌 to.jsp 가생성한응답결과가웹브라우저에전달된다. from.jsp 에서사용한 request, response 기본객체가 to.jsp 에그대로전달된다. <jsp:forward> 액션태그사용이유 모듈화 (Modulization) 2/51 제 1 장
1. <jsp:forward> 액션태그를이용한흐름제어 <jsp:forward> 액션태그사용법 기본용법 <jsp:forward page= 이동할페이지 /> 사용예 <jsp:forward page="forward/to.jsp"/> <% String url="forward/to.jsp"; %> <jsp:forward page="<%= url %>"/> 3/51
1. <jsp:forward> 액션태그를이용한흐름제어 01 03 04 05 06 07 08 09 10 01 03 04 05 06 07 08 09 4/51 10 <jsp:forward> 액션태그사용법예 <html> <head><title>from.jsp의제목 </title></head> <body> 이페이지는 from.jsp가생성한것입니다. <jsp:forward page="/ch09/forward/to.jsp" /> // to.jsp로요청흐름포워딩 </body> </html> [ 예제 9.1-1] jspbook\ch09\from.jsp [ 예제 9.1-2] jspbook\ch09\forward\to.jsp <html> <head><title>to.jsp의실행결과 </title></head> <body> to.jsp가생성한내용 <br/> 날짜 : <%= new java.util.date() %> </body> 제9장 </html>
1. <jsp:forward> 액션태그를이용한흐름제어 <jsp:forward> 액션태그사용법예실행결과 위결과에서주목할만한점 웹브라우저의주소는 from.jsp 로서최초로요청을받은 JSP 의주소이다. from.jsp 에서출력할내용은브라우저에보이지않고 <jsp:forward> 를사용해서이동한 to.jsp 의출력결과만웹브라우저에출력되었다. 웹브라우저는요청의흐름이이동되는사실을전혀알지못한다. 5/51
1. <jsp:forward> 액션태그를이용한흐름제어 <jsp:forward> 액션태그사용법 page 속성에경로명입력하는 2 가지방법 웹어플리케이션폴더를기준으로한절대경로 현재 JSP 페이지 ( 즉, from.jsp) 를기준으로한상대경로 경로입력예 1 절대경로 <jsp:forward page="/ch09/forward/to.jsp" /> 상대경로 <jsp:forward page="forward/to.jsp" /> 6/51
1. <jsp:forward> 액션태그를이용한흐름제어 <jsp:forward> 액션태그사용법 경로입력예 2 절대경로 <jsp:forward page= /ch09/forward/to.jsp" /> 상대경로 <jsp:forward page="../forward/to.jsp" /> 7/51
1. <jsp:forward> 액션태그를이용한흐름제어 <jsp:forward> 액션태그와출력버퍼와의관계 <jsp:forward> 가현재까지출력버퍼에저장되던내용이모두버려지고이동한페이지의출력결과가새롭게버퍼에삽입 즉, 출력버퍼가존재하기때문에 <jsp:forward> 액션태그를사용할수있다. 8/51
1. <jsp:forward> 액션태그를이용한흐름제어 01 03 04 05 06 07 08 09 10 11 <jsp:forward> 액션태그와출력버퍼와의관계 [ 예제 9.2] jspbook\ch09\fromnobuffer.jsp <%@ 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> 이미웹브라우저에데이터가전송된경우 <jsp:forward> 액션태그를사용해서흐름을이동할수없다! 9/51
1. <jsp:forward> 액션태그를이용한흐름제어 <jsp:forward> 액션태그의활용법 일반적인 <jsp:forward> 액션태그활용법 이용자가서버로보내는정보의조건에따라서서로다른결과화면을보여줌 <% String forwardpage = null; // 조건에따라이동할페이지를지정 if ( 조건판단1) { forwardpage = " 페이지URL1"; } else if ( 조건판단2) { forwardpage = " 페이지URL2"; } else if ( 조건판단3) { forwardpage = " 페이지URL3"; } %> <jsp:forward page="<%= forwardpage %>"/> 10/51
1. <jsp:forward> 액션태그를이용한흐름제어 <jsp:forward> 액션태그의활용법 입력받은파라미터에따라서서로다른결과를보여줘야하는 JSP 코드 1 <% String option = request.getparameter("option"); // 조건에따라이동할페이지를지정 if (option.equals("1")) { %>... 내용 <% else if (option.equals("2")) { %>... 내용 <% else if (option.equals("3")) { %>... 내용 <% } 11/51 %>
1. <jsp:forward> 액션태그를이용한흐름제어 <jsp:forward> 액션태그의활용법 입력받은파라미터에따라서서로다른결과를보여줘야하는 JSP 코드 2 별도의페이지를마련하고 <jsp:forward> 액션태그사용 좀더깔끔 Modulization <% } %> 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 %>" /> 12/51
1. <jsp:forward> 액션태그를이용한흐름제어 19 13/51 20 <jsp:forward> 액션태그의올바른활용예 [ 예제 9.3-1] jspbook\ch09\select.jsp 01 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 <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>
1. <jsp:forward> 액션태그를이용한흐름제어 <jsp:forward> 액션태그의활용법예 ( 계속 ) [ 예제 9.3-2] jspbook\ch09\view.jsp 01 03 04 05 06 07 08 09 10 11 12 13 14 <% 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에저장된페이지로포워딩 14/51
1. <jsp:forward> 액션태그를이용한흐름제어 <jsp:forward> 액션태그의활용법예 ( 계속 ) [ 예제 9.3-3] jspbook\ch09\forward\1.jsp 01 <html> 03 <head><title>1 페이지 </title></head> 04 <body> 05 06 이페이지는 <b><font size="5">1</font></b> 입니다. 07 08 </body> 09 </html> 15/51
2. 이동할페이지로의정보전달 <jsp:forward> 액션태그를활용한 request 파라미터전달 <jsp:param> 액션태그 <jsp:forward> 액션태그를사용해서요청정보를전달할페이지에추가로정보를전달하고싶은경우에사용 사용용법 <jsp:forward page="move.jsp"> <jsp:param name="title" value="jsp"/> <jsp:param name="subject" value="forward"/> </jsp:forward> <jsp:forward> 액션태그의속성 name - 이동할페이지에전달될파라미터의이름 ( 표현식사용불가 ) value - 이동할페이지에전달될파라미터의값 ( 표현식사용가능 ) 16/51
2. 이동할페이지로의정보전달 <jsp:forward> 액션태그를활용한 request 파라미터전달예 [ 예제 9.4-1] jspbook\ch09\paramfrom.jsp 01 03 04 05 06 07 08 <% 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> 01 03 04 05 06 07 08 <html> <head><title>paramto</title></head> <body> p1 파라미터 : <%=request.getparameter("p1")%> <br/> p2 파라미터 : <%=request.getparameter("p2")%> </body> </html> [ 예제 9.4-2] jspbook\ch09\forward\paramto.jsp 17/51
2. 이동할페이지로의정보전달 <jsp:forward> 액션태그를활용한 request 파라미터전달예 ( 계속 ) paramfrom.jsp 수행에서 "p1" 파라미터를지정하지않은경우 http://localhost:8080/jspbook/ch09/paramfrom.jsp paramfrom.jsp 수행에서 "p1" 파라미터를지정한경우 http://localhost:8080/jspbook/ch09/paramfrom.jsp?p1=hello 18/51
2. 이동할페이지로의정보전달 request 기본객체가지닌속성을활용한정보전달 속성 (Attribute) 를활용한정보전달 19/51
2. 이동할페이지로의정보전달 request 기본객체가지닌속성을활용한정보전달 [ 예제 9.5-1] jspbook\ch09\forward\timefrom.jsp 01 03 04 05 06 07 08 <%@ page import = "java.util.calendar" %> <% Calendar cal = Calendar.getInstance(); request.setattribute("cal", cal); request.setattribute("name", " 홍길동 "); %> // Calendar 객체와 String 객체를 request 기본객체에속성으로저장 <jsp:forward page="forward/timeto.jsp"/> // timeto.jsp 로포워딩 20/51
01 03 04 05 06 07 08 09 10 11 12 13 14 15 2. 이동할페이지로의정보전달 request 기본객체가지닌속성을활용한정보전달 <%@ 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> [ 예제 9.5-2] jspbook\ch09\forward\timeto.jsp // request 기본객체에서속성정보읽어옴 21/51
3. response 기본객체를이용한흐름제어 웹브라우저에서페이지가자동으로이동 response 객체의 redirect 기능이나클라이언트에서처리하는자바스크립트방식을사용 <% String paramstring = "code=a000&type=c"; response.sendredirect("move.jsp"+paramstring); %> 22/51
3. response 기본객체를이용한흐름제어 웹브라우저에서페이지가자동으로이동하는예 [ 예제 9.6-1] jspbook\ch09\sendparam1.jsp 01 03 04 05 06 07 08 09-10 <%@ 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=" + numb erstring); %> // receiveparam.jsp 로리다이렉트 // Random 객체로부터임의의정수값을얻어온다. 23/51
3. response 기본객체를이용한흐름제어 웹브라우저에서페이지가자동으로이동하는예 ( 계속 ) [ 예제 9.6-2] jspbook\ch09\receiveparam.jsp 01 03 04 05 06 07 <html> <head><title> 파라미터출력 </title></head> <body> 전달받은정수 : <%= request.getparameter("num") %> </body> </html> 24/51
4. 자바스크립트를이용한흐름제어 01 03 04 05 06 07 08 09 10-11 웹브라우저에서페이지가자동으로이동하는예 ( 계속 ) 클라이언트에서처리하는자바스크립트방식을사용 [ 예제 9.6-3] jspbook\ch09\sendparam2.jsp <%@ page import="java.net.urlencoder" %> <%@ page import="java.util.random" %> <% Random random = new Random(); int number = random.nextint(); String numberstring = Integer.toString(number); // 숫자를문자열로변환 // Random 객체로부터임의의정수값을얻어온다. %> <script language = "JavaScript"> location.href = "<%= request.getcontextpath() %>/ch09/receiveparam.jsp?num=<%= numbe rstring %>"; // Javascript를활용해서리다이렉트 </script> 25/51
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 <jsp:include> 액션태그 지정한페이지를 <jsp:include> 액션태그가위치한부분에포함시킬때활용 <jsp:include> 액션태그는이액션태그가수행되기전에저장되는출력버퍼의내용을버리지않고전체실행결과에포함 26/51
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 <jsp:include> 액션태그사용법 <jsp:include page=" 포함할페이지 " flush="true" /> flush="false" : " 출력내용 A" 를출력버퍼에여전히저장한채요청흐름이 sub.jsp 로이동된다. flush="true" ( 디폴트 ): " 출력내용 A" 는웹브라우저로보내어지고요청흐름이 sub.jsp 로이동 출력버퍼를이렇게비우게되면 HTTP 응답헤더정보도함께보내어지므로이후 ( 요청흐름이 sub.jsp 로이동한후 ) 에헤더정보를추가하거나변경하는작업은할수가없다. 27/51
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 <jsp:include> 액션태그사용법 [ 예제 9.7-1] jspbook\ch09\includer.jsp 01 03 04 05 <html> <head><title>includer 페이지 </title></head> <body> includer.jsp에서출력하는내용 : <%= "Hello World!" %> 06 07 <jsp:include page="include/sub.jsp" flush="false" /> // sub.jsp 포함 08 09 10 11 액션태그수행이후에출력하는내용. </body> </html> [ 예제 9.7-2] jspbook\ch09\include\sub.jsp 01 03 04 <p> <font size="+2" color="blue">sub.jsp에서출력하는내용 : <%= "Hello World!" %></font> </p> 28/51
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 <jsp:include> 액션태그사용법 소스코드보기 <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> 29/51
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 <jsp:include> 액션태그를이용한페이지모듈화 일반적인페이지레이아웃 페이지레이아웃의이전방법 HTML 태그인 <frame> 과 <frameset> 을사용 최근방법 HTML 태그인 <table>, <tr>, <td> 태그등으로처리 30/51
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 <jsp:include> 액션태그를이용한페이지모듈화 <table>, <tr>, <td> 태그를활용한페이지레이아웃의전형적인예 31/51 <table> <tr> <td colspan="2"> <!-- 모든페이지에서같은내용을지니는상단메뉴코드 --> <a href="...">home</a>...... </td> </tr> <tr> <td width="80%"> <!-- 페이지마다다른중앙주내용부분 --> Welcome to Our Site!.... </td> <td> <!-- 우측메뉴에대한코드 --> <a href="...">java</a>...... </td> </tr> <tr> <td colspan="2"> <!-- 모든페이지에서같은내용을지닌하단부가내용코드 --> Copyright 2009... </td> </tr> </table> 웹사이트가상당히많은수의 JSP 페이지로구성되어있고그러한 JSP 페이지들을같은방식으로왼쪽과같이코딩해야한다면문제가있다.
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 <jsp:include> 액션태그를이용한페이지모듈화 상당히많은 JSP 페이지가같은내용을포함할때변경작업의문제점 32/51
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 <jsp:include> 액션태그를이용한페이지모듈화 <jsp:include> 액션태그의활용가치 모듈화 (Modulization) <jsp:include> 를통한유지보수문제해결 33/51
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 01 03 04 05 06 07 08 09 10 11 12 13 14 15 <jsp:include> 액션태그를이용한페이지모듈화예제 <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> <tr> <td width="80%" valign="middle"> 반갑습니다. 중앙의주내용입니다.<br/> <img src="bird1.jpg" width="200" border="0"/> </td> [ 예제 9.8-1] jspbook\ch09\home.jsp 34/51
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 <jsp:include> 액션태그를이용한페이지모듈화예제 [ 예제 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" /> </td> </tr> </body> </html> 35/51
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 <jsp:include> 액션태그를이용한페이지모듈화예제 [ 예제 9.8-2] jspbook\ch09\include\top.jsp 01 03 TOP 메뉴 - 04 <a href="home.jsp">home</a> 05 <a href="info.jsp">info</a> 06 <a href="music.jsp">music</a> [ 예제 9.8-3] jspbook\ch09\include\menu.jsp 01 03 04 05 06 우측 MENU 페이지 <br/><br/> <a href="#"> 자기소개 </a><br/> <a href="#"> 방명록 </a><br/> <a href="#"> 자유게시판 </a> [ 예제 9.8-4] jspbook\ch09\include\bottom.jsp 36/51 01 03 04 05 BOTTOM 부가내용 - <a href="#"> 회사소개 </a> <a href="#"> 찾아오는길 </a>
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 25 37/51 26 <jsp:include> 액션태그를이용한페이지모듈화예제 01 <html> 03 <head><title> 모듈화 </title></head> 04 <body> 05 <table width="500" border="1" cellpadding="5" align="center"> 06 <tr> 07 <td colspan="2"> 08 <jsp:include page="include/top.jsp" flush="false" /> 09 </td> 10 </tr> 11 <tr> 12 <td width="80%" valign="middle"> 13 Info 내용입니다.<br/> 14 <img src="bird2.jpg" width="350" border="0"/> 15 </td> 16 <td valign="top"> 17 <jsp:include page="include/menu.jsp" flush="false" /> 18 </td> 19 </tr> 20 <tr> 21 <td colspan="2"> 22 <jsp:include page="include/bottom.jsp" flush="false" /> 23 </td> 24 </tr> </body> </html> [ 예제 9.8-5] jspbook\ch09\infojsp
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 01 <html> 03 <head><title> 모듈화 </title></head> 04 <body> 05 <table width="500" border="1" cellpadding="5" align="center"> 06 <tr> 07 <td colspan="2"> 08 <jsp:include page="include/top.jsp" flush="false" /> 09 </td> 10 </tr> 11 <tr> 12 <td width="80%" valign="middle"> 13 Music 내용입니다.<br/> 14 <img src="bird3.jpg" width="300" border="0"/> 15 </td> 16 <td valign="top"> 17 <jsp:include page="include/menu.jsp" flush="false" /> 18 </td> 19 </tr> 20 <tr> 21 <td colspan="2"> 22 <jsp:include page="include/bottom.jsp" flush="false" /> 23 </td> 24 </tr> 25 38/51 26 <jsp:include> 액션태그를이용한페이지모듈화예제 </body> </html> [ 예제 9.8-6] jspbook\ch09\music.jsp 제9장
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 <jsp:include> 액션태그와템플릿 home.jsp, info.jsp, music.jsp 에서처럼여러개의 JSP 파일이거의동일한형태를가지고있다면 Template ( 템플릿 ) 개념도입추천 39/51
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 <jsp:include> 액션태그와템플릿 [ 예제 9.9-1] jspbook\ch09\index.jsp 01 03 04 05 06 07 08 09 10 11 12 13 14 <% 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> 40/51
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 <jsp:include> 액션태그와템플릿 [ 예제 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 포함 </td> </tr> <tr> <td colspan="2"> <jsp:include page="include/bottom.jsp" flush="false" /> 이전예제의 bottom.jsp 포함 </td> </tr> </body> </html> 41/51
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 <jsp:include> 액션태그와템플릿 01 반갑습니다. 중앙의주내용입니다.<br/> 03 <img src="bird1.jpg" width="200" border="0"/> [ 예제 9.9-2] jspbook\ch09\home2.jsp 01 03 [ 예제 9.9-3] jspbook\ch09\info2.jsp Info 내용입니다.<br/> <img src="bird2.jpg" width="350" border="0"/> 01 03 [ 예제 9.9-4] jspbook\ch09\music2.jsp Music 내용입니다.<br/> <img src="bird3.jpg" width="300" border="0"/> 42/51
5. <jsp:include> 액션태그를이용한 JSP 페이지모듈화 01 03 04 05 06 <jsp:include> 액션태그와템플릿 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> [ 예제 9.9-5] jspbook\ch09\include\top2.jsp 본예제에접근하기위한 URL 모음 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 43/51
6. 포함할페이지로의정보전달 <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 03 04 05 06 07 08 09 10 11 12 <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> 44/51
6. 포함할페이지로의정보전달 <jsp:include> 액션태그를활용한 request 파라미터전달 [ 예제 9.10-2] jspbook\ch09\include\paramsub.jsp 01 <% 03 String type = request.getparameter("type"); // type 파라미터값얻어오기 04 05 06 07 08 09 10 11 %> <br/> 유형 : <%= type %> <br/> 리스트 : <ol> <li> JSP 웹프로그래밍 <li> Java 정복 </ol> 45/51
request 기본객체의속성을활용한정보전달 앞선예제의재구성 6. 포함할페이지로의정보전달 [ 예제 9.11-1] jspbook\ch09\attrincluder.jsp 01 03 04 05 06 07 08 09 10 11 12 13 <html> <head><title>attrincluder</title></head> <body> 종류 : 서적 <% String type = "language"; request.setattribute("type", type); //type 속성설정 %> <jsp:include page="./include/attrsub.jsp" flush="false"/> </body> </html> // attrsub.jsp 페이지포함 46/51
request 기본객체의속성을활용한정보전달 앞선예제의재구성 6. 포함할페이지로의정보전달 [ 예제 9.11-2] jspbook\ch09\include\attrsub.jsp 01 03 <% String type = (String)request.getAttribute("type"); // type 속성얻어오기 04 05 06 07 08 09 10 11 %> <br/> 유형 : <%= type %> <br/> 리스트 : <ol> <li> JSP 웹프로그래밍 <li> Java 정복 </ol> 47/51
7. JSP 에서요청흐름과모듈화의비교정리 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) 48/51
7. JSP 에서요청흐름과모듈화의비교정리 forward 두번째방법 : reponse.sendredirect 메소드 사용예 머리속개념 <% String paramstring = "code=a000&type=c"; response.sendredirect("move.jsp"+paramstring); %> 주의점 현재의 JSP 페이지와전혀관계가없는 Daum 웹페이지도설정이가능 <% response.sendredirect("http://www.daum.net"); %> ----- (O) 49/51
7. JSP 에서요청흐름과모듈화의비교정리 include 첫번째방법 : <jsp:include> 액션태그 사용예 <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> 머리속개념 주의점 page 속성에설정될수있는 JSP 페이지는반드시현재 JSP 페이지가수행되고있는웹어플리케이션과같은폴더밑그하위에존재해야함. 50/51
7. JSP 에서요청흐름과모듈화의비교정리 include 두번째방법 : <%@ include> 지시문 사용예 머리속개념 <%@ include file="include.jspf" %> 주의점 file 속성에할당할수있는파일위치도현재웹어플리케이션내부에존재하는것만가능 하지만반드시 JSP 페이지또는 HTML 페이지일필요는없으며간단한텍스트파일도가능하다. 51/51