2015-12-18 9 views
12

In meinem Maven-Repository unter GroupId javax.servlet habe ich diese zwei separate Artefakte für Servlets. Ich bin verwirrt, welchen sollte ich verwenden, um eine einfache Servlet-Anwendung zu erstellen? Was ist der Unterschied zwischen diesen beiden Artefakten?Unterschied zwischen javax.servlet-api.jar vs Servlet-api.jar

+0

Was die Artefakt-Namen haben Sie sind? – dds

+1

Ich habe javax.servlet-api und servlet-api. Welcher ist was? – fuzzy28

Antwort

5

Sie benötigen

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

zu einem Projekt hinzuzufügen. Die Version, die Sie benötigen, kann sich unterscheiden - es hängt von Ihrem Servlet-Container ab, z. Kater.

<scope>provided</scope> Da Sie es nicht in der Laufzeit benötigen, ist es bereits in Ihrem Servlet-Container.

+0

Sie meinen also, der Zweck von javax.servlet ist nur für meine Entwicklung? Ist es wie jdk und jre Analogie für javax.servlet-api und Servlet-api? – fuzzy28

+0

Ja, es ist nur für die Entwicklung gedacht, damit Ihr Code erfolgreich kompiliert werden kann. Zur Laufzeit liefert Ihr Servlet-Container die notwendige Funktionalität. – dds

+3

Sie haben nicht den Unterschied zwischen ihnen und warum eine über die andere zu verwenden gesagt :( –

4

Gehen Sie mit javax.servlet-api.jar, viele Entwickler irrtümlicherweise servlet-api.jar in ihrem WEB-INF/lib-Ordner. Dies führt nicht mehr zu einer Ausnahme, da Tomcat und andere Anwendungsserver dies als Problem bei der Bereitstellung der JAR-Datei erkennen. Es führt jedoch dazu, dass der Container jede JAR-Datei ignoriert, die javax/servlet/Servlet.class enthält.

4

javax.servlet-api Version 3.0.1 hat einen Annotationsordner, der verschiedene Annotationsklassen enthält, wobei Servlet-API Version 2.5 oder niedriger (d. H. Version 2.4) keine Annotation enthält.

Anmerkung steht für die Metadaten. Wenn Sie Annotation verwenden, ist der Deployment-Deskriptor, z. B. web.xml, nicht erforderlich. Wenn Sie beispielsweise eine Annotation wie @WebServlet("/hello") in Ihrer Servlet-Datei verwenden, müssen Sie die Servlet-Zuordnung in der web.xml-Datei nicht erwähnen.

Einige nützliche Anmerkungen sind:

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