を持っていると思います。
あなたが2つのファイルを作成することができます独自のロールしたい場合は、ページの開始と終了と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ページに:あなたはこのように変数に値を与えることができ、あなたのサーブレットで 。もちろん、そのような可変プレースホルダをいくつか作成することができます。
第3のオプション: 動的コンテンツを含めるには、jsp:includeタグを使用します。たとえば についてlayout.jspページには、次のようになります。
<html>
<head>
</head>
<body>
<div>
//header content
</div>
<div>
<jsp:include page="${page}"/>
</div>
</body>
</html>
ザ・タグ指定されたURLにあるページをフェッチします含まれています。この提案を使用する理由は、より複雑な表示がある場合は、JSPページを使用して表示を構成する方が良いでしょう。サーブレットはビジネスロジックにのみ関係します。それぞれのディスプレイに対して別々のjspページを作成できます。サーブレットは次のようになります。
//business logic
//save the data to be displayed in the request
String page = "nextpagetodisplay.jsp";
request.setAttribute("page", page);
//forward to layout.jsp
[sitemesh](http://www.opensymphony.com/sitemesh/)をお勧めします。これはあなたの望むものとほぼ同じです。しかし、それはsitemeshの背後にあるグループが少し崩壊、または何かを持っているようだ。 – aroth
JSPの後継Faceletsを使用する機会はありますか?あなたは、[この回答]の2番目の部分であなたが望むものの例を見ることができます(http://stackoverflow.com/questions/4792862/how-to-include-another-xhtml-in-xhtml-using-jsf-2 -0-facelets/4793959#4793959)。 JSFをMVCフレームワークとして採用するだけで十分です。 – BalusC
@BalusCこれは大学のプロジェクトのためです...いいえ。 –