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
risposta
è 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.
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
Sì, è solo per lo sviluppo, quindi il tuo codice potrebbe essere compilato con successo. In runtime il contenitore servlet fornirà le funzionalità necessarie. – dds
Non hai detto la differenza tra loro e perché usare uno sull'altro :( –
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.
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
Quali sono i nomi artefatto che avete? – dds
Ho javax.servlet-api e servlet-api. Quale è quale? – fuzzy28