English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Servlet パッケージ

WEBに関連する-INF サブディレクトリの Web アプリケーション構造はすべての Java Web アプリケーションの標準であり、Servlet API 规范で指定されています。トップレベルディレクトリ名が myapp である場合、ディレクトリ構造は以下のようになります:

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

WEB-INF サブディレクトリにはアプリケーションのデプロイメント記述子が含まれており、web.xml という名前です。すべての HTML ファイルはトップレベルディレクトリにあります myapp 以下にあります。admin ユーザーの場合、ROOT ディレクトリが myApp の親ディレクトリであることがわかります。

パッケージ内に Servlet を作成

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

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

以下の例では、パッケージ名が com.myorg の MyServlet クラス。

// パッケージに名前を付けます
package com.myorg;  
// 必要な java ライブラリをインポート
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
@WebServlet("/MyServlet)
public class MyServlet extends HttpServlet {
 
  private String message;
 
  public void init() throws ServletException
  {
      // 実行が必要な初期化
      message = "Hello World";
  }
 
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // レスポンス内容タイプを設定
      response.setContentType("text/html;charset=UTF-8);
 
      // 実際のロジックはここにあります
      PrintWriter out = response.getWriter();
      out.println("<h1">" + message + "</h1);
  }
  
  public void destroy()
  {
      // 何もしない
  }
}

パッケージ内の Servlet

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

環境が正しく設定されていると仮定して、以下のコマンドを実行します: <Tomcat-インストール-ディレクトリ>/webapps/ROOT/WEB-INF/classes ディレクトリに移動し、以下のように MyServlet.java をコンパイルします:

$ javac MyServlet.java

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

このコマンドラインは、Sun Microsystems Java 軟件開発キット(JDK、Java Software Development Kitの略)に付属する内蔵の javac コンパイラを使用しています。MicrosystemsのJava Software Development Kit (JDK)。このコマンドが正常に動作するためには、PATH 環境変数に指定した Java SDKの場所を含める必要があります。

すべてがうまくいった場合、上記のコンパイルは同じディレクトリ内で生成されます。 MyServlet.class ファイルです。次のセクションでは、既にコンパイルされた Servlet をプロダクションにデプロイする方法について説明します。

Servlet パッケージ化デプロイメント

デフォルトでは、Servlet アプリケーションは <Tomcat-インストール-ディレクトリ>/webapps/ROOT 下に、クラスファイルが <Tomcat-インストール-ディレクトリ>/webapps/ROOT/WEB-INF/classes 内にあります。

もし完全に適切なクラス名があれば com.myorg.MyServletにこの Servlet クラスが存在する必要がありますので、この Servlet クラスは WEB-INF/classes/com/myorg/MyServlet.class に、<Tomcat-インストール-ディレクトリ>/webapps/ROOT/WEB-INF/ の web.xml ファイルに以下のエントリを作成する必要があります:

    <サーブレット
        <サーブレット-名前>MyServlet</サーブレット-名前>
        <サーブレット-クラス>com.myorg.MyServlet</サーブレット-クラス>
    </サーブレット>
 
    <サーブレット-マッピング>
        <サーブレット-名前>MyServlet</サーブレット-名前>
        <URL-パターン>/MyServlet</URL-パターン>
    </サーブレット-マッピング>

上記のエントリは web.xml ファイルの <web-app>.../web-app>タグ内で使用しましょう。このファイルには既にさまざまなエントリが含まれているかもしれませんが、気にしないでください。

ここまで来たら、基本的には完了です。今や、<Tomcat-インストール-ディレクトリ>\bin\startup.bat(Windows 上)または <Tomcat-インストール-ディレクトリ>/bin/startup.sh(Linux 上)または bin ディレクトリ>\bin\startup.bat(Windows 上)または <Tomcat/Solaris などのプラットフォーム(最後に)で Tomcat サーバーを起動し、ブラウザのアドレスバーに次のように入力してください http://localhost:8080/MyServlet。もしおめでとうなら、以下の結果が見えるでしょう:

こんにちは、世界