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
Antwort
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.
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
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
Sie haben nicht den Unterschied zwischen ihnen und warum eine über die andere zu verwenden gesagt :( –
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.
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
Was die Artefakt-Namen haben Sie sind? – dds
Ich habe javax.servlet-api und servlet-api. Welcher ist was? – fuzzy28