No arquivo de configuração do servlet, você pode usar uma ou mais tags <init-param> para configurar alguns parâmetros de inicialização do servlet. Quando o servlet é configurado com parâmetros de inicialização, o contêiner da web encapsulará automaticamente esses parâmetros de inicialização no objeto ServletConfig ao criar o objeto de instância do servlet e, ao chamar o método init do servlet, o objeto ServletConfig será passado para o servlet. Além disso, os programadores podem obter as informações dos parâmetros de inicialização do servlet atual por meio do objeto ServletConfig.
O código de exemplo é o seguinte:
Copie o código do código da seguinte forma:
pacote com.yyz.servletconfig;
importar java.io.IOException;
importar java.util.Enumeration;
importar javax.servlet.ServletConfig;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServlet;
importar javax.servlet.http.HttpServletRequest;
importar javax.servlet.http.HttpServletResponse;
classe pública ServletConfigDemo1 estende HttpServlet {
Configuração do ServletConfig;
public void doGet (solicitação HttpServletRequest, resposta HttpServletResponse)
lança ServletException, IOException {
//Obtém os parâmetros de inicialização especificados
Valor da string = config.getInitParameter("xxx");
resposta.getOutputStream().write(valor.getBytes());
//Obtém todos os parâmetros de inicialização
Enumeração e = cofig.getInitParameterNames();
while(e.hasMoreElements()){
String nome = (String) e.nextElement();
valor = config.getInitParameter(nome);
resposta.getOutputStream().write((nome+"="+valor+"<br/>").getBytes());
}
}
public void doPost (solicitação HttpServletRequest, resposta HttpServletResponse)
lança ServletException, IOException {
doGet(solicitação,resposta);
}
@Substituir
public void init (configuração ServletConfig) lança ServletException {
isto.config=config;
}
}
O web.xml correspondente é o seguinte:
Copie o código do código da seguinte forma:
<?xml versão="1.0" codificação="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"
versão="2.5">
<servlet>
<servlet-name>ServletConfigDemo1</servlet-name>
<servlet-class>com.yyz.servletconfig.ServletConfigDemo1</servlet-class>
<parâmetro de inicialização>
<param-name>xxx</param-name>
<param-value>aaaa</param-value>
</init-param>
<parâmetro de inicialização>
<param-name>nome</param-name>
<param-value>yyz</param-value>
</init-param>
<parâmetro de inicialização>
<param-name>senha</param-name>
<param-value>aaaa</param-value>
</init-param>
</servlet>
<mapeamento de servlet>
<servlet-name>ServletConfigDemo1</servlet-name>
<url-pattern>/servlet/ServletConfigDemo1</url-pattern>
</servlet-mapping>
</web-app>
Os resultados do teste são os seguintes:
No código acima, existe um objeto ServletConfig no objeto ServletConfigDemo1, que na verdade é desnecessário. Porque ServletConfigDemo1 herda HttpServlet, que por sua vez herda GenericServlet. GenericServlet já mantém um objeto ServletConfig internamente. As implementações relevantes são as seguintes:
Copie o código do código da seguinte forma:
classe abstrata pública GenericServlet
implementa Servlet, ServletConfig, java.io.Serializable
{
… …
configuração transitória privada do ServletConfig;
public ServletConfig getServletConfig() {
retornar configuração;
}
}
Portanto, podemos obter o objeto ServletConfig diretamente por meio do método getServletConfig() do objeto Servlet que escrevemos. O código de exemplo é o seguinte:
Copie o código do código da seguinte forma:
pacote com.yyz.servletconfig;
importar java.io.IOException;
importar java.io.PrintWriter;
importar javax.servlet.ServletException;
importar javax.servlet.http.HttpServlet;
importar javax.servlet.http.HttpServletRequest;
importar javax.servlet.http.HttpServletResponse;
classe pública ServletConfigDemo2 estende HttpServlet {
public void doGet (solicitação HttpServletRequest, resposta HttpServletResponse)
lança ServletException, IOException {
Valor da string = this.getServletConfig().getInitParameter("nome");
System.out.println(valor);
}
public void doPost (solicitação HttpServletRequest, resposta HttpServletResponse)
lança ServletException, IOException {
doGet(solicitação,resposta);
}
}
arquivo web.xml:
Copie o código do código da seguinte forma:
<?xml versão="1.0" codificação="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"
versão="2.5">
<servlet>
<servlet-name>ServletConfigDemo2</servlet-name>
<servlet-class>com.yyz.servletconfig.ServletConfigDemo2</servlet-class>
<parâmetro de inicialização>
<param-name>nome</param-name>
<param-value>yyz</param-value>
</init-param>
</servlet>
<mapeamento de servlet>
<servlet-name>ServletConfigDemo2</servlet-name>
<url-pattern>/servlet/ServletConfigDemo2</url-pattern>
</servlet-mapping>
</web-app>