반응형
- 템플릿페이지의 컨텐트만 바꿔서 응답되도록 하는 것
- 클라이언트는 계속 index.jsp 만 요청함
- 요청에 대한 응답은 index.jsp 템플릿 페이지에서 모두 다 해줌!!
장점
- 값 전달하고 싶다면 질의문자열로 요청 가능
~.jsp?name=value&name=value&...
- 값 전달 안하고 폼 태그로 요청 가능
주의사항
- 스레드가 이동된 곳에서도 객체가 공유되어 사용 가능하나, 제한있음
//include 액션태그를 통해 스레드가 이동된 JSP에서
response.sendRedirect("index.jsp"); //불가능
- 이미지 경로 표현 시 - 절대경로 메소드로 불러오기
//include 액션태그를 통해 스레드가 이동된 JSP에서 아래처러 표현하기
<img src="<%=request.getContextPath()%>/action/template_site/images/Koala.jpg" width="300">
01. index.jsp
- jsp/action/template_site/index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
//<%-- 클라이언트의 모든 요청에 응답 결과를 제공하기 위한 JSP 문서 - 템플릿 페이지 --%>
//<%-- => Content 영역은 템플릿 페이지(index.jsp) 요청 시 전달되는 값에 따라 다른 JSP 문서의
//실행 결과를 가져와 동적으로 포함하여 응답 처리 - include 태그 사용 --%>
<%
//전달값을 반환받아 저장
String workgroup = request.getParameter("workgroup"); //작업폴더명
if(workgroup==null){
workgroup="main";
}
String process = request.getParameter("process");//작업파일명(JSP문서)
if(process==null){
process="view";
}
//반환받은 전달값을 이용하여 Content 영역에 포함될 JSP 문서의 파일 경로 저장
String contentFilePath=workgroup+"/"+process+".jsp";
System.out.println("contentFilePath = "+contentFilePath);
//contentFilePath = main/view.jsp
//contentFilePath = company/history.jsp
//contentFilePath = product/list.jsp
//contentFilePath = order/display.jsp
//contentFilePath = board/review.jsp
//contentFilePath = main/terms.jsp
//contentFilePath = main/info.jsp
//contentFilePath = main/center.jsp
//contentFilePath = main/view.jsp
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP</title>
<style type="text/css">
div{ margin: 5px; padding: 5px;}
#header{ height: 200px; border: 1px solid red;}
#header h1{ text-align: center;}
#menu { font-size: 1.5em; text-align: right;}
a, a:visited { text-decoration: none; color: black;}
a:hover { color: orange;}
#content{ min-height: 500px; border: 1px solid green; text-align: center;}
#footer{ height: 150px; border: 1px solid blue; text-align: center; font-size: 1.2em;}
</style>
</head>
<body>
<div id="header">
<h1><a href="index.jsp?workgroup=main&process=view">쇼핑몰</a></h1>
<div id="menu">
<a href="index.jsp?workgroup=company&process=history">회사연혁</a>
<a href="index.jsp?workgroup=product&process=list">제품소개</a>
<a href="index.jsp?workgroup=order&process=display">주문내역</a>
<a href="index.jsp?workgroup=board&process=review">사용후기</a>
</div>
</div>
<div id="content">
// <%-- <h2>메인페이지</h2> --%>
// <%-- include 태그를 사용하여 전달값에 의해 생성된 JSP 문서의 파일경로로 스레드를
// 이동하여 실행결과를 제공받아 Content 영역에 동적으로 포함 --%>
// <%-- => 스레드가 이동될 JSP 문서가 없는 경우 에러 발생 --%>
<jsp:include page="<%=contentFilePath %>"></jsp:include>
</div>
<div id="footer">
<div>
<a href="index.jsp?workgroup=main&process=terms">이용약관</a>
<a href="index.jsp?workgroup=main&process=info">개인정보</a>
<a href="index.jsp?workgroup=main&process=center">고객센터</a>
</div>
<p>Copyright ©itwill Corp. All rights reserved.</p>
</div>
</body>
</html>
02. main/view.jsp
- jsp/action/template_site/index.jsp?workgroup=main&process=view
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h1>메인 페이지</h1>
//<%-- 상대경로 : 클라이언트의 요청 JSP 문서의 경로를 기준으로 자원의 경로 표현 --%>
//<%-- 문제점)템플릿 페이지(index.jsp)가 아닌 스레드가 이동된 JSP 문서(view.jsp)를 요청한 경우
//해당 자원을 찾을 수 없어 404 에러코드 발생 가능 --%>
//<%-- => 요청하는 JSP 문서와 응답 결과를 제공하는 JSP 문서의 경로가 다른 경우 문제 발생 --%>
//<%-- 해결법)JSP 문서에서 필요한 자원을 표현할 경우 절대경로로 표현하는 것을 권장 --%>
//<%-- <img src="images/Koala.jpg" width="300"> --%>
//<%-- 절대경로 : 최상위 디렉토리를 기준으로 자원의 경로 표현 --%>
//<%-- => CSL(HTML, CSS, JavaScript)은 ServerRoot 디렉토리를 최상위 디렉토리로 표현하여 사용 --%>
//<%-- => <http://localhost:8000> 기준으로 차레대로 표현 "/jsp/action/template_site/images/Koala.jpg" --%>
//<%-- => SSL(Java)은 ContextRoot 디렉토리를 최상위 디렉토리로 표현하여 사용 --%>
//<%-- <http://localhost:8000/jsp> 기준으로 차례대로 표현 "/action/template_site/images/Koala.jpg" --%>
//<%-- 문제점)웹자원이 저장된 ContextRoot 디렉토리의 경로가 변경될 경우 해당 자원을 찾을 수 없어 404 에러코드 발생 가능 --%>
//<%-- 해결법)메소드를 호출하여 ContextRoot 디렉토리의 경로를 반환받아 절대경로로 표현하는 것을 권장 --%>
//<%-- <img src="/jsp/action/template_site/images/Koala.jpg" width="300"> --%>
//<%-- request.getContextPath() : 요청 JSP 문서가 위치한 ContextRoot 디렉토리의 경로를 반환하는 메소드 --%>
<img src="<%=request.getContextPath() %>/action/template_site/images/Koala.jpg" width="300">
03. main/terms.jsp
- jsp/action/template_site/index.jsp?workgroup=main&process=term
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h1>이용약관</h1>
<p>이해하기 어려운 내용입니다.</p>
04. main/info.jsp
- jsp/action/template_site/index.jsp?workgroup=main&process=info
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h1>개인정보</h1>
<p>개인정보는 아주 잘 보호되고 있습니다.</p>
05. main/center.jsp
- jsp/action/template_site/index.jsp?workgroup=main&process=center
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h1>고객센터</h1>
<p>아직 운영되지 않습니다.</p>
06. company/history.jsp
- jsp/action/template_site/index.jsp?workgroup=company&process=history
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h1>회사연혁</h1>
<p>우리 회사는 오늘 만들었습니다.</p>
07. product/list.jsp
- jsp/action/template_site/index.jsp?workgroup=product&process=list
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h1>제품소개</h1>
<p>아주 좋은 제품이 많습니다.</p>
08. order/display.jsp
- jsp/action/template_site/index.jsp?workgroup=order&process=display
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h1>주문내역</h1>
<p>아직 주문한 제품이 없습니다.</p>
09. board/review.jsp
- jsp/action/template_site/index.jsp?workgroup=board&process=review
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<h1>사용후기</h1>
<p>사용해 보진 않았지만 좋은 것 같습니다.</p>
반응형
'jsp' 카테고리의 다른 글
[jsp] 14. 학생정보 관리 프로그램 (0) | 2024.07.11 |
---|---|
[jsp] 13. useBean 액션태그 미사용 VS useBean 액션태그 사용 예시 (1) | 2024.07.10 |
[jsp] 11. 포워드 액션태그를 이용한 프로그램 (스레드 자체가 이동) (0) | 2024.07.09 |
[jsp] 10. include 액션태그를 이용한 프로그램 (실행결과물만 가지고 원래 파일로 이동) (0) | 2024.07.09 |
[jsp] 9. JSP 모델 1 VS JSP 모델 2 (0) | 2024.07.08 |