-
Mon/Feb/10[Java-JSP] day28.JSP action tag_forward/includeStudy/2020 국비교육_Java 2020. 2. 10. 09:34
Mon/Feb/10
[Java-JSP] day28.
JSP action tag_forward/include
Action Tag
: JSP 에서 자바 코드 등 script 언어 사용하지 않고도 다른 페이지의 Servlet / JavaBean 등 객체에 접근할 수 있도록 태그를 이용해 구현된 기능
종류와 역할
- 페이지 흐름 제어 액션 :
-
forward
-
<jsp:forward page = "page_file_name">
-
<jsp:param name="param_name" value = "param_value"> </jsp:forward> // forward 되는 페이지에 parameter 전송할 경우
-
-
RequestDispatcher.forward(request, response)와 동일 기능
-
-
include
-
<jsp:include page = "page_file_name">
-
<jsp:param name = "param_name" value = "param_value"> </jsp:include> // include 되는 페이지에 parameter 전송할 경우
-
-
RequestDispatcher.include(request.response) 와 동일 기능
-
-
JSP의 내장 객체
-
page → application으로 갈수록 범위가 넓어짐
-
page : 해당 페이지 내에서만 사용가능
-
request : file까지 전송가능
-
session
-
application
-
- JavaBean 사용 액션
-
useBean
-
bean class object 생성
-
<jsp:useBean id="bean_object_name" class="bean_class_name" scope="area(request||session||application)" />
-
scope 는 생략가능
-
반드시 <%@page import =""> 통해 미리 import 해놔야 함, VO 클래스에서 빈 생성자 반드시 있어야 함
-
bean Class = (VO Class)
-
-
myBatis에서 그대로 쓰이므로 반드시 알아둘것
-
-
setProperty
-
특정 bean 객체의 특정 속성값을 지정한 값으로 설정
-
useBean 통한 객체 생성 선행 필수
-
<jsp:setProperty name = "bean_name" property = "property_name" value = "property_value" />
-
<jsp:setProperty name = "bean_name" property = "*" /> // 모든 속성 적용
-
-
getProperty
-
특정 bean 객체에서 setProperty로 설정된 값 호출
-
<jsp:getProperty name = "bean_name" property="property_name" />
-
▶ javaBean을 이용하면 getParameter / setAttribute 로 일일이 저장하던 것을 <jsp:useBean ~ /> <jsp:setProperty ~property = "*" />로 한방에 해결 가능
단, (Member class의 변수 이름 == parameter property name) 인 경우 && 모든 parameter를 입력할 경우
이 구조로 DB를 편하게 만들어 놓은 것이 myBatis 임
- 애플릿 사용 액션 : plugin
* JavaBean 만들려면 내부변수는 모두 private으로 접근제한 - getter / setter 필요
예제)
forward 연습
1. forward_form1.jsp → forward_from1.jsp → forward_to1.jsp
2. forward_form2.jsp → forward_from2.jsp → a.jsp, b.jsp, c.jsp, d.jsp
3. forward_form3.jsp → forward_from3.jsp → green.jsp, red.jsp, blue.jsp, yellow.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>EXE3</title> </head> <body> <H1>forward 예제3</H1> <FORM METHOD = "POST" ACTION = "forwardFrom3.jsp" > 이름 입력 : <INPUT TYPE = "TEXT" NAME = "name" /> <P> 색선택 <BR> <INPUT TYPE = "RADIO" NAME = "color" VALUE = "yellow" /> <LABEL>노랑색</LABEL> <BR /> <INPUT TYPE = "RADIO" NAME = "color" VALUE = "green" /> <LABEL>초록색</LABEL> <BR /> <INPUT TYPE = "RADIO" NAME = "color" VALUE = "blue" /> <LABEL>파란색</LABEL> <BR /> <INPUT TYPE = "RADIO" NAME = "color" VALUE = "red" /> <LABEL>붉은색</LABEL> <P> <INPUT TYPE = "SUBMIT" VALUE = "SUBMIT" /> </FORM> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>EXE3</title> </head> <body> <% request.setCharacterEncoding("UTF-8"); String color = request.getParameter("color")+".jsp"; %> <jsp:forward page = "<%=color %>" /> </body> </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>EXE3</title> </head> <body> <H1>BLUE</H1> <% String name = request.getParameter("name") ; String color = request.getParameter("color") ; %> <b><%=name %></b> 님의 좋아하는 색은 <br> <b><%=color %></b> 이고, <br> 자기 탐구와 내적 성장을 상징하는 색입니다. <img src = "./forward3_image/<%=color %>.jpg" WIDTH = "30%" HEIGHT = "30%" /> </body> </html>
include 연습
* <table>
cellpadding : cell border 와 text의 간격
cellspacing : cell 과 cell 사이 간격
template_test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String content_page = request.getParameter("CONTENTPAGE"); %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>EXE_TEMPLATE</title> </head> <body> <H1>TEMPLATE_TEST.JSP</H1> <hr><BR /> <TABLE WIDTH="600" BORDER="1" CELLPADDING="3" CELLSPACING="1" ALIGN="CENTER"> <!-- TOP --> <TR HEIGHT="80"> <TD COLSPAN="2"><jsp:include page="top.jsp" flush = "false" /></TD> </TR> <TR> <!-- LEFT --> <TD WIDTH="150" VALIGN="TOP"><jsp:include page="left.jsp" flush = "false" /></TD> <!-- CONTENT --> <TD WIDTH="350" VALIGN="TOP"><jsp:include page="<%=content_page%>" flush="false" /></TD> </tr> <!-- BOTTOM --> <TR HEIGHT="80"> <TD COLSPAN="2"><jsp:include page="bottom.jsp" flush="false" /></TD> </TR> </TABLE> <br> <hr> </body> </html>
top.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <H3>상단메뉴 : TOP.JSP</H3> <a href="main.jsp">HOME</a> <a href="comp_forward.jsp">회사소개</a> <a href="goods_forward.jsp">제품소개</a>
comp_forward.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <jsp:forward page="template_test.jsp"> <jsp:param name="CONTENTPAGE" value="comp.jsp" /> </jsp:forward>
comp.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <H3>COMP.JSP</H3> <hr> 회사소개 페이지 <BR /> 상단 메뉴의 HOME을 클릭하면 <BR /> 처음 화면으로~
실습)
네이버 메인화면 layout copy
layout.jsp - main layout 페이지
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String log = (String) request.getParameter("log"); if(request.getParameter("log")==null){ log = "logout.jsp"; } String today_content = (String) request.getParameter("today_content"); if (today_content == null) { today_content = "enter.jsp"; } String shops = (String) request.getParameter("shops"); if(shops == null) shops = "goods.jsp"; %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <style> .search { HEIGHT: 600 px; } #search_button { width : 75px; background-color: #2E8B57; border-radius: 10px; color : white; } </style> <title>LAYOUT</title> </head> <body> <H1>NAVER_LAYOUT_TEST</H1> <TABLE BORDER="1" CELLPADDING="1" CELLSPACING="0"> <TR> <TD COLSPAN="1"><A HREF="main.jsp"><IMG SRC="./img/naver_logo.png" /></A></TD> <TD COLSPAN="3"><input class = "search" TYPE="SEARCH" /><INPUT TYPE="BUTTON" VALUE="검색" class = "search" id="search_button" /></TD> </TR> <TR> <TD COLSPAN = "3"><jsp:include page = "menubar.jsp" flush = "false" /></TD> <TD COLSPAN = "1"> SEARCH LIST </TD> </TR> <TR> <TD COLSPAN = "2" width = "500px" HEIGHT = "100px" align = "center" ><jsp:include page = "mainad.jsp" flush = "false" /></TD> <TD COLSPAN = "2">LOGIN MENU<br><jsp:include page = "<%=log %>" flush = "false" /></TD> </TR> <TR> <TD COLSPAN = "1" ROWSPAN = "2" WIDTH = "100PX"><jsp:include page = "news_select.jsp" flush = "false" /></TD> <TD COLSPAN = "1" ROWSPAN = "2">NEWS STAND<jsp:include page = "news_stand.jsp" flush = "false" /> </TD> <TD COLSPAN = "2"> RIGHT AD<br><jsp:include page = "right_ad.jsp" flush = "false" /></TD> </TR> <TR> <TD COLSPAN = "2" align = "center">SHOPPING SELECT<br /><jsp:include page = "shop_select.jsp" flush = "false" /></TD> </TR> <TR> <TD COLSPAN = "2"><jsp:include page = "today_list.jsp" flush = "false" /></TD> <TD COLSPAN = "2" ROWSPAN = "2">SHOPPING<jsp:include page = "<%=shops %>" flush = "false" /></TD> </TR> <TR> <TD COLSPAN = "2" align = "center" >TODAY ARTICLES<jsp:include page = "<%=today_content %>" flush = "false" /></TD> </TR> </TABLE> </body> </html>
main.jsp - random()으로 layout.jsp 들어갈때마다 다른 메뉴 보이게 함
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import = "java.util.Random"%> <% Random rd = new Random(); String[] todays = {"enter.jsp", "sports.jsp", "life.jsp", "know.jsp", "fun.jsp"}; String[] shops = {"goods.jsp", "malls.jsp", "mens.jsp"}; %> <jsp:forward page="layout.jsp"> <jsp:param value = "logout.jsp" name="log" /> <jsp:param value = "<%=todays[rd.nextInt(todays.length)] %>" name = "today_content" /> <jsp:param value = "<%=shops[rd.nextInt(shops.length)] %>" name = "shops" /> </jsp:forward>
menubar.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <style> #NAVER { COLOR : #2E8B57; } </style> <table width = "600px" align = "center" > <tr> <td ID = "NAVER">메일</td> <td ID = "NAVER">카페</td> <td ID = "NAVER">블로그</td> <td ID = "NAVER">지식in</td> <td ID = "NAVER">쇼핑</td> <td ID = "NAVER">PLAY</td> <td>사전</td> <td>뉴스</td> <td>증권</td> </tr> </table>
news_select.jsp
// 이 부분에서 <div style = "over-flow : scroll;"> 써서 스크롤 만들어보려고 했는데, table-tr에 height 설정을 안해서 그런지 스크롤 모양만 생기고 활성화가 안되어서 그냥 select 로 해결함..
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <SELECT SIZE = "10"> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=연합인포맥스'">연합인포맥스</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=이코노미조선'" >이코노미조선 </OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=조선비즈'" >조선비즈</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=조선일보'" >조선일보</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=한국경제'" >한국경제</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=매일경제'" >매일경제</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=TV조선'" >TV조선</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=매경이코노미'" >매경이코노미</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=한경비즈니스'" >한경비즈니스</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=머니에스'" >머니에스</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=머니투데이'" >머니투데이</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=아시아경제'" >아시아경제</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=서울경제'" >서울경제</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=더팩트'" >더팩트</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=르몽드 디플로마티크'" >르몽드 디플로마티크</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=국민일보'" >국민일보</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=중앙일보'" >중앙일보</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=YTN'" >YTN</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=시사저널'" >시사저널</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=비즈니스워치'" >비즈니스워치</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=비즈니스포스트'" >비즈니스포스트</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=한국금융신문'" >한국금융신문</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=이코노미스트'" >이코노미스트</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=초이스경제'" >초이스경제</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=일요시사'" >일요시사</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=에너지경제'" >에너지경제</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=시사오늘'" >시사오늘</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=연합뉴스TV'" >연합뉴스TV</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=더스쿠프'" >더스쿠프</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=법률방송뉴스'" >법률방송뉴스</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=법률신문'" >법률신문</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=씨네21'" >씨네21</OPTION> <OPTION ONMOUSEDOWN = "location.href='news_forward.jsp?news=MONEY'" >MONEY</OPTION> </SELECT>
news_forward.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); String news = request.getParameter("news"); %> <jsp:forward page="layout.jsp" > <jsp:param value="<%=news %>" name="news"/> </jsp:forward>
news_stand.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String news = request.getParameter("news"); String news_null = "뉴스를 선택하세요"; if (news == null) { news = news_null; } %> <div align="center"> <% if (news.equals(news_null)) { out.print(news_null); } else { out.print(news + "를 선택하셨습니다."); } %> </div>
전체파일 : https://github.com/ezerwi/lecture0210_naver_layout
ezerwi/lecture0210_naver_layout
Contribute to ezerwi/lecture0210_naver_layout development by creating an account on GitHub.
github.com
include / forward 문법을 외우기 위한..노가다가 필요한 작업이었다..'Study > 2020 국비교육_Java' 카테고리의 다른 글
Wed/Feb/12[Java-JSP] day30. JSTL 활용한 검색/페이지 기능 게시판 (ing) (0) 2020.02.12 Tue/Feb/11 [Java-JSTL] day29. JSTL 기초 (0) 2020.02.11 Wed/Feb/05 [Java] day25. DAO Model 활용 (0) 2020.02.05 Tue/Feb/04 [Java] day24. - JSP (0) 2020.02.04 Mon/Feb/03 [Java] day23. 페이지 간 데이터 이동 (0) 2020.02.03 -