ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Mon/Feb/10[Java-JSP] day28.JSP action tag_forward/include
    Study/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> &nbsp;&nbsp;
    <a href="comp_forward.jsp">회사소개</a> &nbsp;&nbsp;
    <a href="goods_forward.jsp">제품소개</a> &nbsp;&nbsp;

    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 문법을 외우기 위한..노가다가 필요한 작업이었다..

    댓글

Designed by Tistory.