0

私がやりたいことは、プロジェクト内のすべての JSP ページを属性に関連付けることです。たとえば、次の 3 つのページがあるとします。

helloWorld.jsp
helloUniverse.jsp

ここでの属性は「操作」です。次のように適用できる方法はありますか?

helloWorld.jsp -> Operation: "HelloWorld"
helloUniverse.jsp -> Operation: "HelloUniverse"

から利用できるようにServletContextListener:

public void contextInitialized(final ServletContextEvent event) {   
    final ServletContext ctx = event.getServletContext();

    // Following is the code I wish for:
    List<Class<Servlet>> pages = ctx.getAllPages();
    for(Class<Servlet> page : pages) {
        operationMap.put(page.getName(), page.getAttribute("operation"));
    }
}

私はそれが非常にこじつけに見えることを知っています..しかし、このようなことは可能ですか?

4

2 に答える 2

-1

これは単なる理論ですが、次のとおりです。

<servlet>
<servlet-name>helloWorldJsp</servlet-name>
<jsp-file>/helloWorld.jsp</jsp-file>
<init-param>
<param-name>operation</param-name>
<param-value>HelloWorld</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>helloUniverseJsp</servlet-name>
<jsp-file>/helloUniverse.jsp</jsp-file>
<init-param>
<param-name>operation</param-name>
<param-value>helloUniverse</param-value>
</init-param>
</servlet>

実際にjspをサーブレットとしてマップできます(最終的にはサーブレットですよね?)そこにinitパラメーターを割り当ててから、ブートストラップでそれらを読み取ります。これで十分かどうかはわかりませんが、必要なものかもしれません。欠点は、web.xml 内のすべての jsp を再宣言する必要があることですが、静的なものよりも優れています。

静的変数が好きでない場合は、リソース ファイルを持っていて、ブートストラップで読み込んで、動作する可能性のある JSP と一緒にファイルを維持することもできます。

于 2012-08-01T19:41:29.583 に答える
-1

わかりました、最初の静的な方法: operation.properties を作成し、すべての操作値を行ごとに追加します。

  HelloWorld=helloWorld.jsp
  HelloUniverse=helloUniverse.jsp
于 2012-08-01T07:19:51.847 に答える