8

私が見たコードの1つには、<servlet-mapping>タグがなく、以下のように宣言されているだけでした

<servlet>
    <servlet-name>startServlet</servlet-name>
    <servlet-class>com.login.StartupServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

これはなく<servlet-mapping>ても機能します<load-on-startup>1</load-on-startup>か??

このサーブレットは、サーバーの起動時にロードされて DB に接続し、キャッシュに対していくつかの操作を行います。

PS: これは Servlet 2.0 以降のバージョンであり、注釈は付けられていません。

ありがとうプニス

4

2 に答える 2

8

投稿したコードは、「初期化サーブレット」と呼ばれるものを定義しています。外部から (URL を使用して) 直接アクセスされることはありませんが、サーブレット コンテナーによって開始されます。

有効ですが、クライアントからアクセスできません。初期化の目的でよく使用されます。<servlet-mapping>Servlets 3.0 アノテーションを使用せずにサーブレットにアクセスできます。

true/false 値 (0/1) を保持するので<load-on-startup>はなく、起動順序である整数を定義することに注意してください。数値が大きいほど、サーブレットは数値が小さいものの後にロードされます。

于 2012-09-26T13:28:39.847 に答える
2

このパターンは、Java EE Web アプリケーションの初期化によく使用されます。たとえば、これ@Singletonは EJB 3.1 で導入された yearned アノテーションの一般的な回避策です。

于 2012-09-26T13:28:56.087 に答える