Dans le fichier de configuration du servlet, vous pouvez utiliser une ou plusieurs balises <init-param> pour configurer certains paramètres d'initialisation du servlet. Lorsque le servlet est configuré avec des paramètres d'initialisation, le conteneur Web encapsulera automatiquement ces paramètres d'initialisation dans l'objet ServletConfig lors de la création de l'objet d'instance de servlet, et lors de l'appel de la méthode init du servlet, l'objet ServletConfig sera transmis au servlet. De plus, les programmeurs peuvent obtenir les informations sur les paramètres d'initialisation du servlet actuel via l'objet ServletConfig.
L'exemple de code est le suivant :
Copiez le code comme suit :
paquet com.yyz.servletconfig ;
importer java.io.IOException ;
importer java.util.Enumeration ;
importer javax.servlet.ServletConfig ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServlet ;
importer javax.servlet.http.HttpServletRequest ;
importer javax.servlet.http.HttpServletResponse ;
la classe publique ServletConfigDemo1 étend HttpServlet {
Configuration de ServletConfig ;
public void doGet (demande HttpServletRequest, réponse HttpServletResponse)
lance ServletException, IOException {
//Obtenir les paramètres d'initialisation spécifiés
Valeur de chaîne = config.getInitParameter("xxx");
réponse.getOutputStream().write(value.getBytes());
//Récupère tous les paramètres d'initialisation
Énumération e = cofig.getInitParameterNames();
while(e.hasMoreElements()){
Nom de la chaîne = (String) e.nextElement();
valeur = config.getInitParameter(nom);
réponse.getOutputStream().write((name+"="+value+"<br/>").getBytes());
}
}
public void doPost (demande HttpServletRequest, réponse HttpServletResponse)
lance ServletException, IOException {
doGet (demande, réponse);
}
@Outrepasser
public void init (configuration ServletConfig) lance ServletException {
this.config = config;
}
}
Le web.xml correspondant est le suivant :
Copiez le code comme suit :
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>ServletConfigDemo1</servlet-name>
<servlet-class>com.yyz.servletconfig.ServletConfigDemo1</servlet-class>
<param-init>
<param-name>xxx</param-name>
<param-value>aaa</param-value>
</init-param>
<param-init>
<param-name>nom</param-name>
<param-value>yyz</param-value>
</init-param>
<param-init>
<param-name>mot de passe</param-name>
<param-value>aaa</param-value>
</init-param>
</servlet>
<mappage-servlet>
<servlet-name>ServletConfigDemo1</servlet-name>
<url-pattern>/servlet/ServletConfigDemo1</url-pattern>
</servlet-mapping>
</application-web>
Les résultats des tests sont les suivants :
Dans le code ci-dessus, il existe un objet ServletConfig dans l'objet ServletConfigDemo1, qui est en réalité inutile. Parce que ServletConfigDemo1 hérite de HttpServlet, qui à son tour hérite de GenericServlet. GenericServlet gère déjà un objet ServletConfig en interne. Les implémentations pertinentes sont les suivantes :
Copiez le code comme suit :
classe abstraite publique GenericServlet
implémente Servlet, ServletConfig, java.io.Seriallessly
{
… …
configuration ServletConfig transitoire privée ;
public ServletConfig getServletConfig() {
retourner la configuration ;
}
}
Par conséquent, nous pouvons obtenir directement l'objet ServletConfig via la méthode getServletConfig() de l'objet Servlet que nous avons écrit. L'exemple de code est le suivant :
Copiez le code comme suit :
paquet com.yyz.servletconfig ;
importer java.io.IOException ;
importer java.io.PrintWriter ;
importer javax.servlet.ServletException ;
importer javax.servlet.http.HttpServlet ;
importer javax.servlet.http.HttpServletRequest ;
importer javax.servlet.http.HttpServletResponse ;
la classe publique ServletConfigDemo2 étend HttpServlet {
public void doGet (demande HttpServletRequest, réponse HttpServletResponse)
lance ServletException, IOException {
Valeur de chaîne = this.getServletConfig().getInitParameter("name");
System.out.println(valeur);
}
public void doPost (demande HttpServletRequest, réponse HttpServletResponse)
lance ServletException, IOException {
doGet(demande, réponse);
}
}
Fichier web.xml :
Copiez le code comme suit :
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>ServletConfigDemo2</servlet-name>
<servlet-class>com.yyz.servletconfig.ServletConfigDemo2</servlet-class>
<param-init>
<param-name>nom</param-name>
<param-value>yyz</param-value>
</init-param>
</servlet>
<mappage-servlet>
<servlet-name>ServletConfigDemo2</servlet-name>
<url-pattern>/servlet/ServletConfigDemo2</url-pattern>
</servlet-mapping>
</application-web>