2015-12-18 17 views
12

Nel mio repository di Maven sotto groupId javax.servlet ho questi due artefatti separati per servlet. Sono confuso quale devo usare per costruire una semplice applicazione servlet? Qual è la differenza tra questi due artefatti?Differenza tra javax.servlet-api.jar vs servlet-api.jar

+0

Quali sono i nomi artefatto che avete? – dds

+1

Ho javax.servlet-api e servlet-api. Quale è quale? – fuzzy28

risposta

5

è necessario aggiungere

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
     <scope>provided</scope> 
</dependency> 

al progetto. La versione di cui hai bisogno potrebbe essere diversa: dipende dal tuo contenitore servlet, ad es. Tomcat.

<scope>provided</scope> perché non è necessario in fase di esecuzione, è già nel contenitore servlet.

+0

Quindi intendete lo scopo di javax.servlet è solo per il mio sviluppo? E 'come l'analogia jdk e jre per javax.servlet-api e servlet-api? – fuzzy28

+0

Sì, è solo per lo sviluppo, quindi il tuo codice potrebbe essere compilato con successo. In runtime il contenitore servlet fornirà le funzionalità necessarie. – dds

+3

Non hai detto la differenza tra loro e perché usare uno sull'altro :( –

4

Vai con javax.servlet-api.jar, Molti sviluppatori includono erroneamente servlet-api.jar nella loro cartella WEB-INF/lib. Ciò non causa più un'eccezione poiché Tomcat e altri server di app lo riconosceranno come un problema durante la distribuzione del file JAR. Tuttavia, fa sì che il contenitore ignori qualsiasi file JAR che contiene javax/servlet/Servlet.class.

4

javax.servlet-api versione 3.0.1 ha una cartella di annotazione che contiene classi di annotazione differenti in cui la versione 2.5 o inferiore di servlet-apie (ovvero la versione 2.4) non contiene annotazioni.

L'annotazione rappresenta i metadati. Se si utilizza l'annotazione, il descrittore di distribuzione i.e. web.xml non è richiesto. Ad esempio, se si utilizza un'annotazione come @WebServlet("/hello") nel file servlet, non è necessario menzionare la mappatura servlet nel file web.xml.

Alcune annotazioni utili sono:

@HandlesTypes 
@HttpConstraint 
@HttpMethodConstraint 
@MultipartConfig 
@ServletSecurity 
@WebFilter 
@WebInitParam 
@WebListener 
@WebServlet 
Problemi correlati