@RC. Diese Frage nirgends diskutiert den Unterschied zwischen diesen beiden Parametern. Es geht nur um Eigenschaften, die in den beiden Kontexten geladen werden.
Rohit Jain
Ich blieb beim Titel stehen, mein Schlechtes.
Antworten:
116
<init-param>und <context-param>sind statische Parameter, die in der Datei web.xml gespeichert sind. Wenn Sie Daten haben, die sich nicht häufig ändern, können Sie diese in einer von ihnen speichern.
Wenn Sie bestimmte Daten speichern möchten, die auf einen bestimmten Servlet-Bereich beschränkt sind , können Sie <init-param>Folgendes verwenden. Auf alles, was Sie darin deklarieren , kann <init-param>nur für dieses bestimmte Servlet zugegriffen werden. Der init-Parameter wird im <servlet>Tag deklariert .
und Sie können auf diese Parameter im Servlet wie folgt zugreifen:
out.println(getInitParameter("Greetings"));
Wenn Sie Daten speichern möchten, die für die gesamte Anwendung gelten und sich nicht häufig ändern, können Sie <context-param>anstelle der servletContext.setAttribute()Methode des Anwendungskontexts verwenden. Weitere Informationen zur Verwendung von <context-param>VS finden Sie ServletContext.setAttribute()in dieser Frage . Kontextparameter werden unter dem Tag deklariert web-app. Sie können <context-param>Folgendes deklarieren und darauf zugreifen
Sie können sehen, dass init-param in einem Servlet-Element definiert ist. Dies bedeutet, dass es nur dem deklarierten Servlet und nicht anderen Teilen der Webanwendung zur Verfügung steht. Wenn Sie möchten, dass dieser Parameter anderen Teilen der Anwendung zur Verfügung steht, z. B. einer JSP, muss dies explizit an die JSP übergeben werden. Zum Beispiel als request.setAttribute () übergeben. Dies ist sehr ineffizient und schwer zu codieren.
Wenn Sie also von überall in der Anwendung auf globale Werte zugreifen möchten, ohne diese Werte explizit zu übergeben, müssen Sie Context Init-Parameter verwenden.
Dieser Kontextparameter steht allen Teilen der Webanwendung zur Verfügung und kann aus dem Kontextobjekt abgerufen werden. Zum Beispiel getServletContext (). GetInitParameter ("Datenbankname");
Über eine JSP können Sie über das implizite Anwendungsobjekt auf den Kontextparameter zugreifen. Beispiel: application.getAttribute ("Datenbankname");
Ich habe meine initialisiert PersistenceContext.xmlinnerhalb <context-param>weil alle meine Servlets werden in MVC - Framework mit Datenbank interagieren.
In dem oben genannten Code konfiguriere ich Trikot und die ApplicationContext.xmleinzige Schicht, um sich auszuruhen. Für das gleiche benutze ich</init-param>
<init-param>wird verwendet, wenn Sie einen Parameter für ein bestimmtes Servlet initialisieren möchten. Wenn die Anforderung zuerst an das Servlet gesendet initwird, wird die Methode dann aufgerufen. doGet/doPostWenn Sie jedoch eine Variable für die gesamte Anwendung initialisieren möchten, müssen Sie diese verwenden <context-param>. Jedes Servlet hat Zugriff auf die Kontextvariable.
Antworten:
<init-param>
und<context-param>
sind statische Parameter, die in der Datei web.xml gespeichert sind. Wenn Sie Daten haben, die sich nicht häufig ändern, können Sie diese in einer von ihnen speichern.Wenn Sie bestimmte Daten speichern möchten, die auf einen bestimmten Servlet-Bereich beschränkt sind , können Sie
<init-param>
Folgendes verwenden. Auf alles, was Sie darin deklarieren , kann<init-param>
nur für dieses bestimmte Servlet zugegriffen werden. Der init-Parameter wird im<servlet>
Tag deklariert .und Sie können auf diese Parameter im Servlet wie folgt zugreifen:
Wenn Sie Daten speichern möchten, die für die gesamte Anwendung gelten und sich nicht häufig ändern, können Sie
<context-param>
anstelle derservletContext.setAttribute()
Methode des Anwendungskontexts verwenden. Weitere Informationen zur Verwendung von<context-param>
VS finden SieServletContext.setAttribute()
in dieser Frage . Kontextparameter werden unter dem Tag deklariertweb-app
. Sie können<context-param>
Folgendes deklarieren und darauf zugreifenVerwendung in der Anwendung entweder in einer JSP oder einem Servlet
quelle
<init-param>
:ServletContext::setInitParameter(String name, String value)
aber keine zum Festlegen eines Kontextparameters<context-param>
.Betrachten Sie die folgende Definition in web.xml
Sie können sehen, dass init-param in einem Servlet-Element definiert ist. Dies bedeutet, dass es nur dem deklarierten Servlet und nicht anderen Teilen der Webanwendung zur Verfügung steht. Wenn Sie möchten, dass dieser Parameter anderen Teilen der Anwendung zur Verfügung steht, z. B. einer JSP, muss dies explizit an die JSP übergeben werden. Zum Beispiel als request.setAttribute () übergeben. Dies ist sehr ineffizient und schwer zu codieren.
Wenn Sie also von überall in der Anwendung auf globale Werte zugreifen möchten, ohne diese Werte explizit zu übergeben, müssen Sie Context Init-Parameter verwenden.
Betrachten Sie die folgende Definition in web.xml
Dieser Kontextparameter steht allen Teilen der Webanwendung zur Verfügung und kann aus dem Kontextobjekt abgerufen werden. Zum Beispiel getServletContext (). GetInitParameter ("Datenbankname");
Über eine JSP können Sie über das implizite Anwendungsobjekt auf den Kontextparameter zugreifen. Beispiel: application.getAttribute ("Datenbankname");
quelle
Ich habe meine initialisiert
PersistenceContext.xml
innerhalb<context-param>
weil alle meine Servlets werden in MVC - Framework mit Datenbank interagieren.Wie auch immer,
In dem oben genannten Code konfiguriere ich Trikot und die
ApplicationContext.xml
einzige Schicht, um sich auszuruhen. Für das gleiche benutze ich</init-param>
quelle
<init-param>
wird verwendet, wenn Sie einen Parameter für ein bestimmtes Servlet initialisieren möchten. Wenn die Anforderung zuerst an das Servlet gesendetinit
wird, wird die Methode dann aufgerufen.doGet/doPost
Wenn Sie jedoch eine Variable für die gesamte Anwendung initialisieren möchten, müssen Sie diese verwenden<context-param>
. Jedes Servlet hat Zugriff auf die Kontextvariable.quelle
Einzelner Servlet versus mehrere Servlets.
Andere Antworten geben Details, aber hier ist die Zusammenfassung:
Eine Web-App, dh ein „Kontext“, besteht aus einem oder mehreren Servlets .
<init-param>
Definiert einen Wert, der einem einzelnen Servlet in einem Kontext zur Verfügung steht.<context-param>
Definiert einen Wert, der allen Servlets in einem Kontext zur Verfügung steht.quelle