「Java8」Servlet のinitメソッド、destoryメソッドの使い方
環境
JavaSE1.8
Eclipse 4.14.0
構文
1.init(ServletConfig config)
サーブレットがサービスに配置されていることをサーブレットに示すために、サーブレットコンテナーによって呼び出されます。
サーブレットコンテナーは、サーブレットをインスタンス化した後、init メソッドを 1 回だけ呼び出します。init メソッドは、サーブレットがリクエストを受信する前に正常に完了する必要があります。
2.destroy()
サーブレットコンテナーによって呼び出され、サーブレットがサービスを停止していることをサーブレットに示します。
このメソッドは、サーブレットの service メソッド内のすべてのスレッドが終了するか、タイムアウト期間が経過した後にのみ呼び出されます。
使用例
1.Servlet側プログラム
package com.arkgame.servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class CftServlet extends HttpServlet { @Override public void init() throws ServletException { //init メソッドで初期化 System.out.println("init()メソッド: hash=" + this.hashCode()); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) { System.out.println("doGet()メソッド: hash=" + this.hashCode()); } @Override public void destroy() { //destroy メソッドで破棄 System.out.println("destroy()メソッド: hash=" + this.hashCode()); } }
説明
1.Servlet は、最初に URL にアクセスされたタイミングでインスタンスが生成されます。
init()メソッドを呼ばれます
2.一定時間 Servlet にアクセスが無かったり、サーバーが停止するときに Servlet のインスタンスは破棄されます。
destroy() メソッドを呼ばれます。
2.web.xmlの定義
<servlet> <servlet-name>CftServlet</servlet-name> <servlet-class>com.arkgame.servlet.CftServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CftServlet</servlet-name> <url-pattern>/cft</url-pattern> </servlet-mapping>