2

私は、ページ上の他のリソース (jsp、jspf) を大量に含む JSP を使用した高負荷プロジェクトに取り組んでいます。

JSP でインクルードを使用するには、静的 - <%@include %>と動的 - <jsp:include /> (または JSTL に相当する <c:import />) の 2 つの方法があることが知られています。

しかし、どちらにも短所があります。

たとえば、静的インポートは、メイン ページからの変数名の衝突を引き起こす可能性があります。また、動的インポートはパフォーマンスが劣ります。

サービスメソッドのオーバーヘッドではなく、同時に残りのコードから独立したものを使用したいと思います。

最も狭い場所では、HTML コードを Java コードに配置する必要がありました。

public String getHtml() {
    return “&lt;div class=’entity’&gt;” + … + “&lt;/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’&gt;…&lt;/div>
    </tagbody>
</entitytag>

これは次のように翻訳されます。

static public void entitytag(String param1, Entity param2, JSPWriter out) {
    out.write(“&lt;div class=’entity’&gt;”);
    …
    out.write(“&lt;/div>”);
}

JSP では、この呼び出しは次のようになります。

<mylib:entitytag param1=’someString’ param2=’someEntity’ />;

そしてサービスメソッドでは:

MylibClass.entitytag(param1, param2, out);

それで、私の質問は次のとおりです。そのようなトリックを優雅に行うためのアプローチはありますか? たぶんサードパーティのライブラリを使用していますか?

4

2 に答える 2

0

解決策がJavaでhtmlを実行しているとは思いません。

そして、通常の jstl インクルードは問題ありません。どのようにパフォーマンスを改善できると思いますか?

于 2013-03-27T16:18:29.053 に答える
0

jsp が初めて表示されると、java クラスに変換されてコンパイルされます。インクルードやインポートを含め、すべてが 1 つのクラスになります。

そのため、大量のインクルードは、ページが最初に表示されたときにパフォーマンスに影響を与える可能性がありますが、その後はサーブレットを呼び出すのと本質的に同じです。

tomcat を使用している場合は、tomcat/work ディレクトリをドリルダウンして、注意深く作成した jsps がどうなったかを確認します。

于 2013-03-27T18:36:10.863 に答える