<init-param>
と<context-param>
!の違いは何ですか?
回答:
<init-param>
および<context-param>
は、web.xmlファイルに保存される静的パラメーターです。頻繁に変更されないデータがある場合は、それらの1つに保存できます。
特定のサーブレットスコープに限定された特定のデータを格納する場合は、を使用<init-param>
できます。内部<init-param>
で宣言するものはすべて、その特定のサーブレットでのみアクセス可能です。init-paramは<servlet>
タグ内で宣言されます。
<servlet>
<display-name>HelloWorldServlet</display-name>
<servlet-name>HelloWorldServlet</servlet-name>
<init-param>
<param-name>Greetings</param-name>
<param-value>Hello</param-value>
</init-param>
</servlet>
そして、次のようにサーブレットでこれらのパラメータにアクセスできます。
out.println(getInitParameter("Greetings"));
アプリケーション全体に共通のデータを保存したい場合で、頻繁に変更されない場合は、アプリケーションコンテキストのメソッドの<context-param>
代わりに使用servletContext.setAttribute()
できます。<context-param>
VSの使用法の詳細についてServletContext.setAttribute()
は、この質問を参照してください。context-paramはタグの下で宣言されweb-app
ます。<context-param>
次のように宣言してアクセスできます
<web-app>
<context-param>
<param-name>Country</param-name>
<param-value>India</param-value>
</context-param>
<context-param>
<param-name>Age</param-name>
<param-value>24</param-value>
</context-param>
</web-app>
JSPまたはサーブレットのいずれかでのアプリケーションでの使用
getServletContext().getInitParameter("Country");
getServletContext().getInitParameter("Age");
<init-param>
:のメソッドは見つかりましたServletContext::setInitParameter(String name, String value)
が、コンテキストパラメータを設定するメソッドは見つかりませんでした<context-param>
。
web.xmlで以下の定義を検討してください
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>TestServlet</servlet-class>
<init-param>
<param-name>myprop</param-name>
<param-value>value</param-value>
</init-param>
</servlet>
init-paramがサーブレット要素内で定義されていることがわかります。これは、宣言中のサーブレットでのみ使用可能であり、Webアプリケーションの他の部分では使用できないことを意味します。このパラメータをアプリケーションの他の部分で使用できるようにする場合は、JSPと言うと、これを明示的にJSPに渡す必要があります。たとえば、request.setAttribute()として渡されます。これは非常に非効率的で、コーディングが困難です。
したがって、これらの値を明示的に渡さずに、アプリケーション内のどこからでもグローバル値にアクセスしたい場合は、ContextInitパラメーターを使用する必要があります。
web.xmlで次の定義を検討してください
<web-app>
<context-param>
<param-name>myprop</param-name>
<param-value>value</param-value>
</context-param>
</web-app>
このコンテキストパラメータは、Webアプリケーションのすべての部分で使用でき、Contextオブジェクトから取得できます。たとえば、getServletContext()。getInitParameter(“ dbname”);
JSPから、アプリケーションの暗黙オブジェクトを使用してコンテキストパラメータにアクセスできます。たとえば、application.getAttribute(“ dbname”);
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/META-INF/PersistenceContext.xml
</param-value>
</context-param>
すべてのサーブレットがMVCフレームワークのデータベースと対話するため、PersistenceContext.xml
内部を初期化しました<context-param>
。
ハワーバー、
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:ApplicationContext.xml
</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.organisation.project.rest</param-value>
</init-param>
</servlet>
前述のコードでは、私はジャージとApplicationContext.xml
唯一の残りのレイヤーを構成しています。同じように私は使用しています</init-param>