2015-12-18 16 views
12

私のMavenリポジトリでgroupIDがjavax.servletの場合、私はこれらの2つのサーブレット用の成果物を持っています。シンプルなサーブレットアプリケーションを作成するためにはどちらを使うべきですか?これらの2つの成果物の違いは何ですか?javax.servlet-api.jarとservlet-api.jarの相違点

+0

は、あなたが持っているアーティファクトの名前は何ですか? – dds

+1

私はjavax.servlet-apiとservlet-apiを持っています。どちらがどちらですか? – fuzzy28

答えて

5

あなたのプロジェクトに

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

を追加する必要があります。必要なバージョンは異なる場合があります。サーブレットコンテナによって異なります。 Tomcat。

<scope>provided</scope>実行時には不要なため、サーブレットコンテナにはすでに含まれています。

+0

したがって、javax.servletの目的は私の開発のためだけですか? javax.servlet-apiとservlet-apiのjdkとjreの類推に似ていますか? – fuzzy28

+0

はい、開発用ですので、コードを正常にコンパイルすることができます。実行時にサーブレットコンテナが必要な機能を提供します。 – dds

+3

あなたはそれらの違いと、他のものとの違いを教えてくれませんでした:( –

4

javax.servlet-api.jar多くの開発者は、誤ってservlet-api.jarをWEB-INF/libフォルダに含めます。これにより、JARファイルをデプロイするときにTomcatや他のアプリケーションサーバーが問題として認識するため、例外が発生しなくなりました。ただし、コンテナはjavax/servlet/Servlet.classを含むJARファイルを無視します。

4

javax.servlet-apiバージョン3.0.1には、servlet-apiバージョン2.5以下(バージョン2.4)に注釈が含まれていない異なる注釈クラスが含まれている注釈フォルダがあります。

注釈はメタデータを表します。アノテーションを使用する場合、デプロイメント記述子、つまりweb.xmlは必須ではありません。たとえば、サーブレットファイルに@WebServlet("/hello")のような注釈を使用すると、web.xmlファイルでサーブレットのマッピングについて言及する必要はありません。

便利な注釈には次のものがあります

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