javax.servlet-api.jar与servlet-api.jar之间的区别

Rue*_*oel 21 java servlets artifacts maven

在groupId下的maven存储库中,javax.servlet我有两个用于servlet的独立工件.我很困惑应该使用哪一个来构建一个简单的servlet应用程序?这两件工件有什么区别?

Pra*_*nay 9

javax.servlet-api 3.0.1版具有一个注释文件夹,其中包含不同的注释类,其中servlet-api版本2.5或更低版本(即版本2.4)不包含注释.

注释表示元数据.如果使用注释,则不需要部署描述符,即web.xml.例如,如果您@WebServlet("/hello")在servlet文件中使用注释,那么您不需要在web.xml文件中提及servlet映射.

一些有用的注释是:

@HandlesTypes
@HttpConstraint 
@HttpMethodConstraint
@MultipartConfig
@ServletSecurity
@WebFilter
@WebInitParam
@WebListener
@WebServlet
Run Code Online (Sandbox Code Playgroud)


dds*_*dds 7

你需要添加

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

到你的项目.您需要的版本可能不同 - 它取决于您的servlet容器,例如Tomcat.

<scope>provided</scope> 因为你在运行时不需要它,它已经存在于你的servlet容器中了.

  • 你没有告诉他们之间的区别以及为什么要使用其中一个:( (9认同)

Ken*_*gle 5

如果您必须在不支持 servlet 3.0 规范(希望不太可能)的古老应用程序服务器版本上进行部署,请坚持使用旧的 servlet-api。

在 3.0 规范中,他们将其移至 javax.servlet-api。请参阅: https: //javaee.github.io/servlet-spec/

现在,随着 Java EE 从 Oracle 转移到 Eclipse Foundation ( Jakarta EE ),规范再次发生变化。如果可能的话,如果您想保持最新状态,您可能需要考虑使用新的组和工件:jakarta.servlet:jakarta.servlet-api

https://github.com/eclipse-ee4j/servlet-api