2017-02-24 2 views
1

私はいくつかのJEE開発を学びたいと考えています。ページに共通のHTMLコードがたくさんあるウェブサイトを構築しようとしているとします。私は作成したすべてのページに共通のHTMLコードを複製しないようにしたい。哲学的には、これを行うには2つの方法があるようです。リクエストURLに基​​づいてどのJSPページを含めるか指定できますか?

  1. 継承 - すべてのページが唯一の親で適切な穴に「注入さ」されるHTMLコードを提供し、共通のテンプレートから「継承」を持っています。 Djangoは実際にこれをサポートしています。
  2. コンポジション - 他の事前定義済みの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」をハードコーディングする必要が...ここから追求する道にいくつかの指針を与える

してください!

答えて

0

問題は、あなたの追求が他の千と同じで、返信がJSPを使用しないことです。

ダイナミックなWebコンテンツをレンダリングするために特別に作成されたフレームワークがたくさんありますが、JSPやサーブレットの基本的な知識はそれらを学ぶのに非常に役立ちます。

すべての開発をjavaにしたい場合は、JSFとVaadinを検討します。

は、次に(expecially RESTとの)Javaでのサーバーへのログインを構築し、UIのための人気のJavaScriptフレームワークを使用(角のようなまたはリアクト)する可能性があります。

私があなただったら、まずJSFから始めるでしょう。なぜなら、JSP(特にEL言語)からビルドするからです。

関連する問題