pasar - servlet java ejemplo
¿Por qué no podemos llamar al constructor servlet en lugar del método init para inicializar los parámetros de configuración? (2)
En general, podemos usar constructor para realizar actividades de inicialización, pero en la versión anterior de java (JDK1.0v), el constructor no puede aceptar dinámicamente el nombre de clase generado como argumento. Para realizar la inicialización de un servlet obligatorio, deberíamos proporcionar el objeto ServletConfig como un argumento cuyo nombre de clase se generó dinámicamente mediante contenedor web, ya que el constructor no puede aceptar los nombres de clase generados dinámicamente, por lo que los usuarios ignoraron el concepto de constructor e introdujeron un método específico init ( -) para realizar actividades de inicialización que pueden tomar el nombre de clase generado dinámicamente como argumento.
Me gusta saber por qué no llamamos al constructor servlet en lugar del método init para inicializar los parámetros de configuración.
Gracias
Este hilo debe aclarar las diferencias.
Citando de una de las publicaciones más iluminadoras:
El método init () se usa generalmente para realizar la inicialización del servlet, creando o cargando objetos que el servlet utiliza en el manejo de sus solicitudes. ¿Por qué no usar un constructor en su lugar? Bueno, en JDK 1.0 (para el cual los servlets fueron escritos originalmente), los constructores para clases Java cargadas dinámicamente (como servlets) no podían aceptar argumentos. Por lo tanto, para proporcionar a un nuevo servlet cualquier información sobre sí mismo y su entorno, un servidor debe llamar al método init () de un servlet y pasar un objeto que implementa la interfaz ServletConfig. Además, Java no permite que las interfaces declaren constructores. Esto significa que la interfaz javax.servlet.Servlet no puede declarar un constructor que acepte un parámetro ServletConfig. Tiene que declarar otro método, como init (). Todavía es posible, por supuesto, definir constructores para sus servlets, pero en el constructor no tiene acceso al objeto ServletConfig o la capacidad de lanzar una ServletException.