web-dev-qa-db-ja.com

サーブレットベースのJava Webアプリケーションにweb.xmlは本当に必要ですか?

私は実際のWebプロジェクトに取り組んでいません。大学では、Java Web開発にサーブレットとSpringの両方を使用しました。両方のプロジェクトで、web.xmlファイルは既に構成されており、わずかな変更のみを行っていました。 Webアプリをゼロから作成しました。Eclipseで新しいサーブレットクラスを作成し、web.xmlを自動的に作成しませんでした。その後、グーグルで調べて、web.xmlが実際に必要ないことをいくつかのリソースから読みました。いくつかの文があるので、web.xmlの代わりに注釈を使用しても問題ないかどうかわかりません。web.xmlを構成する必要がない場合は、私は本当に喜んでいます。ビジネスロジックにもっと集中する。

前もって感謝します!

35
giliev

最新のj2ee仕様をサポートするコンテナがある場合、web.xmlファイルは必要ありません。 Here は、アノテーションを使用する単純なサーブレットの例へのリンクです。 here Spring MVCでも同じことがわかります。私はあなたの便宜のためにここに例を投稿します

public class MyWebApplicationInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext container) {
        ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet());
        registration.setLoadOnStartup(1);
        registration.addMapping("/example/*");
    }

}

ここ は、使用可能な他の注釈(@ ServletFilter、@ WebServletContextListener)の使用方法を示す別のリンクです。仕様フォーム here をダウンロードして、j2eeを介して利用可能なアノテーションのより詳細なビューを取得できます。

15
Giovanni

サーブレット3以降、web.xmlは必要ありません。 Tomcat 7または8(より良い選択)のようなものを使いたいでしょう。生のサーブレットの場合 これは良い出発点です

最新のSpringを使用する場合は、Grails 3が最適です。これらの問題をすべて回避し、GrailsはWeb開発用の非常に生産的なフレームワークです。これは、Ruby on Rails SpringとHibernateの上に構築されています。

この時点で、必要なフレームワークを使用しない限り、セットアップするためにweb.xmlを記述する必要はありません。 spring mvcについては知りませんが、Grailsではそれを行う必要はなく、既に使用しているもののほとんどを使用します。

11
Mike Thomsen

別の方法(Spring 3.1+)-

WebApplicationInitializerという名前のAbstractDispatcherServletInitializerの抽象基本クラス実装により、サーブレットマッピングとDispatcherServlet構成の場所を指定するメソッドをオーバーライドするだけで、DispatcherServletの登録がさらに簡単になります-

public class MyWebAppInitializer extends AbstractDispatcherServletInitializer {

    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }

    @Override
    protected WebApplicationContext createServletApplicationContext() {
        XmlWebApplicationContext cxt = new XmlWebApplicationContext();
        cxt.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml");
        return cxt;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

}
3
Aniket Thakur

Web.xmlが必要かどうかは、アプリケーションで主張するサーブレット仕様に依存します。 spec 3.0を使用してアプリを構築する場合、アノテーションを使用してサーブレットを宣言し、web.xmlファイルを必要とせずにコンテナにデプロイできます。これは JSR-315 の一部として行われました。

2
Chris

ここで、デプロイメント記述子ファイル(web.xml)を使用しないWebアプリケーションの例を見つけました。ここで考慮する唯一のポイントは、これが最新のTomcatバージョン> = 7.0で機能することです

訪問 http://Java-demos.blogspot.com/2014/01/servlet-web-application-without-webxml.html

訪問 https://www.baeldung.com/Java-web-app-without-web-xml

0
Vimal Panchal

Spring Bootを使用します。これは、コンテナとすべての定型的な構成を管理します。 Initializr を使用して、すぐに起動できるスケルトンを生成できます。

0
chrylis

いいえ、サーブレットバージョンweb.xmlおよびservlet based applicationを使用している場合、以前のバージョンのTomcatでは実行されないため、>3.0Tomcat 7は不要です。

注釈はメタデータを表します。注釈を使用する場合、デプロイメント記述子(web.xmlファイル)は必要ありません。ご覧ください ここ 使用可能なすべての注釈。

0
Naman