Tomcat入門

トップ > いろいろ > Tomcat入門

環境

TomcatJSPServletJSTL
6.02.12.51.1
5.52.02.41.1
5.01.22.31.0
JDK 1.6.0 04 Tomcat 6.0.14 Servlet 2.5 JSP 2.1 JSTL 1.1

JDKをインストールする

http://www.sun.com/java/ から [Downloads]→[Java SE]→[JDK 6 Update 4 Download] で、[Windows]を選択し、[I agree ...] をチェックし、[Continue] から jdk-6u4-windows-i586-p-iftw.exe をダウンロードして実行してください。

[コントロールパネル]→[システム]→[詳細設定]→[環境変数] で、[システム環境変数] の Path に ;C:\Program Files\Java\jdk1.6.0_04\bin を追加してください。

Tomcatをインストールする

http://jakarta.apache.org/ → [Tomcat] → [Download Tomcat 6.x] → [Windows Service Installer] で、apache-tomcat-6.0.14.exe をダウンロードして実行してください。

[Next >]→[I Agree] で、[Examples] にもチェックをつけて、[Next >]→[Next >] で admin のパスワードを入力して、[Next >]→[Install] でインストールしてください。

Tomcatを開始・停止する

タスクトレイに Tomcat のアイコン(赤い羽根アイコン)が表示されるので、右クリックから [Start Service]、[Stop Server] で開始・終了します。

Tomcatに接続する

ブラウザから http://localhost:8080/ にアクセスし、「Apachie Tomcat」のデフォルトページが表示されればOK。

簡単なサーブレットを表示してみる

下記のファイル・フォルダを作成します。

□Program Files
└□Apache Software Foundation
 └□Tomcat 6.0
  ├□conf
  │└□Catalina
  │ └□localhost
  │  └◇test.xml
  └□webapps
   └□test
    └□WEB-INF
     ├□classes
     │└◇HelloWorld.class
     ├□lib
     └◇web.xml

test.xml には次のように記述します。

<Context path="/test" docBase="C:\Program Files\Apache Software
 Foundation\Tomcat 6.0\webapps\test" reloadable="false" />

HelloWorld.class は、下記のソースコードをコンパイルしたものを置きます。

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>");
    }
}

コンパイルは次のように行います。

C:\TEST>javac -classpath "C:\Program Files\Apache Software Foundation
\Tomcat 6.0\lib\servlet-api.jar";. HelloWorld.java

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>Hello</servlet-name>
    <servlet-class>HelloWorld</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/Hello</url-pattern>
  </servlet-mapping>
</web-app>

上記の準備ができたら、ブラウザから http://localhost:8080/test/Hello にアクセスしてみてください。「Hello World!」と表示されれば成功です。

Hello World!

簡単な JSP を表示してみる

簡単な JSP を表示してみましょう。下記の場所にファイルを作成します。

□Program Files
└□Apache Software Foundation
 └□Tomcat 6.0
  └□webapps
   └□test
    ├□HelloJsp.jsp
    └□WEB-INF

HelloJsp.jsp ファイルには下記のように記述してください。

<html>
<head>
<title>JSP TEST</title>
</head>
<body>
<% out.println("Hello World!"); %>
</body>
</html>

上記の準備ができたら、ブラウザから http://localhost:8080/test/HelloJsp.jsp にアクセスしてみてください。「Hello World!」と表示されれば成功です。

Hello World!

WARファイルをデプロイしてみる

JSPファイルやWEB-INFフォルダなどをひとつの WAR ファイルに圧縮して、Tomcat の適切なフォルダに置くことを、「Tomcatにデプロイする」といいます。

C:\TEST>dir
2008/01/16  01:18               112 HelloJsp.jsp
2008/01/17  00:32    <DIR>          WEB-INF
C:\TEST>jar cf test2.war *
C:\TEST>dir
2008/01/16  01:18               112 HelloJsp.jsp
2008/01/16  01:18           371,005 test2.war
2008/01/17  00:32    <DIR>          WEB-INF
C:\TEST>copy test2.war "C:\Program Files\Apache Software Foundation
\Tomcat 6.0\webapps"

test2.war ファイルをコピーしてしばらくすると、webapps フォルダの下に test2 フォルダが生成され、http://localhost:8080/test2/HelloJsp.jsp にアクセスできるようになります。

JSTLを使ってみる

簡単な JSTL(JSP Standard Tag Library)を表示してみましょう。http://jakarta.apache.org/ から [Taglibs]→[Downloads]→[Standard 1.1 Taglib] から、jakarta-taglibs-standard-1.1.2.zip をダウンロードし、解凍して得られる jstl.jar ファイルと standard.jar ファイルを下記の場所に置きます。

□Program Files
└□Apache Software Foundation
 └□Tomcat 6.0
  └□webapps
   └□test
    ├◇HelloJstl.jsp
    └□WEB-INF
     └□lib
      ├◇jstl.jar
      └◇standard.jar

HelloJstl.jsp の中身は下記のように記述します。

<%@ page contentType="text/html; charset=Shift_JIS"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>JSTL TEST</title>
</head>
<body>
<c:out value="Hello World!" />
</body>
</html>

http://localhost:8080/test/HelloJstl.jsp にアクセスして、「HelloWorld!」と表示されれば成功です。

HelloWorld!

Antを使ってみる

Ant は、コンパイルやデプロイなどの作業を効率的に行うためのツールです。.class ファイルが無ければコンパイルする、.class ファイルよりも .java ファイルの方が新しければ再コンパイルするなどの作業を行ってくれます。UNIX の make コマンドに似た機能を持ちます。

http://ant.apache.org/bindownload.cgi から apache-ant-1.7.0-bin.zip をダウンロードし、解凍したものを任意のフォルダ(例:C:\Program Files\Apache Software Foundation\apache-ant-1.7.0)に置く。

環境変数 JAVA_HOME に Javaのホームディレクトリ(例:C:\Program Files\Java\jdk1.6.0_04)、ANT_HOME に Ant のホームディレクトリ(例:C:\Program Files\Apache Software Foundation\apache-ant-1.7.0)を設定し、PATH に Ant のバイナリフォルダ(例:C:\Program Files\Apache Software Foundation\apache-ant-1.7.0\bin)を追加する。

上記で作成した HelloWorld.java サーブレットをコンパイルして、HelloWorld.class を作成する例を下記に示します。

□C:
└□TEST
 ├◇build.xml
 └◇HelloWorld.java

HelloWorld.java は上記で作成した簡単なサーブレットの例です。build.xml には次のように記述します。

<project name="proj1" default="target1" basedir=".">
 <property name="dirA" value="C:\TEST" />
 <property name="dirB" value="C:\Program Files\Apache Software Foundation\Tomcat 6.0" />
 <target name="target1">
  <javac
    srcdir="${dirA}"
    destdir="${dirA}"
    includes="HelloWorld.java"
    classpath="${dirB}\lib\servlet-api.jar" />
 </target>
</project>

TEST フォルダで ant を起動すると、コンパイルされます。

C:\TEST>ant
Buildfile: build.xml

target1:

BUILD SUCCESSFUL
Total time: 0 seconds

Apache Plutを使ってみる

http://portals.apache.org/pluto/ から、[Download]→(略) で、pluto-current-bundle.zip をダウンロードし、解凍して得られた pluto-1.1.4 フォルダをインストールしたいフォルダ(例:C:\Program Files)に移動してください。

コマンドプロンプトから C:\Program Files\pluto-1.1.4\bin\startup.bar を起動し、ブラウザから http://localhost:8080/pluto/portal にアクセスし、ログイン画面が表示されれば成功です。ユーザ名 pluto、パスワード pluto でログインできます。

Pluto の準備ができたら、下記のファイルを用意してください。

□C:
└□Program Files
 └□pluto-1.4.0
  └□webapps
   └□HelloWorldPortlet
    ├□src
    │└◇HelloWorldPortlet.java
    └□WEB-INF
     ├□classes
     │└◇HelloWorldPortlet.class
     ├◇portlet.xml
     └◇web.xml

HelloWorldPortlet.java の内容を以下に示します。

import java.io.IOException;
import java.io.PrintWriter;
import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;

public class HelloWorldPortlet extends GenericPortlet {
    public void doView(RenderRequest request, RenderResponse response)
        throws PortletException, IOException {
        response.setContentType("text/html");
        response.setTitle("Hello World");
        PrintWriter writer = response.getWriter();
        writer.println("<h2>Hello World!</h2>");
    }
}

コンパイルは下記のように行い、これを WEB-INF\classes にコピーします。

javac HelloWorldPortlet.java
  -classpath "c:\Program Files\pluto-1.1.4\shared\lib\portlet-api-1.0.jar"

portlet.xml には下記の記述を行います。

<?xml version="1.0" encoding="UTF-8"?>
<portlet-app version="1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/portlet"
  xmlns="http://java.sun.com/xml/ns/portlet">
  <portlet>
    <supports>
      <mime-type>text/html</mime-type>
    </supports>
    <portlet-name>HelloWorldPortlet</portlet-name>
    <display-name>HelloWorld</display-name>
    <portlet-class>HelloWorldPortlet</portlet-class>
    <portlet-info>
      <title>Hello World</title>
    </portlet-info>
  </portlet>
</portlet-app>

web.xml には下記の記述を行います。

<?xml version="1.0" encoding="UTF-8"?>
<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>HelloWorldPortlet</servlet-name> 
    <servlet-class>org.apache.pluto.core.PortletServlet</servlet-class> 
    <init-param> 
      <param-name>portlet-name</param-name> 
      <param-value>HelloWorldPortlet</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloWorldPortlet</servlet-name>
    <url-pattern>/PlutoInvoker/HelloWorldPortlet</url-pattern>
  </servlet-mapping>
</web-app>

shutdown.bat により Pluto を停止し、startup.bat で再起動し、http://localhost:8080/pluto/portal にアクセスし、pluto pluto でログインし、[Pluto Admin] ページで、MyTest ページを作成(Add Page)し、MyTest ページに対して、[/HelloWorldPortlet]→[HelloWorldPortlet] アプリケーションを追加(Add Portlet)した後、MyTestページに「HelloWorld!」のポートレットが表示されれば成功です。

WEB-INF 配下を WAR ファイルにアーカイブすると、これは、JSR-168 に準拠したポートレットファイルとなります。このファイルを、JSR-168 に対応したポータルサーバであれば、この WAR ファイルをコピーすることで、簡単にポートレットを実装することが可能になります。


Copyright (C) 2007 杜甫々
初版作成:2008年1月4日
http://www.tohoho-web.com/ex/tomcat.htm