長い間JavaServletでの開発を行っていなかったので、
久しぶりにEclipseでServlet開発環境を構築したところ、
ずいぶん便利になっていたと感じました。

ここでは、
Mavenを利用して、依存するjarの解決とwarのビルド
Tomcatを利用して、ローカルPCでの動作確認
を行う環境を構築する流れを説明します。
MacOSXでの構築の流れですが、Windowsでも同様の流れで構築できるはずです。

Eclipse4.3とTomcatのセットアップ

以下のサイトからeclipseをダウンロードします。

Eclipse
 http://www.eclipse.org/downloads/
 →Download
 →Eclipse IDE for Java EE Developers, 245 MB
ファイル名:eclipse-jee-kepler-SR1-macosx-cocoa-x86_64.tar.gz

以下のサイトからtomcatをダウンロードします。

Apache Tomcat
 http://tomcat.apache.org/
 →Download - Tomcat6.0
 →Binary Distributions - Core zip
ファイル名:apache-tomcat-6.0.37.zip

上記の2ファイルを適当なディレクトリに展開します。
ここでは、
Eclipseをユーザディレクトリの直下に展開
tomcatをEclipseディレクトリの直下に展開、することにします。
 Eclipse: /Users/<ユーザ名>/eclipse
 tomcat: /Users/<ユーザ名>/eclipse/apache-tomcat-6.0.37

次に、Eclipseを展開したディレクトリにあるeclipseをダブルクリックし起動します。
Workspaceの格納先が聞かれるので、適当なディレクトリを指定します。
ここでは、
Eclipseディレクトリ直下のworkspaceディレクトリを指定することにします。
 /Users/<ユーザ名>/eclipse/workspace

Eclipseが起動したらWorkspaceリンクを押下してWorkspaceを開いておきます。

Mavenプロジェクトの作成

Eclipseを起動したら、
File → New → MavenProject メニューを選択すると、
New Maven Projectダイアログが表示されます。

eclipseservlet_1

「Next >」を押下します。

eclipseservlet_2

ArtifactId「maven-archetype-webapp」を選んで「Next >」を押下します。

eclipseservlet_3

GroupIdとArtifactIDを、任意に指定して「Finish」を押下します。
GroupIdにはモジュールが属するグループのID、ArtifactIdモジュールのIDを指定しますが、
ひとまずここでは、
Group Idを、com.takemikami
Artifact Idを、eclipsesample
としておきます。

「Java EE」perspectiveを開いて、PojectExploererを確認すると、
以下のようなプロジェクトが作成されているはずです。

eclipseservlet_4

以下のディレクトリが無くビルドエラーになっているので、作成しておきます。
 src/main/java
 src/test/java

依存するjarの解決

次にサーブレットが利用するjarを追加します。

以下のサイトから利用したいjarを探します。

Maven Repository: Search/Browse/Explore
 http://mvnrepository.com

ここでは、Servlet2.5を追加してみることにします。
「servlet」と入力して「Search」すると、
検索結果に「Servlet 2.5」が出てくるので、
詳細を開き、最新版の1.2を選択すると、以下の内容が表示されます。
ここでgroupId, artifactId, versionが確認できます。

eclipseservlet_5

次に、Eclipseで作成したプロジェクト配下の「pom.xml」を開きます。
Dependencyタブを選び、Dependenciesの「Add...」ボタンを押下します。

eclipseservlet_6

「Select Dependency」ダイアログで先ほど確認した、
groupId, artifactId, versionを入力し「OK」を押下します。
scopeは「provided」にします。

scopeは、以下のルールで指定します。
・compileは、WEB-INF/lib配下に含めたいjarの場合
・providedは、WEB-INF/lib配下に含めないjarの場合
 (Servlet2.5はServletEngineに含まれるのでWEB-INF/lib配下に含める必要は無い)
・testは、単体テスト実行時のみ必要なjarの場合

pom.xmlを保存すると、Servlet2.5のjarが自動的にダウンロードされます。
作成したプロジェクトの、
JavaResources → Libraries → Maven Dependencies を開くと、
以下の用に表示されているはずです。

eclipseservlet_7

Servlet2.5の場合は依存Jarが無いですが、
依存するJarがある場合は、それらも自動的にダウンロードされます。

Tomcatでの動作確認

次に、ローカルPCでの動作確認用にtomcatを設定します。

Eclipse → 環境設定 メニューを選択し、Preferencesダイアログを開きます。
左側メニューから Server → Runtime Environment を選びます。

eclipseservlet_8

「Add...」を押下します。

eclipseservlet_9

「Apache Tomcat6」を選び、「Next >」を押下します。

eclipseservlet_10

「Tomcat Installation Directory」にtomcatを展開したディレクトリを指定し、
(ここでの説明通りであれば「/Users/<ユーザ名>/eclipse/apache-tomcat-6.0.37」)
「Finish」を押下します。

「OK」を押下して、「Preferences」も閉じます。

次に、Eclipseで作成したプロジェクトのコンテキストメニューから、
Run As → Run On Server を選択します。

eclipseservlet_11

Run On Serverダイアログが表示されるので「Finish」を押下します。

eclipseservlet_12

しばらくすると、
Eclipse内でブラウザが開き、次のような画面表示されます。

eclipseservlet_13

これは「src/main/webapp/index.jsp」の実行結果です。
このファイルを変更して、ブラウザをリロードするとその変更結果が反映されます。

サーブレットの作成

ここまでで、依存Jarの解決と動作確認ができるようになったので、
一つサーブレットを作ってみることにします。

以下2ファイルを作成、編集します。

src/main/java/eclipsesample/HelloServlet.java

package eclipsesample;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.print("Hello Servlet by Eclipse !!");
}

}

src/main/webapp/WEB-INF/web.xml

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>eclipsesample.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>

web.xmlを変更したので、tomcatを再起動しておきます。
ServersビューでTomcat v6.0 Serverのコンテキストメニューから、
「Restart」を選択して、tomcatが再起動します。

eclipseservlet_14

ブラウザから、
http://localhost:8080/eclipsesample/hello」
をリクエストすると次のような画面が表示されます。

eclipseservlet_15

warファイルのビルド

最後に、ここまでで作成したアプリケーションをwarファイルにまとめます。
作成したプロジェクトのコンテキストメニューから、
Run as → 6.Maven Build ... を選択します。

eclipseservlet_16

eclipseservlet_17

Goalsに「war:war」を指定して「Run」を押下します。
ビルドが実行され、target配下にwarファイルが作成されます。
Refreshすれば、以下のようにProjectExplorerには表示されます。

eclipseservlet_18

後は、このwarファイルを実サーバにアップロードすればOKですね。

開発環境を作るのもずいぶん簡単になったなという感想ですが、
こうやって、手順まとめると結構長い気もしますね。。