Eclipse上でのServletの開発

April 27, 2010 – 9:18 pm

 前回の「EclipseでJava Webプログラミング環境を整える」に続き、このエントリーでは、Eclipse上でのWeb プログラミングの手続きを解説したサイト http://www.vogella.de/ の記述に沿ってServletのサンプルプログラムを作成動作させた経験についてメモする。

参考にしたサイト: Eclipse Galileoを用いたJavaベースの動的Webプログラミングに適当な解説がないかと探していたところ、非常に良くまとまった解説、Java, Eclipse, Android and Web Tutorials ( http://www.vogella.de/) を見つけた。このサイト、具体的なサンプルを示しながら、Eclipse 上でのWebプログラミングの手続きを詳しく示してくれている。

私のような初心者がプログラミングスキルを得ようとするとき、こうしたtutorialを参考にし、これをなぞるかたちで、自らサンプルプログラムを作成し、動作させるなかで、ツールの背景になる概念を学ぶのがてっとりばやい。以下、実際に作成・動作させてみた経験を、詳しく示してみよう。

Projectの生成: Eclipse上でプログラミングしようとする際、最初に行うのが、プロジェクトの生成だ。Projectを生成するには、ツールメニューの[File] →  [New]  → [Dynamic Web Project] とすればよい。([File]に代えて、前回説明したように、Project Explorer上にマウスカーソルを置き右クリックすることでも、同じ効果を得ることができる)


 
「New Dynamic  Web Project」ウィンドウが現れるので、ここで[Project Name]のカラムを埋める。ここでは、我がサイトのドメインネーム yamasnet.com に対応させて、作成するProject名を「com.yamasnet.web.wtp.filecounter」とし、これを入力し、[Finish] ボタンを押下。

上記の操作でProject が生成され、Project Explorer上に対応するタグが登録される。

Javaプログラムの作成: 今、作成しよとしているWebtプログラムは、通常のJavaプログラム、FileDao.java、とServlet、FileCounter.javaの二つから構成される。まず、FileDao.javaの作成からとりかかる。

まず、FileDao.javaを「格納」するpackageを作成するところから開始する。前項で作成したプロジェクトのタグにマウスのカーソルを置き、右クリック、そして[New] → [Class] とする。

ポップアップしてくる「New java Class]ウィンドウ上で、Package名(ここでは、com.yamasnet.wtp.filecounter.dao)を入力し、[Finish]ボタンを押下する。

次に、作成したPackageに格納するjava Classの作成に移る。Project Explorer上のPackageのタグにマウスカーソルを置き右クリックし、これで現れるプルダウンメニュー上で [New] →  [Class] とする。

ここでポップアップしてくる「New Java Class」ウィンドウ上で、作成するJava Class名(ここでは、FileDao)を入力し、[Finish]ボタンを押下する。

Workbench上のEditorに、FileDao.javaのテンプレートが現れる。

このEditor上で、今作成しようとするFileDao.javaのコーディングを進めてゆくことになる。javaのソースをコーディングを進めてゆく過程で、javaの文法チェックなどが「自動的に」行われる。かなり便利な機能だ。このあたりは、Eclipseに限らず他のIDE(開発統合環境)と同様である。

ソースのコーディングが終了し、文法エラー等が全てクリアされたところで、このjava ファイルをセーブしてやる。ソースをセーブするには、エディタ画面上にマウスカーソルを置き、右クリックした際に現れるプルダウンメニュー上で[Save]としてやればよい。ショートカットキーCntl+S によっても、ソースのセーブを行うことができる。

参考のため、ここで作成したFileDao.javaのソースを以下に示す:

package com.yamasnet.wtp.filecounter.dao;

import java.io.BufferedReader;

import java.io.File;
import java.io.FileReader;

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

public class FileDao {

	public int getCount() {
		int count = 0;
		// Load the file with the counter
		FileReader fileReader = null;
		BufferedReader bufferedReader = null;
		PrintWriter writer = null ;
 		try {
			File f = new File("FileCounter.initial");
			if (!f.exists()) {
				f.createNewFile();
				writer = new PrintWriter(new FileWriter(f));
				writer.println(0);
			}

			if (writer !=null){
				writer.close();
			}

	                         fileReader = new FileReader(f);
			bufferedReader = new BufferedReader(fileReader);
			String initial = bufferedReader.readLine();
			count = Integer.parseInt(initial);
		} catch (Exception ex) {
			if (writer !=null){
				writer.close();
			}
		}
		if (bufferedReader != null) {
			try {
				bufferedReader.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return count;
	}

	public void save(int count) throws Exception {
		FileWriter fileWriter = null;
		PrintWriter printWriter = null;
		fileWriter = new FileWriter("FileCounter.initial");
		printWriter = new PrintWriter(fileWriter);
		printWriter.println(count);

		// Make sure to close the file
		if (printWriter != null) {
			printWriter.close();
		}
	}
}

Servletの作成:次にServletの作成に移る。まず、上記のJava Classの場合と同様に、このServletを「格納」するPackageを作成する。作成するPackageは、ディレクトリJava Resources: src の配下におくことになる。Project Explorer上で「Java Resources: src」タグにマウスカーソルを置き右クリック、プルダウンメニューを通じて、[New] → [Package]とするばよい。

 ポップアップした「New Java Package」ウィンドウ上に、Servlet用の新しいパッケージ名(ここでは、 com.yamasnet.wtp.filecounter.servletsとしている)を入力。[Finish]を押下する。

Project Explorer上で、上記で作成したパッケージのタグにマウスカーソルを置き、右クリックすると現れるプルダウンメニュー上で、[New] → [ Servlet]とする。 

「Create Servlet」ウィンドウがポップアップされる。このうえで、今作成しようとしているServletのクラス名 (ここでは、FileCounter)を入力し、[Finish]ボタンを押下する。

Editor上に、新しく作成しようとしているServletソースのテンプレートが現れる。これを修正するかたちでコーディング作業を行うことになる。

コーディング作業を進め、文法エラーが全てクリアされる等して、コーディングが終了した段階で、このソースをセーブしてやる。セーブは、Editor領域上にマウスカーソルを置き右クリックすることにより現れるプルダウンメニュー上で[Save]を押下すればよい。

参考のため、ここで作成したFileCount.javaのソースを以下に示す:

package com.yamasnet.wtp.filecounter.servlets;

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;
import javax.servlet.http.HttpSession;

import com.yamasnet.wtp.filecounter.dao.FileDao;

/**
 * Servlet implementation class FileCounter
 */

public class FileCounter extends HttpServlet {
	private static final long serialVersionUID = 1L;

	int count;
	private FileDao dao;

	public void init() throws ServletException {
		dao = new FileDao();
		try {
			count = dao.getCount();
		} catch (Exception e) {
			getServletContext().log("An exception occurred in FileCounter", e);
			throw new ServletException("An exception occurred in FileCounter"
					+ e.getMessage());
		}
	}

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

		// Set a cookie for the user, so that the counter does not increate
		// everytime the user press refresh
		HttpSession session = request.getSession(true);
		// Set the session valid for 5 secs
		session.setMaxInactiveInterval(5);
		response.setContentType("text/plain");
		PrintWriter out = response.getWriter();
		if (session.isNew()) {
			count++;
		}
		out.println("This site has been accessed " + count + " times.");
	}

	public void destroy() {
		super.destroy();
		try {
			dao.save(count);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Webプログラムを動作させる: 前項まででプログラミング作業は終了した。ここで、Eclipse上に前回のエントリー「EclipseでJava Webプログラミング環境を整える」で登録したServer(Tomcat)上で、このServletを動作させる。

Project Explorer上には、前項で作成したServletプログラム(FileCounter.java) のタグがある。このタグ上にマウスカーソルを置き、右クリックすることにより現れるプルダウンメニューで、[Run As]  –> [1 Run on Server]とする。

「Run On Server」ウィンドウがポップアップする。[Next]ボタンを押下する。

「Add and Remove」ウィンドウがポップアップする。[Finish]ボタンを押下する。

これでWebプログラムの動作が開始される。Workbenchの下部にはConsoleが前面に現われWebプログラムの動作に至るログが出力される。Webプログラムの動作が開始すると、Editor画面の部分に、Eclipse上のブラウザが表示され、プログラムFileCountが出力される。

ブラウザの更新ボタンを押すと、ブラウザ上の数字が(5秒超えた場合には)変化することが確認できるはずだ。これで正常にServletが機能することが確認できる。

以上で、Servletの作成から動作に至る一連の手続き、流れを見てきたが、ここで示したEclipse上での操作により、ほぼこのIDEツールの基本的な使用法を理解することができたと思われる。

次回は、今回参考にした「Java, Eclipse, Android and Web Tutorials 」の記述に沿って、Eclipse上でのJavaベースのWebプログラミングについてみてゆくことにする。


  1. 2 Trackback(s)

  2. May 7, 2010: Eclipse上でJSF(Java ServerFaces)を試してみた | Yama's Memorandum
  3. Jun 1, 2010: Eclipseで作成したJSFアプリの公開サイトへの展開 | Yama's Memorandum

Post a Comment