私はいくつかのJEE開発を学びたいと考えています。ページに共通のHTMLコードがたくさんあるウェブサイトを構築しようとしているとします。私は作成したすべてのページに共通のHTMLコードを複製しないようにしたい。哲学的には、これを行うには2つの方法があるようです。リクエストURLに基づいてどのJSPページを含めるか指定できますか?
- 継承 - すべてのページが唯一の親で適切な穴に「注入さ」されるHTMLコードを提供し、共通のテンプレートから「継承」を持っています。 Djangoは実際にこれをサポートしています。
- コンポジション - 他の事前定義済みのHTMLスニペットをページに組み込んでページを作成します。
これらは相互に排他的ではありません。理想的には、基本的なスケルトンを定義する親テンプレートから継承できますが、親に注入するコードはいくつかの異なるHTMLスニペットで構成することができます。私はページを含めることができるように私のサーブレット上でいくつかのパラメータを設定することができたならば、私は「相続」を実装することができ
<%@ include file="header-navigation.jsp" %>
<jsp:include page="/header-navigation.jsp"/>
:
問題は、JSPが唯一本当に後者の方法をサポートするように見えるということです動的:
<html>
<body>
<header>...commong header code...</header>
<jsp:include page="/snippets/{view}/>
</body>
</html>
これは依然として組成物であるが、コードの観点から、サーブレットは、それによってテンプレートの一部形達成、全体的な骨格の中に注入され知る「ビュー」パラメータを設定することができ、「継承」。これは可能なのかアドバイスできるのでしょうか?
もう1つの選択肢は、base.jspファイル内にコントローラロジックを含めることですが、これは非常に臭いようです。
<% if(view="aboutme") { %><%@ include file="aboutme.jsp" %><% } %>
<% if(view="aboutme") { %><jsp:include file="aboutme.jsp" %><% } %>
これは静的であるため、最初のものは含まれており、すべてのページのコンテンツに含まれる巨大なJSPの.classファイルにつながる、かなりクレイジーようです。二つ目はまだあやふやようだ、とあなたはまだ「aboutme.jsp」をハードコーディングする必要が...ここから追求する道にいくつかの指針を与える
してください!