2009-03-21 14 views
2

に最初のデフォルトのサーブレットを呼び出すと、私はJavaのWebアプリケーションがこの方法でアクセスされるたびに私のSampleServletが最初に呼ばれるようにしたい:Java Webアプリケーション

http://server:8080/appname/

はこれを実装する方法はありますか?

答えて

3

ないあなたが何を意味するかを確認しますが、あなたは「/」

<servlet-mapping> 
    <servlet-name>SampleServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
1

なく、あなたの目的がありますが、Webアプリケーションの初期化がのServletContextListenerによって達成することができるかわからにサーブレットをマップする必要があります。

public class AppListener implements ServletContextListener { 
    public void contextInitialized(ServletContextEvent event) { 
     // place your code here 
    } 

    public void contextDestroyed(ServletContextEvent event) { 
    } 
} 

以降web.xml内:

<web-app> 
<listener> 
    <listener-class> 
     package.AppListener 
    </listener-class> 
</listener> 
... 
</web-app> 
+0

これは、アプリケーションのライフサイクル中に1回呼び出されます。ポスターは要求ごとに一度アクセスするものを求めた。 – erickson

+0

imho、あなたは議論の対象外として議決権を行使できることは明らかではありません。私はこの質問を「ユーザーが現れたとき」と解釈し、コードを実行するのではなくサーブレットが生成したページを表示することを意味していました。その悪い質問と、それが一致するかどうかの有用な答えは解読不能です。 –

+0

erickson:はい、リクエスト1回ではなく1回呼び出されます。質問が明確ではなかったので、私は自分の答えが「あなたの目標が何であるかわからない」と答えたのです。 – asalamon74

6

あなたのサーブレットを呼び出すためにServlet filterを使用してください。

5

あなたがサーブレットをあなたのホームページを作りたいなら、これはあなたが指定したURLを経由してアプリケーションに到着しているユーザーは、サーブレットによって歓迎されるだろうことを意味することにhttp://feelitlive.com/

<welcome-file-list> 
    <welcome-file>homepage</welcome-file> 
</welcome-file-list> 

... 

<servlet> 
    <description>Shows stuff on the homepage</description> 
    <display-name>Homepage Servlet</display-name> 
    <servlet-name>HomepageServlet</servlet-name>   
    <servlet-class>com.cantorva.gigcalendar.servlets.HomepageServlet</servlet-class> 
</servlet> 

... 

<servlet-mapping> 
    <servlet-name>HomepageServlet</servlet-name> 
    <url-pattern>/homepage</url-pattern> 
</servlet-mapping> 

に私のために働きました。また、 "/ homepage"にホームページのエイリアスを作成しますが、それを使う必要はありません。

スタートアップ時にコードを実行する場合は、asalamon74's answerが正しく見えます。

0

起動時にコードを実行したい場合は、実際にはasalamon74's answerは問題ありません。あなたは、従来の状況を持っていて、サーブレットを使用する必要がある場合は、パラメータのload-on-startupはあなたのためにトリックを行うことができます。

<servlet> 
    <servlet-name>SampleServlet</servlet-name> 
    <display-name>SampleServlet</display-name> 
    <description>Sample Servlet</description> 
    <servlet-class>...</servlet-class> 
    <init-param>...</init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

のload-on-startupタグは、サーブレットが自動的にロードする必要があることを指定しますWebアプリケーションが開始されます。数値は、起動時にロードする順序を指定します。値が指定されていない場合は、コンテナがロードする必要があると判断したときにサーブレットがロードされます。通常、最初のアクセス時にサーブレットがロードされます。

関連する問題