본문으로 바로가기

include 액션태그를 이용한 중복처리

category JSP 2018. 4. 16. 16:22

오늘은 include 액션태그를 이용해서 중복된 페이지를

보통 하나의 웹 사이트를 구성하는 페이지들은 상단, 좌측 메뉴 등 동일한 페이지들로 구성된다. 이렇게 공통적으로 구성된 페이지의 코드를 모든 JSP 페이지마다 작성을 한다면 코드 중복이 발생하게된다.

이런 화면 구성 요소의 코드 중복 문제를 없앨 때 사용하는 것이 <jsp:include>액션태그이다.

 

이번에는 include 액션태그를 이용해서 간단한 페이지를 만들어 보고자 한다

 

먼저 우리가 만들 결과 화면이다.

 

이 화면을 구성하기 위해서는 top, bottom, left, newitem, bestitem, template.jsp 총 6개의 jsp 파일이 필요하다.

 

*top.jsp

1
2
<a href="Login.jsp">Login</a> |    <!-- Login.jsp로 이동하는 하이퍼링크를 지정해준다. -->
<a href="Join.jsp">Join</a>        
cs

 

간단하게 만들어 보기위해서 Login, Join.jsp의 기능들은 생략한다.

 

 

*bottom.jsp

1
<p align="center">Since 2018</p>
cs

메인 화면의 하단부를 구성하는 부분이다.

 

 

*left.jsp

1
2
<a href ="?page=newitem">신상품</a><br><br> <!-- .jsp가 보이면 다른사람이 어떤 파일로 만들었는지에 대해 알 수 있어서 보안상의 문제로 지우는게 낫다. -->
<a href ="?page=bestitem">인기상품</a>
cs

메인 화면의 좌측메뉴를 구성하는 부분이다.

 

 

*newitem.jsp

1
<h2>신상품 목록입니다.</h2>
cs

메인화면에서 좌측메뉴에서 신상품목록을 클릭시 오른쪽칸에 바뀌는 페이지이다.

 

 

*bestitem.jsp

1
<h2>인기상품 목록입니다.</h2> 
cs

메인화면에서 좌측메뉴에서 인기상품목록을 클릭시 오른쪽칸에 바뀌는 페이지이다.

 

 

*template.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>상품페이지</title>
</head>
<body>
    <table border="3" width="1000" >
        <tr>
        <td colspan="2" height="50">            
            <jsp:include page="top.jsp"></jsp:include>  <%-- 화면의 상단 부분인 테이블의 첫번째  부분에 top.jsp를 include 액션태그를 이용해서 include를 시킨다 --%>
        </td>
        <tr>
            <td align ="center" width="150" height="100">    
                <jsp:include page="left.jsp"></jsp:include>    <%-- 테이블의 두번째칸의 왼쪽부분에 --%>
            </td>
        <%
        String sel_page = request.getParameter("page");    /* 처음에 template페이지에서 바로 실행하니까 sel_page에는 null값이 들어온다. */
    
        if(sel_page == null){                    
            sel_page = "newitem";                        /* 초기화면에 표시될 include페이지 */
        }
        sel_page +".jsp";                                /* left.jsp에서 링크를 누르면 page의  newitem이나 bestitem이 들어오고  뒤에 .jsp를 붙인다 */
        %>
            <td align="center">
                <jsp:include page="<%= sel_page %>"></jsp:include>    <!-- newitem이나 bestitem뒤에 .jsp가 붙은채로 sel_page가 넘어와서 표현식으로 화면에 표시한다. -->
            </td>
            
        </tr>
            <tr>
            <td colspan="2" height="50">        
            <jsp:include page="bottom.jsp"></jsp:include>  <%-- 화면의 하단 부분인 테이블의 세번째  부분에 bottom.jsp를 include 액션태그를 이용해서 include를 시킨다 --%>
            </td>
            </tr>
        
    </table>
</body>
</html>
cs

 

 

 

인기상품을 클릭한 결과화면

 

 

응용해서 다른 홈페이지를 만들때 사용하면 좋을거 같다.