당신은 아마 Apache Tiles 보라 갖고 싶어.
당신이 두 개의 파일을 만들 수 있습니다 자신의 롤하려면 페이지의 시작과 끝 header.jsp를하고는 footer.jsp 말 :
header.jsp를
<html>
<head>
</head>
<body>
<div>
//header content
</div>
<div>
//main content
하고, footer.jsp
</div>
</body>
</html>
콘텐츠 페이지에 두 가지를 모두 포함하십시오.
또는 단일 layout.jsp 페이지를 만들 수 있습니다 :
<html>
<head>
</head>
<body>
<div>
//header content
</div>
<div>
<c:out value="${content}"/>
</div>
</body>
</html>
는 모든 요청은 콘텐츠 변수가 다음 레이아웃 페이지를로드 채 웁니다. 이 방법을 사용하면 모든 곳에서 포함을 반복하지 않아도됩니다.
예 :
String content = "<h1>Hello World!</h1>";
request.setAttribute("content", content);
//forward to layout.jsp
이 방법, 내용이 표시됩니다 layout.jsp 페이지 : 는 서블릿에서는 변수이 같은 값을 제공 할 수 있습니다. 물론 가변적 인 placeholder를 여러 개 만들 수 있습니다.
세 번째 옵션 : 동적 콘텐츠를 포함하려면 jsp : include 태그를 사용하십시오. 예를 에 대한 layout.jsp 페이지는 다음과 같이 표시됩니다
<html>
<head>
</head>
<body>
<div>
//header content
</div>
<div>
<jsp:include page="${page}"/>
</div>
</body>
</html>
(가) 태그가 지정된 URL에서 페이지를 가져옵니다 있습니다. 이 제안을 사용하는 이유는 더 복잡한 디스플레이가있는 경우 JSP 페이지를 사용하여 디스플레이를 구성하는 것이 더 나을 것이기 때문입니다. 그런 다음 서블릿은 비즈니스 로직에만 관심을 갖습니다. 각 디스플레이에 대해 별도의 jsp 페이지를 작성할 수 있습니다. 서블릿은 다음과 같이됩니다 : 나는 [이 SiteMesh] 추천 거라고
//business logic
//save the data to be displayed in the request
String page = "nextpagetodisplay.jsp";
request.setAttribute("page", page);
//forward to layout.jsp
(http://www.opensymphony.com/sitemesh/), 당신이 원하는 정확히 꽤 많은 작업을 수행한다. 그러나 sitemesh의 뒤에 그룹에는 약간 붕괴, 또는 무언가가 보였다. – aroth
JSP의 후속 Facelets를 사용할 기회가 있습니까? [이 답변]의 두 번째 부분에서 원하는 예제를 볼 수 있습니다 (http://stackoverflow.com/questions/4792862/how-to-include-another-xhtml-in-xhtml-using-jsf-2 -0-facelets/4793959 # 4793959). JSF를 MVC 프레임 워크로 채택하기 만하면됩니다. – BalusC
@BalusC 이것은 대학 프로젝트를위한 것입니다 ... 아니요. –