私は、ページ上の他のリソース (jsp、jspf) を大量に含む JSP を使用した高負荷プロジェクトに取り組んでいます。
JSP でインクルードを使用するには、静的 - <%@include %>と動的 - <jsp:include /> (または JSTL に相当する <c:import />) の 2 つの方法があることが知られています。
しかし、どちらにも短所があります。
たとえば、静的インポートは、メイン ページからの変数名の衝突を引き起こす可能性があります。また、動的インポートはパフォーマンスが劣ります。
サービスメソッドのオーバーヘッドではなく、同時に残りのコードから独立したものを使用したいと思います。
最も狭い場所では、HTML コードを Java コードに配置する必要がありました。
public String getHtml() {
return “<div class=’entity’>” + … + “</div>”;
}
JSP では、次のようなことを行います。
<jsp:getProperty name="someEntity" property="html" />
これはインクルードの問題を解決しますが、コード スタイルが悪く、リファクタリングが非常に困難です。
理想的な解決策は、次のような特別なタグ ライブラリをコーディングすることです。
<entitytag>
<parameter name=’param1’ class=’java.util.String’ />
<parameter name=’param2’ class=’mypackage.Entity’ />
<tagbody>
<div class=’entity’>…</div>
</tagbody>
</entitytag>
これは次のように翻訳されます。
static public void entitytag(String param1, Entity param2, JSPWriter out) {
out.write(“<div class=’entity’>”);
…
out.write(“</div>”);
}
JSP では、この呼び出しは次のようになります。
<mylib:entitytag param1=’someString’ param2=’someEntity’ />;
そしてサービスメソッドでは:
MylibClass.entitytag(param1, param2, out);
それで、私の質問は次のとおりです。そのようなトリックを優雅に行うためのアプローチはありますか? たぶんサードパーティのライブラリを使用していますか?