2010-03-04 11 views

risposta

16

This thread should clarify the differences.

Citando uno dei posti più illuminanti:

init() viene in genere utilizzato per eseguire servlet inizializzazione - creare o caricare oggetti che vengono utilizzati dal servlet nella gestione delle sue richieste. Perché lo non usa invece un costruttore? Bene, in JDK 1.0 (per cui i servlet erano originariamente scritti), i costruttori per le classi Java caricate dinamicamente (come come servlet) non potevano accettare gli argomenti . Così, al fine di fornire un nuova servlet tutte le informazioni su se stesso e il suo ambiente, un server ha dovuto chiamare il metodo init() di una servlet e passare lungo un oggetto che implementa l'interfaccia ServletConfig . Inoltre, Java non consente le interfacce per dichiarare i costruttori. Ciò significa che l'interfaccia javax.servlet.Servlet non può dichiarare un costruttore che accetta un parametro ServletConfig . Deve dichiarare un altro metodo, come init(). E 'ancora possibile, naturalmente, per voi per definire costruttori per i tuoi servlet, ma nel costruttore si non hanno accesso all'oggetto ServletConfig o la capacità di gettare un ServletException .

2

In generale, è possibile utilizzare il costruttore per eseguire le attività di inizializzazione ma nella versione precedente di java (JDK1.0v), il costruttore non può accettare come argomento un nome di classe generato dinamicamente. Per eseguire l'inizializzazione di un servlet obbligatorio dovremmo fornire l'oggetto ServletConfig come argomento il cui nome di classe generato dinamicamente dal contenitore web, dato che il costruttore non può accettare i nomi di classe generati dinamicamente, Sun People ha ignorato il concetto di costruttore e ha introdotto un metodo specifico init (-) per eseguire attività di inizializzazione che possono assumere un nome di classe generato dinamicamente come argomento.

Problemi correlati