2010-03-04 22 views

Respuesta

16

This thread should clarify the differences.

Citando de uno de los puestos más ilustrativo:

El método init() se utiliza típicamente para realizan servlet inicialización - crear o carga objetos que utiliza el servlet en el manejo de sus solicitudes. ¿Por qué no usa un constructor? Bueno, en JDK 1.0 (para el cual los servlets eran escritos originalmente), los constructores para las clases de Java cargadas dinámicamente (tales como como servlets) no podían aceptar argumentos. Por lo tanto, con el fin de proporcionar un nuevo servlet ninguna información sobre en sí y su entorno, un servidor tuvo que llamar al método de un servlet init() y pasar a lo largo de un objeto que implementa la interfaz ServletConfig . Además, Java no permite las interfaces para declarar constructores. Esto significa que la interfaz javax.servlet.Servlet no puede declarar un constructor que acepta un parámetro ServletConfig . Tiene que declarar otro método, como init(). Todavía es posible, por supuesto, para usted para definir constructores para sus servlets, pero en el constructor que no tiene acceso al objeto ServletConfig o la capacidad de lanzar un ServletException .

2

En general, podemos usar el 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 las personas 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.

Cuestiones relacionadas