Was ist der Zweck der ServletContext setInitParameter? Wie kann man es benutzen?
Den Servlet-3.0-Spezifikation, die sagt:
setInitParameter
boolean setInitParameter(java.lang.String name,
java.lang.String value)
Sets the context initialization parameter with the given name and value on this ServletContext.
Parameters:
name - the name of the context initialization parameter to set
value - the value of the context initialization parameter to set
Returns:
true if the context initialization parameter with the given name and value was set successfully on this ServletContext, and false if it was not set because this ServletContext already contains a context initialization parameter with a matching name
Throws:
IllegalStateException - if this ServletContext has already been initialized
UnsupportedOperationException - if this ServletContext was passed to the ServletContextListener#contextInitialized method of a ServletContextListener that was neither declared in web.xml or web-fragment.xml, nor annotated with WebListener
Since:
Servlet 3.0
So wie ich das verstehe, ein servlet-Kontext initialisiert wird, wenn eine web-Anwendung bereitgestellt wird. Wenn ich sage, servletConfig.getServletContext().setInitParameter("email", "[email protected]")
innerhalb eines servlets doGet() ich bin immer IllegalStateException.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie Sie sehen können in der javadoc, die Ausnahme wird ausgelöst, wenn Sie versuchen, rufen Sie die Methode nach der
ServletContext
initialisiert wurdeIn der pre-3.0-Servlet-Anwendungen, können Sie Kontext-Parameter mit der folgenden Konfiguration
Dies würde einen Zusammenhang weit-parameter, die beliebige Servlet-Applikation, Komponente zugreifen können.
Seit 3.0, können Sie die deployment-Konfiguration, die Java-code. In der Regel würden Sie implementieren die
ServletContainerInitializer
- Schnittstelle. Der Servlet-container finden würde Ihre Umsetzung, instanziieren und auszuführen, seineonStartup
Methode übergeben Sie die nicht initialisierteServletContext
.Könnte man dann verwenden Sie die
setInitParameter
Methode, um Kontext-Parameter wie Sie getan haben würde, im deployment-Deskriptor. Wenn IhronStartup()
- Methode gibt, wird der Servlet-container übernimmt die weitere Verarbeitung zum einrichten der web-Anwendung. Wenn es fertig ist, wird es initialisiert dieServletContext
und Ihre Anwendung ist bereit zu gehen und Anfragen.