Eclipseでサーブレット開発環境を作る(Tomcat編)
2013/05/08追記:このエントリに、SQLiteを使ったDBサンプルの例まで追加したものを、http://homepage1.nifty.com/y-osumi/works/code/eclipse/に加筆修正してまとめました
Javaのサーブレット開発と言えばEclipse+Tomcatが定番だが、どちらもバージョンアップのたびに結構微妙な点が変わるので、Eclipse上でのTomcat設定構築のやり方が書籍やネット上の情報では既に古くなってしまっているものが多い。
というわけで、2013年4月現在の環境構築メモを作ってみた。いろいろ細かく書いているのでEclipse+Tomcat入門・初心者向け。
環境
ダウンロードとインストール
最初に注意点として、Tomcat周りについてはJava EEに含まれているWTP(Web Tools Platform)を利用する。そのためEclipse用のTomcatプラグインはインストールしなくて良い。
古いドキュメント類では eclipsetotal.com のプラグインを別途インストールするように書かれているものが多いけど、これは現在のEclipseでは不要である。(ということに気が付くまでハマってしまった)
Eclipse
Eclipseは公式ページから素直にダウンロードすれば良い。
http://www.eclipse.org/downloads/
ダウンロード対象の候補は下記2つあるけど、この2つは同梱プラグインの違いでしかない。
今回はTomcatで動くJavaアプリを書くのが目的なので、WTP(Web Tools Platform)などその辺のプラグインが最初から入っている"Eclipse IDE for Java EE Developers"を選べば良い。
ダウンロードしたら、展開して出てくる[Eclipse]フォルダを好きなディレクトリに置くだけでインストールは完了する。ここでは C:\Program Files に置くこととする。なお、日本語化は面倒なのでしていない。まぁだいたい英語のままでも分かるし、日本語は問題なく通るからだいじょうぶです。
Tomcat
公式ページ(Apache Tomcat 7 Downloads)からダウンロードする。配布形式が色々あるのだが、Windows上で使うならば[Core]のzipファイルをダウンロードすれば良い。
ダウンロード後は、好きなディレクトリに展開するだけで良い。私の場合、C:\localというディレクトリ下に置いた。(C:\local\apache-tomcat-7.0.39)
注意点として、Tomcatの設定(server.xmlなど)はすべてEclipse内からおこなうので、手動でTomcatの設定をする必要はない。ダウンロードしてきたzipファイルを展開し、それだけでインストール完了である。
EclipseでHelloWorldサーブレットを作る (Tomcat編)
というわけで必要なものがインストールできたので、さっそくHello Worldのサーブレットを作ってみよう。
新規プロジェクトの作成
- メニューから、[File]→[New]→[Project]を選択する。
- ダイアログで[Web]から[Dynamic Web Project]を選択する。
- Project設定画面が開くので、[Project Name]に "TomcatTest" と入力する。
- 同じくProject設定画面内、[Target runtime]が "none" になっているので、[New Runtime]を選んで設定ダイアログを表示する。[Apache - Apache Tomcat v7.0]を選択し、[Create a new local server]にチェックして[Next]を押す。
- [Tomcat Server]の設定ダイアログが開くので、[Tomcat installation directory]に、先ほどTomcatを置いたディレクトリ(ここではC:\local\apache-tomcat-7.0.39)を[Browse]で選択する。
- 次の[Web Module]のダイアログで、web.xmlを自動生成するため"Generate web.xml deployment descriptor"にチェックを入れておく。Content directoryはデフォルトの[WebContent]で良い。
- [Finish]。少し時間がかかるので待つ。
文字コードの設定
HelloWorldサーブレットを作る
これでプロジェクトの準備ができたので、HelloWorldクラス(サーブレット)を追加する。
- [Create Servelt]のダイアログが開くので、[Java package]に適当なパッケージ名(ここでは com.example.part1)、Class nameに[HelloWorld]と入力する。あとはそのまま[Next]して[Finish]する。
response.getWriter().write("Hello, World!");
これで、HelloWorld.java全体は、こんな感じになる。自分で書いたのは、doGet内の1行だけであることに注意:
package com.example.part1; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class HelloWorld */ @WebServlet("/HelloWorld") public class HelloWorld extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public HelloWorld() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().write("Hello, World!"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } }