본문 바로가기
프로젝트/자바 빈과 JSP만을 사용한 게시판 만들기

12장 페이지 동적 삽입

by IT여행자 2020. 5. 10.
728x90

11장 메인 페이지와 로그인 처리 만들기에서 이미 언급되었지만, JSP에서 외부의 페이지를 삽입하는 방법을 보다 자세하게 알아보고 진행하도록 하겠습니다. JSP에서 외부 페이지를 삽입하는 방법은 크게 두 가지로 나뉩니다.

 

  • 정적 삽입 : 지시문 사용
  • 동적 삽입 : 액션 태그 사용

정적 삽입

  • 방법 : <%@include file="파일명" %>
  • 파일명 대신 변수를 사용할 수 없다(파일의 가변성이 없다)
  • 파일의 소스 코드가 그대로 삽입된다. 따라서 변수명 등의 중복 트러블 등이 발생할 수 있다.

동적 삽입

  • 방법 : <jsp:include page="파일명 또는 변수명" />
  • 파일명을 변수에 담아 대입할 수 있다(파일의 가변성이 있다)
  • 파일의 실행 결과가 삽입되기 때문에 정적 삽입처럼 변수명의 중복 트러블 등과 같은 문제가 발생하지 않는다. 

위에서 언급한 특성뿐만 아니라 더 복잡한 내용들이 포함되어 있습니다. 보다 자세한 내용은 JSP 인문서적을 참조해 주시기 바랍니다.

 

작성된 index.jsp 파일을 보면 아래와 같은 내용을 볼 수 있을 것입니다.

 

String inc = "./board/list.jsp";
if (request.getParameter("inc") != null) {
	inc = request.getParameter("inc");
}

 

request.getParameter("inc")는 사용자의 요청 정보 중에서 파라미터 'inc'의 값을 가져오라는 명령인데 파라미터를 전달하는 방법은 크게 두 가지가 있습니다.

 

[첫 번째 방법]

GET타입으로 URL에 포함시켜 전달하는 방법입니다. 아래의 코드는 GET 타입으로 파라미터 inc와 page에 각각의 값이 list.jsp, 100이 대입되어 서버에 전달됩니다.

 

http://your_domain?inc=list.jsp&page=100

 

[두 번째 방법]

<form/> 태그에 값을 대입하여 전달하는 방법입니다. <form/> 태그로 값을 전달하는 경우는 대부분 POST 타입일 것입니다.

 

<form method='POST' action='your_domain'>

    <input type='text' name='inc' value='list.jsp' />

    <input type='text' name='page' value='100' />

</form>

 

첫 번째 방법과 두 번째 방법 모두 동일한 파라미터 변수에 동일한 값을 대입하여 전달하는 예를 들었습니다. GET 타입으로 파라미터를 전달하든, POST 타입으로 전달하든 상관없이 모두 request.getParameter("변수명")으로 값을 가져옵니다.

 

이렇게 가져온 파일명을 사용하여 동적 삽입 방법을 통해 외부 페이지의 실행 결과를 현재 페이지에 포함시킵니다.

 

<body>
	<%
		request.setCharacterEncoding("utf-8");
	
		String inc = "./board/list.jsp";
		if (request.getParameter("inc") != null) {
			inc = request.getParameter("inc");
		}
	%>
	<div id='index'>
       ...
		<!-- content -->
		<div class='content'>
			<jsp:include page="<%=inc%>" />
		</div>
        ...
	</div>
</body>

inc 변수에 초기값 ./board/list.jsp 값을 대입해주어 파라미터가 전달되지 않을시 기본값으로 사용되도록 조치하고 파라메터가 전달되면 해당 파라미터 값으로 inc 변수 값을 수정한 뒤 뒤에서 inc 값을 사용하여 동적으로 페이지를 삽입하도록 되어 있습니다.

 

이것으로 페이지의 동적 삽입 부분을 마치도록 하겠습니다.