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-installation-directory>/webapps/ROOT/WEB-INF/classesディレクトリに入り、MyServlet.java をコンパイルします。例は次のとおりです。

$ javac MyServlet.java

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

このコマンドラインは、Sun Microsystems Java ソフトウェア開発キット(JDK、正式名称 Java Software Development Kit)に付属している組み込みの javac コンパイラを使用します。 Microsystems の Java ソフトウェア開発キット(JDK)。このコマンドを正常に動作させるには、PATH 環境変数に使用する Java SDK の場所を含める必要があります。

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

Servlet のパッケージ化とデプロイ

デフォルトでは、Servlet アプリケーションは <Tomcat-installation-directory>/webapps/ROOT に配置され、クラスファイルは <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes に置かれます。

完全修飾クラス名がある場合、com.myorg.MyServletその Servlet クラスは WEB-INF/classes/com/myorg/MyServlet.class に配置する必要があります。<Tomcat-installation-directory>/webapps/ROOT/WEB-INF/ にある web.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-installation-directory>\bin\startup.bat(Windows の場合)または <Tomcat-installation-directory>/bin/startup.sh(Linux/Solaris などの場合)を使用して Tomcat サーバーを起動し、最後にブラウザのアドレスバーに入力しますhttp://localhost:8080/MyServlet。すべてがうまくいけば、次の結果が表示されます。

Hello World

その他の拡張