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プログラミングについてみてゆくことにする。
2 Trackback(s)