2010-01-15 4 views
26

Elementi DD <context-param> e <init-param> entrambi possono essere recuperati dal metodo getInitParameter(), nel codice servlet.Differenza b/w <contesto-contesto> e <init-param>

Ora la domanda è, in che modo si differenziano <context-param> e <init-param>?

+0

Non so perché, ma sono d'accordo che è confuso e fastidioso. –

+0

Sono d'accordo che questa non è nemmeno una domanda reale. – Bombe

+1

"sono e ma in"? Elementi DD? perché il tuo titolo è più descrittivo del tuo corpo? – pstanton

risposta

43

Servlet I parametri di avvio sono solo per un singolo servlet. Niente al di fuori di quel servlet può accedervi. Viene dichiarata all'interno del tag <servlet> Deployment Descriptor, d'altra parte il parametro di contesto iniziale è per l'intera applicazione Web. Qualsiasi servlet o JSP in quella applicazione Web può accedere al parametro contesto init. I parametri di contesto sono dichiarati in un tag <context-param> direttamente all'interno del tag <web-app>.

I metodi per accedere contesto parametro init è

getServletContext().getInitParameter("name"); 

che il metodo di accesso servlet parametro init è

getServletConfig().getInitParameter("name"); 
1

Come spiegato da Adeel Ansari, here, dipende da quello oggetto sono si richiama il metodo getInitParameter() nel codice servlet.

Tutti i servlet si estende da e quindi sono l'istanza di GenericServlet.

.

elementi

DD <context-param> possono essere recuperati da:

ServletContext context = this.getServletContext(); 
String paramValue = context.getInitParamter("paramName"); 

.

elementi DD <init-param> entrambi possono essere recuperate da:

ServletConfig config = this.getServletConfig(); 
String paramValue = config.getInitParamter("paramName"); 

Si noti inoltre che, dal momento GenericServlet classe implementa l'interfaccia ServletConfig, la classe servlet è anche ServletConfig (implica this = this.getServletConfig()). Da qui è anche possibile ottenere elementi DD <init-param> direttamente da:

String paramValue = this.getInitParamter("paramName"); 

.

Si può provare questo avendo lo stesso nome param in entrambi gli elementi DD con valori diversi e quindi stamparlo nel servlet.