servlet pasar parametros llamar enviar desde java servlets deployment-descriptor init-parameters

java - pasar - Obtener los parámetros init en un servlet



pasar parametros a un servlet (2)

Soy nuevo en servlets. init parámetros init en DD dentro del método init() usando getInitParameter ("nombre"). doGet() mucho desde el método doGet() para acceder a los parámetros init , pero siempre devuelve null .

Lo intenté con

getServletContext().getInitParametr("name")

y con

getServletConfig().getInitParametr("name")

pero todos regresan null . ¿Puedo obtener los parámetros init en doGet() ?


La respuesta es - Sí, puedes .

OK, además del comentario de JB Nizet aquí hay algunas sugerencias.

1) ¿Ha agregado sus parámetros init mientras se ejecutaba el contenedor web / servidor de aplicaciones ?

Cita de " Head First Servlets & JSP: aprobación del examen de desarrollador de componentes web certificado por Sun " :

Los parámetros init del servlet son de solo lectura UNA VEZ, cuando el contenedor inicializa el servlet . ...
Cuando el contenedor hace un servlet, lee el DD y crea los pares de nombre / valor para ServletConfig. ¡El contenedor nunca vuelve a leer los parámetros init! Una vez que los parámetros estén en ServletConfig, no se leerán nuevamente hasta / a menos que vuelva a desplegar el servlet .


2) Hay dos tipos de parámetros init disponibles. Otra cita de " Head First Servlets and JSP " (énfasis mío):

Hay parámetros de init de contexto (definidos en el elemento <context-param> ) y parámetros de init de servlet (definidos en el elemento <init-param> ). Ambos se conocen como parámetros init , aunque definidos en elementos diferentes.

  • Los parámetros de inicio de contexto están disponibles para cualquier servlet o JSP que sea parte de la aplicación web actual.

  • Los parámetros de inicio del servlet están disponibles solo para el servlet para el que se configuró <init-param> .

  • Los parámetros de inicio de contexto se definen dentro del elemento <web-app> .

  • Los parámetros de inicio del servlet se definen dentro del elemento <servlet> para cada servlet específico .

Ejemplo:

<?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_3_0.xsd" version="3.0"> <display-name>Servlet testing app</display-name> <!-- This is a context init parameter --> <context-param> <param-name>email</param-name> <param-value>[email protected]</param-value> </context-param> <servlet> <servlet-name>Info Servlet</servlet-name> <servlet-class>com.example.InfoServlet</servlet-class> <!-- This is a servlet init parameter --> <init-param> <param-name>name</param-name> <param-value>John Doe</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Info Servlet</servlet-name> <url-pattern>/test/ShowInfo.do</url-pattern> </servlet-mapping> </web-app>


Accediendo al parámetro init de contexto en un servlet:
getServlet Context ().getInitParameter(“email”);

Acceder al parámetro de servlet init en un servlet para el que se definió en el descriptor de despliegue :
getServlet Config ().getInitParameter("name");

Una forma alternativa de obtener el parámetro de servlet init es usar un método definido en la clase abstracta GenericServlet :
public String getInitParameter(String name);
Este método se proporciona por conveniencia. Obtiene el valor del parámetro nombrado del objeto ServletConfig del servlet.

Y también existe el método Enumeration<String> getInitParameterNames() tanto para ServletContext como para ServletConfig para obtener todos los parámetros init.

Espero que esto te ayudará.


si ha anulado el método init () predeterminado, asegúrese de pasarle el parámetro de configuración Servlet y también llamar al método super init. porque si no lo hace, no hay forma de que su código pueda encontrar su configuración de servlet.

aquí está el código para el código servlet init ():

public void init(ServletConfig config) throws ServletException { super.init(config); // Rest of your code ... }

También noté que utilizó la versión 3 de Servlet, no estoy seguro si es compatible con la definición de etiquetas de servlet, por lo tanto, si la dosificación de la solución anterior funciona, intente eliminar también los atributos de la aplicación web.