apache_tomcat


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

バージョン

  • apache 2.2.11(nossl)
  • Tomcat 5.5.27
  • JDK 6 update 12
  • eclipse java ganymede SR1

以下、こちらのサイトを参考にさせていただきました。

JDKインストール

JDKインストール場所
  • C:\Program Files\Java\jdk1.6.0_12

JREインストール場所
  • C:\Program Files\Java\jre6

JDKインストール後設定

PATHの追加
  • PATH=(既存の設定);C:\Program Files\Java\jdk1.6.0_12\bin

JAVA_HOMEの設定
  • JAVA_HOME=C:\Program Files\Java\jdk1.6.0_12

Tomcatインストール

Choose Components
  • Normal

Choose Install Location
  • C:\Program Files\Apache Software Foundation\Tomcat 5.5

Java Virtual Machine
  • C:\Program Files\Java\jdk1.6.0_12

Tomcatインストール後設定

動作確認

CATALINA_HOMEの設定
  • CATALINA_HOME=C:\Program Files\Apache Software Foundation\Tomcat 5.5

サーブレットアプリケーションのコンパイル
  • javac -classpath "%CATALINA_HOME%\lib\servlet-api.jar" HelloWorld.java
 ※PATH変数、CATALINA_HOME変数が定義してあること。

アプリケーションの作成と配置

アプリケーションの構成
  • ディレクトリの作成
 ルートディレクトリ c:\servlet-sample\helloworld\
  c:\servlet-sample\helloworld\img
                   \WEB-INF
                   \WEB-INF\classes

  • HTMLファイル作成
 ファイル名 (c:\servlet-sample\helloworld\)index.html
<html>
<head><title>HelloWorld</title></head>
<body>

<br>
<img src="./img/p1.png">
<a href="/hello/helloworld">クリックして下さい</a>
<br>

</body>
</html>

  • 画像ファイル作成
 ファイル名 (c:\servlet-sample\helloworld\img\p1.png)

  • classファイルの作成、配置
 ファイル名 (c:\)HelloWorld.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

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

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hello World!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello World!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}
で、コンパイルする。
javac -classpath "%CATALINA_HOME%\common\lib\servlet-api.jar" HelloWorld.java
で、できあがったHelloWorld.classをc:\servlet-sample\helloworld\WEB-INF\classesに格納する。

コンテキストの設定
  • コンテキストの設定ファイルの作成
 ファイル名 (%CATALINA_HOME%\conf\Catalina\localhost\)hello.xml
<Context path="/hello"
docBase="c:/servlet-sample/helloworld"/>
※docBase ルートディレクトリ
※path http://localhost:8080/hello/index.html
                   ^^^^^
作成後、Tomcatを再起動する。

  • HTMLの表示テスト
 http://localhost:8080/hello/index.html にアクセスし、表示されることを確認する。

  • Tomcat Managerでの確認
 http://localhost:8080/ にアクセスし、画面左上段の「Tomcat Manager」をクリックする。
 ログイン後、「アプリケーション」カテゴリの一覧に今回追加したコンテキスト(/hello)があることを確認する。

web.xmlの記述
  • web.xmlを作成する
 ファイル名 (c:\servlet-sample\helloworld\WEB-INF\)web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

    <servlet>
        <servlet-name>helloworld</servlet-name>
        <servlet-class>HelloWorld</servlet-class>
    </servlet>

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

</web-app>
※1~6行目までは、%CATALINA_HOME%\conf\web.xmlを参考にする。


サーブレットの基本

基本パッケージ
  • javax.servletパッケージ
インターフェース
 Filter
 FilterChain
 FilterConfig
 RequestDispatcher
 Servlet
 ServletConfig
 ServletContext
 ServletContextAttributeListener
 ServletContextListener
 ServletRequest
 ServletRequestAttributeListener
 ServletRequestListener
 ServletResponse
 SingleThreadModel

クラス
 GenericServlet
 ServletContextAttributeEvent
 ServletContextEvent
 ServletInputStream
 ServletOutputStream
 ServletRequestAttributeEvent
 ServletRequestEvent
 ServletRequestWrapper
 ServletResponseWrapper

Exceptions
 ServletException
 UnavailableException

  • javax.servlet.httpパッケージ
インターフェース
 HttpServletRequest
 HttpServletResponse
 HttpSession
 HttpSessionActivationListener
 HttpSessionAttributeListener
 HttpSessionBindingListener
 HttpSessionContext
 HttpSessionListener

クラス
 Cookie
 HttpServlet
 HttpServletRequestWrapper
 HttpServletResponseWrapper
 HttpSessionBindingEvent
 HttpSessionEvent
 HttpUtil

HttpServletクラスとメソッド
  • HttpServletクラスのメソッド
HTTPメソッド メソッド
GET protected void doGet(HttpServletRequest req, HttpServletResponse resp)
POST protected void doPost(HttpServletRequest req, HttpServletResponse resp)
PUT protected void doPut(HttpServletRequest req, HttpServletResponse resp)
DELETE protected void doDelete(HttpServletRequest req, HttpServletResponse resp)
HEAD protected void doHead(HttpServletRequest req, HttpServletResponse resp)
TRACE protected void doTrace(HttpServletRequest req, HttpServletResponse resp)
OPTIONS protected void doOptions(HttpServletRequest req, HttpServletResponse resp)

サーブレットの基本形
  • HttpServletクラスの継承
public class HelloWorld extends HttpServlet{
  ・・・・
}
  • HTTPメソッドに対応したメソッドの実装
public class HelloWorld extends HttpServlet{
    public void doGet}(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException{
        ・・・・
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException{
        ・・・・
    }
}

※doGet()、doPost()どちらかでも良い。

doGetメソッドとdoPostメソッド
URL http://localhost:8080/sample/Sample1
アプリケーション配置場所 c:\servlet-sample\sample\
web.xmlファイル c:\servlet-sample\sample\WEB-INF\web.xml
コンテキストファイル C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\sample.xml

サーブレットのライフサイクルとインスタンス変数
  • インスタンス変数を用いたサンプル
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Sample extends HttpServlet {

    int count = 0;        // ←メソッド外に書かれた変数が「インスタンス変数」

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

        int local_count = 0;

    }
}
この変数は全てのスレッドで共有して利用される変数ですので、同じ変数に対して別々のスレッドがそれぞれ参照したり値を変更したりする事が出来ます。

  • インスタンス変数の簡単なサンプル
こちらを参照
URL http://localhost:8080/sample/Sample2
アプリケーション配置場所 c:\servlet-sample\sample\
web.xmlファイル c:\servlet-sample\sample\WEB-INF\web.xml
コンテキストファイル C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\sample.xml

initメソッドとdestroyメソッド
  • initメソッド
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Sample extends HttpServlet {

    public void init() throws ServletException{    // ←initメソッド
        /* 初期化処理 */
    }

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

        /* ・・・・ */
    }
}
initメソッドはインスタンス作成後に一度だけ呼ばれるメソッドですので、インスタンス変数の初期化などに利用します。

  • destroyメソッド
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Sample extends HttpServlet {

    public void init() throws ServletException{
        /* 初期化処理 */
    }

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

        /* ・・・・ */
    }

    public void destroy(){   // ←destroyメソッド
        /* 終了処理 */
    }
}

  • initメソッド、destroyメソッドの簡単なサンプル
こちらを参照
URL http://localhost:8080/sample/Sample3
アプリケーション配置場所 c:\servlet-sample\sample\
web.xmlファイル c:\servlet-sample\sample\WEB-INF\web.xml
コンテキストファイル C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\sample.xml
ログファイル C:\Program Files\Apache Software Foundation\Tomcat 5.5\logs\localhost.[YYYY-MM-DD].log