Servlets-packaging

提供:Dev Guides
移動先:案内検索

サーブレット-パッケージング

WEB-INFサブディレクトリを含むWebアプリケーション構造は、すべてのJava Webアプリケーションの標準であり、サーブレットAPI仕様で指定されています。 myappの最上位ディレクトリ名を指定します。 このディレクトリ構造は次のようになります-

/myapp
  /images
  /WEB-INF
     /classes
     /lib

WEB-INFサブディレクトリには、web.xmlという名前のアプリケーションのデプロイメント記述子が含まれています。 すべてのHTMLファイルは、_myapp_である最上位ディレクトリに保存する必要があります。 管理ユーザーの場合は、ROOTディレクトリを親ディレクトリとして見つけます。

パッケージでのサーブレットの作成

WEB-INF/classesディレクトリには、すべてのサーブレットクラスと他のクラスファイルが、パッケージ名に一致する構造で含まれています。 たとえば、 com.myorg.MyServlet の完全修飾クラス名がある場合、このサーブレットクラスは次のディレクトリに配置する必要があります-

/myapp/WEB-INF/classes/com/myorg/MyServlet.class

以下は、_com.myorg_というパッケージ名でMyServletクラスを作成する例です。

//Name your package
package com.myorg;

//Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class MyServlet extends HttpServlet {

   private String message;

   public void init() throws ServletException {
     //Do required initialization
      message = "Hello World";
   }

   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

     //Set response content type
      response.setContentType("text/html");

     //Actual logic goes here.
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1>");
   }

   public void destroy() {
     //do nothing.
   }
}

パッケージ内のサーブレットのコンパイル

パッケージで利用可能なクラスをコンパイルするのに大きな違いはありません。 最も簡単な方法は、上記のクラスがcom.myorgに保持されるように、javaファイルを完全修飾パスに保持することです。 また、CLASSPATHにこのディレクトリを追加する必要があります。

環境が適切にセットアップされていると仮定して、 <Tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classesディレクトリに移動し、次のようにMyServlet.javaをコンパイルします。

$ javac MyServlet.java

サーブレットが他のライブラリに依存している場合は、それらのJARファイルもCLASSPATHに含める必要があります。 Hello Worldプログラムで他のライブラリを使用していないため、servlet-api.jar JARファイルのみを含めました。

このコマンドラインは、Sun Microsystems Java Software Development Kit(JDK)に付属の組み込みjavacコンパイラを使用します。 このコマンドが正しく機能するには、使用しているJava SDKの場所をPATH環境変数に含める必要があります。

すべてがうまくいけば、上記のコンパイルは同じディレクトリに MyServlet.class ファイルを生成します。 次のセクションでは、コンパイルされたサーブレットを本番環境にデプロイする方法について説明します。

パッケージ化されたサーブレットの展開

デフォルトでは、サーブレットアプリケーションはパス<Tomcat-installationdirectory>/webapps/ROOTにあり、クラスファイルは<Tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classesにあります。

*com.myorg.MyServlet* の完全修飾クラス名がある場合、このサーブレットクラスはWEB-INF/classes/com/myorg/MyServlet.classに配置する必要があり、 *webに次のエントリを作成する必要があります。 <Tomcat-installationdirectory>/webapps/ROOT/WEB-INF/にあるxml* ファイル
<servlet>
   <servlet-name>MyServlet</servlet-name>
   <servlet-class>com.myorg.MyServlet</servlet-class>
</servlet>

<servlet-mapping>
   <servlet-name>MyServlet</servlet-name>
   <url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

上記のエントリは、web.xmlファイルで使用可能な<web-app> …​ </web-app>タグ内に作成されます。 このテーブルにはさまざまなエントリが既に用意されている可能性がありますが、気にする必要はありません。

これでほぼ完了です。<Tomcat-installationdirectory> \ bin \ startup.bat(Windows)または<Tomcat-installationdirectory>/bin/startup.sh(Linux/Solarisなど)を使用してTomcatサーバーを起動し、最後に入力します。 http://localhost:8080/MyServlet をブラウザのアドレスボックスに入力します。 すべてがうまくいけば、次の結果が得られます-

Hello World