﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-胡祥春开发专栏-文章分类-Struts相关</title><link>http://www.blogjava.net/hxcfindjob/category/4541.html</link><description>基于Java EE &amp; WebService的日文软件开发</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 02:18:55 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 02:18:55 GMT</pubDate><ttl>60</ttl><item><title>Eclipse 3.1の統合環境を使いこなす</title><link>http://www.blogjava.net/hxcfindjob/articles/18605.html</link><dc:creator>上海滩拾贝</dc:creator><author>上海滩拾贝</author><pubDate>Mon, 07 Nov 2005 08:40:00 GMT</pubDate><guid>http://www.blogjava.net/hxcfindjob/articles/18605.html</guid><wfw:comment>http://www.blogjava.net/hxcfindjob/comments/18605.html</wfw:comment><comments>http://www.blogjava.net/hxcfindjob/articles/18605.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hxcfindjob/comments/commentRss/18605.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hxcfindjob/services/trackbacks/18605.html</trackback:ping><description><![CDATA[<!--StartFragment -->&nbsp;<B><FONT color=#000000>Eclipse 3.1の統合環境を使いこなす<BR></FONT></B><FONT size=2><BR><BR>金子崇之（NTTデータ先端技術 オープンソース技術部）<BR>岡本隆史（NTTデータ 基盤システム事業本部）<BR>2005/9/28</FONT> <BR><BR>
<P>　Eclipse 2.1を対象とした前回の連載「連載：E clipseを使おう（2） <A href="http://www.atmarkit.co.jp/fjava/rensai2/eclipse02/eclipse02.html">Eclipseの統合開発環境を使いこなす</A>」では、Eclipseの基本的な使い方、覚えておきたい用語、使いこなすためのちょっとしたコツをご紹介しました。その後、Eclipseも3.0、 3.1とバージョンアップを重ね、より便利に使いやすくなっています。今回はバージョンアップで新たに導入された機能も含めて、前回と同様に Eclipseを使いこなすための情報を紹介します。</P>
<P>　なお、以下では説明の際に日本語化したメニューを用いて説明します。Eclipseをまだインストールされていない方、日本語化されていない方は、第1回「<A href="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/eclipse31_01_1.html">Eclipse 3.1の導入と日本語化</A>」の記事を読んで環境を整備してください。</P>
<P>　また「使いこなす」ためには、ショートカットキーを数多く覚えることが早道です。今回はメニュー表記のほか、ショートカットキーもなるべく紹介するようにしています。可能な限り覚えてしまいましょう。なお［Ctrl］+［Shift］+［L］で有効なショートカットキーがポップアップ表示されますので、忘れてしまったときには適時参照すると良いでしょう。</P>
<TABLE cellSpacing=1 cellPadding=3 width="95%" border=0>
<TBODY>
<TR>
<TD width="11%"><IMG height=60 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/eclipse31_gra2.jpg" width=40></TD>
<TD width="89%">
<P><FONT size=+1><B>ワークベンチ全体を把握する</B></FONT></P></TD></TR></TBODY></TABLE>
<P>　まずはEclipseを起動すると表示されるワークベンチ全体から見ていきましょう（<B>画面1</B>）。</P>
<TABLE cellSpacing=0 cellPadding=2 width="90%" align=center border=0>
<TBODY>
<TR>
<TD><A href="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/01_l.jpg"><IMG height=311 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig01.jpg" width=490 border=0></A></TD></TR>
<TR>
<TD><B><FONT size=2>画面 1 Eclipseのワークベンチ<B><FONT size=2> <FONT color=#996600>（クリックすると拡大表示します）</FONT></FONT></B></FONT></B></TD></TR></TBODY></TABLE>
<P>　ウィンドウ全体を「ワークベンチ」、中央部にあるソースが表示される部分を「エディタ」と呼びます。エディタの周囲を囲むように配置されているのが「ビュー」で、「パッケージ・エクスプローラー」や「アウトライン」「問題」など、さまざまな種類の情報を表示します。問題ビューの上端に「Javadoc」や「宣言」という文字が見えますが、これもビューです。Javadocビューや宣言ビューは問題ビューと同じ場所にタブとして重ねて表示されています。パッケージ・エクスプローラービューの上端に「&gt;&gt;1」という文字が見えますが、これは背後に別のビューが重なっていることを表示しています。</P>
<P>　これらのビューの組み合わせとレイアウトを「パースペクティブ」といい、ワークベンチ内に複数のパースペクティブを保持することができます。パースペクティブには、Javaのソース編集を行うためのJavaパースペクティブ、Javaアプリケーションのデバッグを行うデバッグパースペクティブ、CVSを操作するためのCVSパースペクティブなどがあります。開発の場面ごとに用意されたパースペクティブを用いて、適したビューの構成で作業をすることができるようになっています。ワークベンチ右上のボタンか、［Ctrl］+［F8］→［Ctrl］+ ［Shift］+［F8］を使って切り替えることができます。</P>
<TABLE cellSpacing=1 cellPadding=3 width="95%" border=0>
<TBODY>
<TR>
<TD width="11%"><IMG height=60 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/eclipse31_gra2.jpg" width=40></TD>
<TD width="89%">
<P><FONT size=+1><B>ワークベンチのレイアウトを使いこなす</B></FONT></P></TD></TR></TBODY></TABLE>
<P><B>■ビューの配置</B><BR></P>
<P>　ビューはそのタイトルバーをドラッグすることで、いろいろな位置に置くことができます。例えばアウトラインビューのタイトルバーをドラッグして、パッケージ・エクスプローラーのタイトルバーにドロップしてみると、重ねられ、タブになります。また、ワークベンチ左下のスペースにドロップすると、必要に応じて引き出せる「高速ビュー」になります。ビューは［Ctrl］+［F7］と［Ctrl］+［Shift］+［F7］で切り替えることが可能です。 Eclipse 3.1では各ビューの配置を変更する際、移動後の配置状態が枠で表示されるため、容易に思いどおりの配置を行うことができます。また、ビューのタイトルをウィンドウ外にドラッグ＆ドロップすることで、ビューをEclipseウィンドウの外に出して表示することもできます。</P>
<P><BR><B>■ビューのサイズ変更</B><BR></P>
<P>　各種ビューは、ビューのタイトル脇に表示されるアイコンをクリックすることで上下に最小化でき、必要なビューを素早く必要な大きさにすることができます。［Ctrl］+［M］で、現在アクティブなエディタやビューを最大化できます。ビューをいろいろ配置していると、しばしば狭いエディタで編集しがちですが、キー1つで最大化できるので広いエディタで編集するとよいでしょう。エディタを切り替えられる［Ctrl］+［F6］や［Ctrl］+［E］、ビューを切り替えられる［Ctrl］+［F7］などと併用すると、キーボードでの操作が快適になります。また、エディタやビューを閉じる機能は［Ctrl］+ ［F4］のほか［Ctrl］+［W］にも割り当てられ、使わないエディタはすぐ閉じることができます。</P>
<P><B>■エディタの拡張</B><BR></P>
<P>　同じファイルを2つのエディタで開くことができます。［ウィンドウ］→［新規エディタ］で新しいエディタが開きますので、タブをドラッグしてエディタの配置を変え、同じファイルの異なる場所を同時に表示できます。大きなファイルを編集しているときに役立つでしょう。<BR><BR><!--StartFragment -->&nbsp;<BR><BR>
<TABLE cellSpacing=1 cellPadding=3 width="95%" border=0>
<TBODY>
<TR>
<TD width="11%"><IMG height=60 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/eclipse31_gra2.jpg" width=40></TD>
<TD width="89%">
<P><FONT size=+1><B>プロジェクトを使いこなす</B></FONT></P></TD></TR></TBODY></TABLE></P>
<P>　Eclipseでの開発は、プロジェクトという単位で行います。</P>
<P><B>■ワーキングセットの設定</B><BR></P>
<P>　パッケージ・エクスプローラービューのメニュー［▽］から［ワーキングセットの選択］→［新規］を選択し、ワーキングセットを作成できます。ワーキングセットとは編集の対象としたいプロジェクトやプロジェクト内のフォルダを指定したものです。パッケージ・エクスプローラービューのメニューから［表示］→ ［ワーキングセット］を選択すると、プロジェクトやフォルダがワーキングセットごとに表示されます（<B>画面2</B>）。</P>
<P>
<TABLE cellSpacing=0 cellPadding=2 width="90%" align=center border=0>
<TBODY>
<TR>
<TD><IMG height=393 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig2.gif" width=490></TD></TR>
<TR>
<TD><B><FONT size=2>画面2　ワーキングセットによる表示</FONT></B></TD></TR></TBODY></TABLE></P>
<P>■<B>プロジェクト設定ファイル</B><BR></P>
<P>　プロジェクトごとの設定は、各プロジェクトフォルダ配下の.settingsフォルダ内に記録されるようになりました。このフォルダの中身をコピーすることにより、あるプロジェクトで設定した内容を別のプロジェクトに適用することができます。</P>
<P><B>■プロジェクト外部のファイルを編集</B><BR></P>
<P>　プロジェクト外部のファイルをEclipseで編集することもできます。［ファイル］→［外部ファイルを開く］で、プロジェクト外部のファイルを指定します。このとき、プロジェクトは1つも存在しなくても問題ありません。Tomcatの設定ファイルをEclipseのXML編集プラグインを使ってちょっと編集する、といったことが実現できます。</P>
<P>
<TABLE cellSpacing=1 cellPadding=3 width="95%" border=0>
<TBODY>
<TR>
<TD width="11%"><IMG height=60 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/eclipse31_gra2.jpg" width=40></TD>
<TD width="89%">
<P><FONT size=+1><B>Javaエディタを使いこなす</B></FONT></P></TD></TR></TBODY></TABLE></P>
<P>　Eclipse 3.1のJava開発環境（Java Development Tool：JDT）は、Eclipseにあらかじめ組み込まれているJava開発のためのプラグインです。Javaソース用のエディタや、型階層ビュー、デバッグ用のビューなどが含まれています。商用のIDEに劣らない、さまざまな機能が盛り込まれています。まずはJavaエディタを使いこなせるようになりましょう。<BR></P>
<P><B>■行番号と印刷マージンの表示</B><BR></P>
<P>　デフォルトの状態では、行番号はワークベンチ下部のステータスバーに表示されるだけです。［ウィンドウ］→［設定］→［ワークベンチ］→［エディタ］→ ［テキストエディタ］で表示されるダイアログで、［行番号の表示］を有効にするとJavaエディタ上でも行番号が確認できます。同じダイアログで［印刷マージンの表示］も有効にしておくと、Javaエディタ上で印刷範囲が表示されるため、印刷時に見やすいコードを書くことができます。<BR></P>
<P><B>■行を単位とした編集</B><BR></P>
<P>　エディタでは、行を単位とした編集を活用すると便利です。［Alt］+［↑］や［Alt］+［↓］で、選択範囲またはカーソルのある行を上下に移動することができます。［Ctrl］+［Alt］+［↑］では、対象行を複製することもできます。［Alt］+［Shift］+［↑］→［↓］で選択範囲を広げ、［Alt］+［↑］→［↓］で移動する、といった使い方をすると便利でしょう。なお、カーソルのある行の削除は，［Ctrl］+［D］で削除できます。<BR></P>
<P><B>■コメントアウトの操作</B><BR></P>
<P>　ソースをコメントアウトするときの操作は2種類が提供されています。［ソース］-「コメントの切り替え」（［Ctrl］+［/］）では行頭に「//」を付けたり、取ったりすることができます。［ソース］-「ブロックコメントの追加」（［Ctrl］+［Shift］+［/］）では選択範囲を「/* ...*/」で囲むことができます。後者は［ソース］-「ブロックコメントの除去」（［Ctrl］+［Shift］+［?］）で元に戻すことができます。<BR></P>
<P><B>■フォールディングの設定</B><BR></P>
<P>　デフォルトでソースコードのヘッダコメントやインポート文については折り畳み表示が有効になっており、狭いエディタを有効活用できます。常に展開されていた方が良い場合には、［ウィンドウ］→［設定］→［Java］→［エディタ］→［フォールディング］で表示されるダイアログで折り畳み表示対象をカスタマイズすることができます。<BR></P>
<P><B>■カラーリングの設定</B><BR></P>
<P>　フィールドの属性（static、final）などに応じて文字の色を変えたり、deprecated指定されているクラスやメソッドに対して取り消し線を表示させたりすることができます。これらは、［ウィンドウ］→［設定］→［Java］→［エディタ］→［カラーリング］で表示されるダイアログでカスタマイズすることができます（<B>画面3</B>）。</P>
<P>
<TABLE cellSpacing=0 cellPadding=2 width="90%" align=center border=0>
<TBODY>
<TR>
<TD><A href="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig3.gif"><IMG height=459 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig3s.gif" width=490 border=0></A></TD></TR>
<TR>
<TD><B><FONT size=2>画面3　カラーリングの設定<B><FONT size=2> <FONT color=#996600>（クリックすると拡大表示します）</FONT></FONT></B></FONT></B></TD></TR></TBODY></TABLE></P>
<P></P>
<P>
<TABLE cellSpacing=1 cellPadding=3 width="95%" border=0>
<TBODY>
<TR>
<TD width="11%"><IMG height=60 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/eclipse31_gra2.jpg" width=40></TD>
<TD width="89%">
<P><FONT size=+1><B>コードアシストを使いこなす</B></FONT></P></TD></TR></TBODY></TABLE></P>
<P><B>■コンテンツアシスト</B><BR></P>
<P>　第1回の記事でも触れましたが、コーディング中に［Ctrl］+［Space］を押下すると、その文脈で利用できるコードを補完してくれます（<B>画面4</B>）。また、パラメータヒントは、［Ctrl］+［Shift］+［Space］でポップアップします。</P>
<P>
<TABLE cellSpacing=0 cellPadding=2 width="90%" align=center border=0>
<TBODY>
<TR>
<TD><A href="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig4.gif"><IMG height=173 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig4s.gif" width=490 border=0></A></TD></TR>
<TR>
<TD><B><FONT size=2>画面4　コードの候補が表示される<B><FONT size=2> <FONT color=#996600>（クリックすると拡大表示します）</FONT></FONT></B></FONT></B></TD></TR></TBODY></TABLE></P>
<P>　また、オブジェクトのメンバ名の補完だけでなく、無名クラスを実装するときにオーバーライドするメソッドのスケルトンを生成したり、try-catch といった定型コードのスケルトンなどを生成したりすることもできます。単純なタイプミスなどは、［Ctrl］+［1］を押下することでEclipseが適切に修正候補を表示し、選択するだけで修正が完了します（<B>画面5</B>）。</P>
<P>
<TABLE cellSpacing=0 cellPadding=2 width="90%" align=center border=0>
<TBODY>
<TR>
<TD><A href="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig5.gif"><IMG height=189 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig5s.gif" width=490 border=0></A></TD></TR>
<TR>
<TD><B><FONT size=2>画面5　タイプミスに対して修正候補が表示される<B><FONT size=2> <FONT color=#996600>（クリックすると拡大表示します）</FONT></FONT></B></FONT></B></TD></TR></TBODY></TABLE></P>
<P><B>■import文の編集</B><BR></P>
<P>　import 文がない場合には、パッケージ名を含めた状態でクラス名補完を行うと、自動的にimport文を追加してくれます。import文がゴチャゴチャになってしまった場合は、［ソース］→［インポートの編成］または［Ctrl］+［Shift］+［O］でいつでも整理できます。</P>
<P><B>■ソースの整形</B><BR></P>
<P>　ソースの整形についても、［ソース］→［フォーマット］または［Ctrl］+［Shift］+［F］で、設定したフォーマットのとおりに整形してくれます。ソースの一部分を選択してその部分だけを整形したり、プロジェクトやフォルダを選択して一括で整形したりすることもできます。</P>
<P>　［ウィンドウ］→［設定］→［Java］→［コード・スタイル］→［コード・フォーマッター］で表示されるダイアログで、整形ルールをカスタマイズできます。エディターのタブ幅をはじめ、空白、空行、改行のポリシーなど200項目以上の設定が可能です。設定した項目は名前を付けて保存したり、エクスポート／インポートができるようになっています。チームでコーディングスタイルをそろえるのに重宝します。</P>
<P>　また、 Javadocもフォーマットできます。指定した横幅に詰め込んだり、&lt;UL&gt;などのHTMLタグを記述したりしている場合は、それに応じて整形してくれます。Javadocコメント内に&lt;pre&gt;タグを用いてJavaソースを記述している場合、そのソースも整形してくれるのもうれしい機能です。</P>
<P><B>■その他のコードアシスト</B><BR></P>
<P>　その他のコードアシスト機能としては、スーパークラスのメソッドをオーバーライドしたい場合は［ソース］→［メソッドのオーバーライド/実装］が、データメンバのGetter／Setterメソッドが欲しいときは［ソース］→［GetterおよびSetterの作成］が自動的にコードを作成してくれます。委譲メソッドを作成したり、コンストラクタを作成したりすることも可能です。また、パッケージ・エクスプローラービューで、メソッドをドラッグしてほかのクラスにドロップするだけで、簡単にメソッドのコピーを行うこともできます。</P>
<P>　このように、コードを書く作業に余計な手間を掛けることなく、ロジックを考えることに専念することができます。&nbsp;<BR><BR><!--StartFragment --> </P>
<P><FONT size=2><B><FONT color=#000000>Eclipse 3.1の統合環境を使いこなす</FONT></B><BR></FONT><BR></P>
<P>
<TABLE cellSpacing=1 cellPadding=3 width="95%" border=0>
<TBODY>
<TR>
<TD width="11%"><IMG height=60 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/eclipse31_gra2.jpg" width=40></TD>
<TD width="89%">
<P><FONT size=+1><B>サードパーティのJARを利用する</B></FONT></P></TD></TR></TBODY></TABLE></P>
<P>　サードパーティのJARを利用する方法は大きく分けて2つあります。プロジェクト内部にJARを配置する方法と、プロジェクト外部のJARを参照する方法です。</P>
<P><B>■プロジェクト内部にJARを配置</B><BR></P>
<P>　プロジェクト内部にJARを配置する方法は、デプロイする段階でJARを同梱したい場合に使用します。［ファイル］→［インポート］→［ファイルシステム］で、インポートしたいJARファイルのあるディレクトリを選択し、表示された一覧からJARを指定すると、プロジェクトに取り込むことができます。その後、プロジェクトを右クリック-［プロパティ］→［Javaのビルド・パス］→［ライブラリー］→［JARの追加］で、インポートしたJARを指定することで、利用できるようになります。</P>
<P><B>■プロジェクト外部のJARを参照</B><BR></P>
<P>　プロジェクト外部のJARを参照する方法は、デプロイ時にそのJARを同梱しない場合に使用します。参照方法には、JARファイルを直接指定する方法、変数を使用する方法、ユーザー・ライブラリーを指定する方法の3つがあります。プロジェクトを右クリック→［プロパティ］→［Javaのビルド・パス］→ ［ライブラリー］で表示されるダイアログで［外部JARの追加］/［変数の追加］/［ライブラリーの追加］を指定することで利用できるようになります。</P>
<P>　設定を他人と共有する場合には、Eclipseのインストールディレクトリなどの環境依存の部分を吸収するため［ECLIPSE_HOME/plugins/org.apache.ant_1.6.5/lib/ant.jar］のECLIPSE_HOMEのように変数を使用すると良いでしょう。また、依存するJARファイルが多い場合には、複数のJARファイルをユーザー・ライブラリーとしてまとめておくと、利用したいプロジェクトに対しては，このユーザー・ライブラリーだけをビルド・パスに追加すればよい、というようなことを実現できるため良いでしょう。</P>
<P><B>■［コードの断片］の実行</B><BR></P>
<P>　Java プロジェクトで、［ファイル］→［新規］→［スクラップブック・ページ］を追加すると、.jpageという拡張子の付いたファイルができます。これは Javaのクラスを作成することなく、ちょっと思い付いたコードや試したいコードを断片としてメモし、それを即座に実行する、といった使い方ができるページです。</P>
<P>　例えば、［java.text.DecimalFormat.getCurrencyInstance ().format(19800);］と入力した後、その行を選択して右クリック→［表示］または［Ctrl］→［Shift］→［D］を選択すると、 “(java.lang.String) ￥19,800”といった結果を得ることができます。</P>
<P>
<TABLE cellSpacing=1 cellPadding=3 width="95%" border=0>
<TBODY>
<TR>
<TD width="11%"><IMG height=60 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/eclipse31_gra2.jpg" width=40></TD>
<TD width="89%">
<P><FONT size=+1><B>ビルド機能</B></FONT></P></TD></TR></TBODY></TABLE></P>
<P>　Java ソースファイルのコーディング中でも、文法エラーがある場合、エディタの左端に赤い×印が付きます。保存すると、自動的にコンパイルが行われ、コンパイルエラーが発生している場合、ナビゲータビューやパッケージビュー上でエラーが発生している個所に赤い×印が付くとともに、修正が必要な個所がタスクビューに表示され、一目で分かるようになっています（<B>画面6</B>）。</P>
<P>
<TABLE cellSpacing=0 cellPadding=2 width="95%" align=center border=0>
<TBODY>
<TR>
<TD><A href="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/06_l.jpg"><IMG height=325 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig06.jpg" width=490 border=0></A></TD></TR>
<TR>
<TD><B><FONT size=2>画面6 パッケージビュー、タスクビューの問題表示<B><FONT size=2> <FONT color=#996600>（クリックすると拡大表示します）</FONT></FONT></B></FONT></B></TD></TR></TBODY></TABLE></P>
<P>　タスクビューで、エラータスクをダブルクリックし、エラーの場所にジャンプして修正しましょう。この例では、Runnableインターフェイスのrun ()メソッドを実装する必要があります。［ソース］→［メソッドのオーバーライド/実装］を実行し、［run］にチェックを付けて［OK］を押すと、スケルトンコードを生成してくれます。必要なコードを実装して［保存］し、赤い印が全部消えれば、実行できるようになっています。</P>
<P>
<TABLE cellSpacing=1 cellPadding=3 width="95%" border=0>
<TBODY>
<TR>
<TD width="11%"><IMG height=60 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/eclipse31_gra2.jpg" width=40></TD>
<TD width="89%">
<P><FONT size=+1><B>タスクで作業メモ</B></FONT></P></TD></TR></TBODY></TABLE></P>
<P>　開発中、作業を後回しにするといったとき、その内容とソースコード位置を合わせて「タスク」としてメモしておくことができます（<B>画面7</B>）。</P>
<P>
<TABLE cellSpacing=0 cellPadding=2 width="95%" align=center border=0>
<TBODY>
<TR>
<TD><A href="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/07_l.jpg"><IMG height=339 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig07.jpg" width=490 border=0></A></TD></TR>
<TR>
<TD><B><FONT size=2>画面7 タスクにメモを残しながら作業できる<B><FONT size=2> <FONT color=#996600>（クリックすると拡大表示します）</FONT></FONT></B></FONT></B></TD></TR></TBODY></TABLE></P>
<P>　タスクを設定したい行にカーソルを移動し、［編集］メニュー、またはエディタの左端での右クリックメニューから、［タスクの追加］を選択し、説明を追加すると、タスクビューのエントリとして追加できます。タスクビューのエントリをダブルクリックすることで、カーソルが該当行へジャンプします。</P>
<P>　ソースコード中にコメントとして“TODO:”や“FIXME”、“XXX”というキーワードを付けると、これらもタスクとして登録されます。キーワードは［ウィンドウ］→［設定］→［Java］→［コンパイラー］→［タスク・タグ］でカスタマイズすることができます。</P>
<P>　タスクに似たような機能として、「ブックマーク」があります。ブックマークビューにリストされることを除いて、タスクと同様の機能を持っています。ブックマークビューが表示されていないときは、［ウィンドウ］→［ビューの表示］→［その他］→［基本］で［ブックマーク］を選択することで表示できます。</P>
<P>
<TABLE cellSpacing=1 cellPadding=3 width="95%" border=0>
<TBODY>
<TR>
<TD width="11%"><IMG height=60 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/eclipse31_gra2.jpg" width=40></TD>
<TD width="89%">
<P><FONT size=+1><B>デバッグ支援機能</B></FONT></P></TD></TR></TBODY></TABLE></P>
<P>　Eclipseは、ブレークポイントを設定したり、ステップを実行したりといったデバッグ支援機能を持っています。</P>
<P>　ソース上のブレークポイントを設定したい行で、［実行］→［行ブレークポイントの切り替え］（［Ctrl］+［Shift］+［B］）を選択すると、エディタの左端に青い○印が付きます。この状態で、［実行］→［デバッグ］を選択すると、自動的にデバッグパースペクティブに切り替わり、設定したブレークポイント上で実行がいったん停止します。この時点で、デバッグビューでスタックトレースを観察したり、変数ビューで変数の中身を見たり、表示ビューで式を評価したり、ステップ実行したりできます（<B>画面8</B>）。</P>
<P>
<TABLE cellSpacing=0 cellPadding=2 width="95%" align=center border=0>
<TBODY>
<TR>
<TD><A href="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/08_l.jpg"><IMG height=368 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig08.jpg" width=490 border=0></A></TD></TR>
<TR>
<TD><B><FONT size=2>画面 8 デバッグの機能<B><FONT size=2> <FONT color=#996600>（クリックすると拡大表示します）</FONT></FONT></B></FONT></B></TD></TR></TBODY></TABLE></P>
<P>　ソース上で変数にマウスポインタを当てると、その変数の値がポップアップ表示されます。また、変数や式を選択して［Ctrl］+［Shift］+［I］と入力すると，その詳細な値がポップアップ表示されます。さらにここで［Ctrl］+［Shift］+［I］を入力すると、その式をそのまま式ビューに追加できるようになっています。変数ビューでは、値がnullな配列の要素を非表示にするフィルタがあり、ArrayListのようなコレクションクラスの内容も見やすく表示できます（<B>画面9</B>）。</P>
<P>
<TABLE cellSpacing=0 cellPadding=2 align=center border=0>
<TBODY>
<TR>
<TD><IMG height=202 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig9.gif" width=392 border=0></TD></TR>
<TR>
<TD><B><FONT size=2>画面9 コレクションクラスの表示</FONT></B></TD></TR></TBODY></TABLE></P>
<P>　また変数ビューで，変数の値が表示されている部分を書き換えることができます。値を書き換えて［Ctrl］+［S］を入力すれば，その値を変数に代入できます。</P>
<P>
<TABLE cellSpacing=1 cellPadding=3 width="95%" border=0>
<TBODY>
<TR>
<TD width="11%"><IMG height=60 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/eclipse31_gra2.jpg" width=40></TD>
<TD width="89%">
<P><FONT size=+1><B>コードを飛び回れ</B></FONT></P></TD></TR></TBODY></TABLE></P>
<P><B>■関連するクラスへの移動</B><BR></P>
<P>　コード中のメソッド呼び出しを右クリックして［宣言を開く］（［F3］）を選択すると、そのメソッドの実装部分にジャンプすることができます。オブジェクトに対して同じ操作をすると、そのオブジェクトのクラス定義にジャンプします。</P>
<P>　別のファイルにジャンプした場合は、エディタ上の別タブとして開きますので、元のタブを選択（［Alt］+［←］）すれば元の位置に戻ることができます。</P>
<P>　メソッド定義を右クリックして［検索］→［参照］→［ワークスペース］（［Ctrl］+［Shift］+［G］）を選択すると、そのメソッドを呼び出している個所を検索し、検索ビューに表示します。検索結果はエディタ上で黄色い矢印で表示されます。クラス名をキー入力して探したいときは、サーチ（［Ctrl］+［H］）が便利です。</P>
<P>　［ナビゲート］→［クイック・アウトライン］（［Ctrl］+［O］）を実行することで、ファイルのアウトラインをポップアップウィンドウで確認できます。もう1度［Ctrl］+［O］を入力することで、スーパークラスのメンバも表示され、そのメソッドをクリックしてジャンプすることができます。</P>
<P>　［ナビゲート］→［クイック型階層］（［Ctrl］+［T］）でポップアップする型階層ウィンドウを使うと、継承関係にあるほかのクラスにジャンプすることができます。もう1度｢Ctrl］+［T］を入力することで、階層の上下関係を切り替えることができます（<B>画面10</B>）。また、階層ビューではインターフェイスを処理対象とすることができるので、そのインターフェイスを実装しているクラスを表示し、そこへ移動することも容易です。</P>
<P>
<TABLE cellSpacing=0 cellPadding=2 align=center border=0>
<TBODY>
<TR>
<TD><IMG height=341 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig10.gif" width=490></TD></TR>
<TR>
<TD><B><FONT size=2>画面10　階層構造へジャンプ</FONT></B></TD></TR></TBODY></TABLE></P>
<P>　［ナビゲート］→［呼び出し階層を開く］（［Ctrl］+［Alt］+［H］）を実行することで、そのJava要素の［コールグラフ］、つまり、そのメソッドが呼び出している、またはそのメソッドを呼び出しているメソッドを階層表示することができます。これは以前Call Hierarchy Plug-inとして提供されていた機能です。</P>
<P><B>■注釈で移動</B><BR></P>
<P>　コンパイルエラーがある場合や、検索を実行した場合などにもエディタの左側にマークが付きます。これらのマークを注釈といいます。タスクビュー、問題ビュー、検索ビューに表示されている行をダブルクリックすることで、該当行に移動することができます。<BR></P>
<P>　［ナビゲート］→［次の注釈］（［Ctrl］+［.］）という操作をすることで、編集中のファイルの注釈へ移動することができます。このとき、移動先の対象となる注釈を選択することができます。移動対象としてタスクを選択しておけば（<B>画面11</B>）、TODO:コメントがある行に即座にジャンプすることができます。<BR><BR></P>
<P>
<TABLE cellSpacing=0 cellPadding=2 align=center border=0>
<TBODY>
<TR>
<TD><IMG height=229 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig11.gif" width=284></TD></TR>
<TR>
<TD><B><FONT size=2>画面11　移動先の注釈を選択できる</FONT></B></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=3 width="95%" border=0>
<TBODY>
<TR>
<TD width="11%"><IMG height=60 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/eclipse31_gra2.jpg" width=40></TD>
<TD width="89%">
<P><FONT size=+1><B>リファクタリング機能</B></FONT></P></TD></TR></TBODY></TABLE></P>
<P>　メソッドの名前を変更するなど、ソースの広い範囲に影響が加わるリファクタリングも、簡単に実施できます。ソース上で右クリックして、［リファクタリング］（［Alt］+［Shift］+［T］）で表示されるリファクタリングメニューから実行したいリファクタリングを選択すると、ワークスペース上のソースから影響範囲を探し出し、自動的に修正を行ってくれます。表示されるダイアログで［プレビュー］ボタンをクリックすると、変更内容を目で確認してからリファクタリングを実行することができます。</P>
<P>　メソッドのプルアップ（スーパークラスへの移動）や、別クラスへの移動なども半自動です。Javadocの@paramタグも適切に修正される、メソッドシグニチャを変更したときにサブクラスも同様に修正されるなど、関連する部分も自動的に処理されるので、奔放にリファクタリングを行うことが可能となっています。</P>
<P>
<TABLE cellSpacing=1 cellPadding=3 width="95%" border=0>
<TBODY>
<TR>
<TD width="11%"><IMG height=60 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/eclipse31_gra2.jpg" width=40></TD>
<TD width="89%">
<P><FONT size=+1><B>J2SE 5.0への対応</B></FONT></P></TD></TR></TBODY></TABLE></P>
<P>　Eclipse 3.1では、J2SE 5.0に完全対応しています。Javaプロジェクトの新規作成においてJ2SE 5.0を選択する（<B>画面12</B>）ことで、以下のようなJ2SE 5.0の機能に対応します。<BR></P>
<UL>
<LI>J2SE 5.0のAPIに対応したコンテンツアシスト<BR></LI>
<LI>Enumeration、Annotation、Genericsに対応したウィザード、リファクタリング<BR></LI>
<LI>Autoboxing、GenericなどJ2SE 5.0の文法に対応したJavaエディタ<BR></LI></UL>
<P>
<TABLE cellSpacing=0 cellPadding=2 align=center border=0>
<TBODY>
<TR>
<TD><IMG height=458 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_02/fig12.gif" width=490></TD></TR>
<TR>
<TD><B><FONT size=2>画面12　プロジェクトの作成でJ2SE 5.0を選択</FONT></B></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=3 width="95%" border=0>
<TBODY>
<TR>
<TD width="11%"><IMG height=60 src="http://www.atmarkit.co.jp/fjava/rensai3/eclipse31_01/eclipse31_gra2.jpg" width=40></TD>
<TD width="89%">
<P><FONT size=+1><B>まとめ</B></FONT></P></TD></TR></TBODY></TABLE></P>
<P>　今回は、EclipseのワークベンチとJava開発環境について見てきました。Eclipse 2.1と比較し、さまざまなところで使い勝手が向上しています。カスタマイズできる項目も大幅に増えているので、より自分好みに設定することが可能です。</P>
<P>　次回は、Eclipse 3.1をターゲットとして開発されたWeb開発のためのプロジェクト、WTP（Web Tools Platform Project）を用いたWebアプリケーション開発について説明します。</P><img src ="http://www.blogjava.net/hxcfindjob/aggbug/18605.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hxcfindjob/" target="_blank">上海滩拾贝</a> 2005-11-07 16:40 <a href="http://www.blogjava.net/hxcfindjob/articles/18605.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> JSPの特長を整理する</title><link>http://www.blogjava.net/hxcfindjob/articles/18604.html</link><dc:creator>上海滩拾贝</dc:creator><author>上海滩拾贝</author><pubDate>Mon, 07 Nov 2005 08:39:00 GMT</pubDate><guid>http://www.blogjava.net/hxcfindjob/articles/18604.html</guid><wfw:comment>http://www.blogjava.net/hxcfindjob/comments/18604.html</wfw:comment><comments>http://www.blogjava.net/hxcfindjob/articles/18604.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hxcfindjob/comments/commentRss/18604.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hxcfindjob/services/trackbacks/18604.html</trackback:ping><description><![CDATA[<!--StartFragment -->&nbsp;<B>JSPの特長を整理する<BR><BR><BR></B><A href="http://www.sth.co.jp/"><FONT size=2>スティルハウス</FONT></A><FONT size=2><BR>吉川和巳<BR>2005/9/23<BR></FONT><B><FONT size=2></FONT></B><BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width=450 align=center border=0>
<TBODY>
<TR>
<TD><FONT size=2>Javaを途中までかじったが挫折した。やはりJavaプログラマにスキルチェンジしたい！という読者のために、Tomcatの最新バージョンを使いながらJSPを基礎から解説していく。（編集局）</FONT></TD></TR></TBODY></TABLE><BR><BR><A name=00></A>
<TABLE cellSpacing=0 cellPadding=0 width=490 border=0>
<TBODY>
<TR>
<TD vAlign=center align=middle width=22><IMG height=40 src="http://www.atmarkit.co.jp/fjava/rensai3/tomcat01/Tomcat_gra1.jpg" width=40></TD>
<TD width=2>
<P><FONT size=+1><B></B></FONT></P></TD>
<TD vAlign=center><FONT size=+1><B><FONT size=3>&nbsp;JSPとは？</FONT></B></FONT></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=2 cellPadding=4 width=250 align=right border=0>
<TBODY>
<TR>
<TD><FONT size=2><B>主な内容</B></FONT><BR><FONT size=2><IMG height=16 src="http://www.atmarkit.co.jp/images/indexarrow.gif" width=14><A href="http://www.atmarkit.co.jp/fjava/rensai3/tomcat01/tomcat01.html#00">JSPとは？</A><BR><IMG height=16 src="http://www.atmarkit.co.jp/images/indexarrow.gif" width=14><A href="http://www.atmarkit.co.jp/fjava/rensai3/tomcat01/tomcat01.html#10">JSPと</A></FONT><FONT size=2><A href="http://www.atmarkit.co.jp/fjava/rensai3/tomcat01/tomcat01.html#10">PHPを比較する</A> </FONT></TD></TR></TBODY></TABLE>
<P>　現在のインターネットの主役は、掲示板やブログ、オンライン・ショッピング、ネット・オークション、ニュースサイトなど、時々刻々と変化する情報やさまざまなサービスを提供するWebサイトです。これらは、あたかもPC上で動作するアプリケーションのように豊富な機能を実現できることから、一般に「Web アプリケーション」と呼ばれます。<BR></P>
<P>　当然のことながら、固定的なHTMLページをサイト管理者が手作業で書くような方法では、Webアプリケーションは実現できません。そこで通常は、ユーザーがWebブラウザに入力したデータやデータベースに保存された情報を基に、WebサーバがリアルタイムにHTMLページを組み立て、Webブラウザに送り返すという仕組みを実装します。</P>
<P>　JSP （JavaServer Pages）は、こうした「コンテンツの動的な生成」を実現するテクノロジの1つです。1998年にサン・マイクロシステムズによって最初のJSP仕様が発表された後、JavaによるWebアプリケーション開発になくてはならない基盤技術として世界中で普及しつつあります。2003年11月には最新版の JSP 2.0が公開され、いまでは仕様としても十分に成熟しています。<BR></P>
<P>　JSP では、通常のHTMLページの代わりに、「.jsp」という拡張子を持つ「JSPページ」を記述することで、Webコンテンツを動的に生成できます。以下の画面は、1から10までの数値を並べたWebページをリアルタイムに作成する、ごく簡単なWebアプリケーションの例です。</P>
<TABLE cellSpacing=0 cellPadding=3 width=450 border=0>
<TBODY>
<TR>
<TD><FONT size=2><B>サンプルのJSPページの表示例</B></FONT></TD></TR>
<TR>
<TD><IMG height=178 src="http://www.atmarkit.co.jp/fjava/rensai3/tomcat01/fig.gif" width=490> </TD></TR></TBODY></TABLE>
<P>　このWebアプリケーションは、以下のJSPページによって実装されています。</P>
<TABLE cellSpacing=0 cellPadding=10 width=450 border=0>
<TBODY>
<TR>
<TD bgColor=#ffffcc><FONT color=#ff0000><CODE>&lt;%@&nbsp;page&nbsp;contentType="text/html;&nbsp;charset=Windows-31J"&nbsp;%&gt;<BR>&lt;%@&nbsp;taglib&nbsp;uri="http://java.sun.com/jsp/jstl/core"&nbsp;prefix="c"&nbsp;%&gt;<BR></CODE></FONT><CODE><BR>&lt;html&gt;<BR>&nbsp;&nbsp;&lt;head&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;JSPサンプル&lt;/title&gt;<BR>&nbsp;&nbsp;&lt;/head&gt;<BR>&nbsp;&nbsp;&lt;body&gt;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;<FONT color=#ff0000>&lt;c:forEach&nbsp;var="item"&nbsp;begin="1"&nbsp;end="10"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${item}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/c:forEach&gt;</FONT><BR><BR>&nbsp;&nbsp;&lt;/body&gt;<BR>&lt;/html&gt; </CODE></TD></TR></TBODY></TABLE>
<P>　ここで、赤色の部分はJSP固有のタグです。それ以外の部分では、通常のHTMLタグを記述します。例えば上記の例では、「c:forEach」というループ用のJSPタグで1から10までの数値を生成し、それをHTMLのbodyタグの間に挿入することで、Webブラウザに表示しています。つまり JSPページは、「動的なコンテンツを挿入したい部分にJSPタグを書く」という点を除けば、通常のHTMLページと同じように記述できます。またJSP ページはテキストファイルであり、コンパイル作業も不要なため、メモ帳などのエディタで簡単に修正できるのが特徴です。<A name=10></A></P>
<TABLE cellSpacing=0 cellPadding=0 width=490 border=0>
<TBODY>
<TR>
<TD vAlign=center align=middle width=22><IMG height=40 src="http://www.atmarkit.co.jp/fjava/rensai3/tomcat01/Tomcat_gra1.jpg" width=40></TD>
<TD width=2>
<P><FONT size=+1><B></B></FONT></P></TD>
<TD vAlign=center><FONT size=+1><B><FONT size=3>&nbsp;JSPとPHPを比較する</FONT></B></FONT></TD></TR></TBODY></TABLE>
<P>　Webコンテンツを動的に生成する手段として著名なものにPHPがあります。では、PHPとJSPにはどのような違いがあるのでしょうか。以下は、それぞれを簡単に比較した表です。</P><FONT size=2><B>サーバサイド・スクリプト技術の比較<BR></B></FONT>
<TABLE cellSpacing=1 cellPadding=5 width=490 border=0>
<TBODY>
<TR bgColor=#000033>
<TD width=143 bgColor=#000033><FONT color=#ffffff size=2>スクリプト</FONT></TD>
<TD width=179 bgColor=#cccccc><FONT color=#000000 size=2>JSP</FONT></TD>
<TD width=134 bgColor=#cccccc><FONT color=#000000 size=2>PHP</FONT></TD></TR>
<TR>
<TD width=143 bgColor=#000033><FONT color=#ffffff size=2>使用言語</FONT></TD>
<TD width=179 bgColor=#cccccc><FONT color=#000000 size=2>Java</FONT></TD>
<TD width=134 bgColor=#cccccc><FONT color=#000000 size=2>PHP</FONT></TD></TR>
<TR>
<TD width=143 bgColor=#000033><FONT color=#ffffff size=2>開発ベンダ</FONT></TD>
<TD width=179 bgColor=#cccccc><FONT color=#000000 size=2>サン</FONT></TD>
<TD width=134 bgColor=#cccccc><FONT color=#000000 size=2>Zend</FONT></TD></TR>
<TR>
<TD width=143 bgColor=#000033><FONT color=#ffffff size=2>利用OS</FONT></TD>
<TD width=179 bgColor=#cccccc><FONT color=#000000 size=2>Windows/Linux/UNIX</FONT></TD>
<TD width=134 bgColor=#cccccc><FONT color=#000000 size=2>主にLinux</FONT></TD></TR>
<TR>
<TD width=143 bgColor=#000033><FONT color=#ffffff size=2>Webサーバ</FONT></TD>
<TD width=179 bgColor=#cccccc><FONT color=#000000 size=2>主にApache＋JSP対応コンテナ</FONT></TD>
<TD width=134 bgColor=#cccccc><FONT color=#000000 size=2>主にApache</FONT></TD></TR>
<TR>
<TD width=143 bgColor=#000033><FONT color=#ffffff size=2>パフォーマンス</FONT></TD>
<TD width=179 bgColor=#cccccc><FONT color=#000000 size=2>◎</FONT></TD>
<TD width=134 bgColor=#cccccc><FONT color=#000000 size=2>△</FONT></TD></TR>
<TR>
<TD width=143 bgColor=#000033><FONT color=#ffffff size=2>開発環境</FONT></TD>
<TD width=179 bgColor=#cccccc><FONT color=#000000 size=2>○</FONT></TD>
<TD width=134 bgColor=#cccccc><FONT color=#000000 size=2>○</FONT></TD></TR>
<TR>
<TD width=143 bgColor=#000033><FONT color=#ffffff size=2>習得の容易さ、<BR>開発者の多さ<BR></FONT></TD>
<TD width=179 bgColor=#cccccc><FONT color=#000000 size=2>△</FONT></TD>
<TD width=134 bgColor=#cccccc><FONT color=#000000 size=2>◎</FONT></TD></TR>
<TR>
<TD width=143 bgColor=#000033><FONT color=#ffffff size=2>ホスティング環境<BR>の多さ</FONT></TD>
<TD width=179 bgColor=#cccccc><FONT color=#000000 size=2>△</FONT></TD>
<TD width=134 bgColor=#cccccc><FONT color=#000000 size=2>◎</FONT></TD></TR>
<TR>
<TD width=143 bgColor=#000033><FONT color=#ffffff size=2>保守性、<BR>大規模対応<BR></FONT></TD>
<TD width=179 bgColor=#cccccc><FONT color=#000000 size=2>◎</FONT></TD>
<TD width=134 bgColor=#cccccc><FONT color=#000000 size=2>△</FONT></TD></TR>
<TR>
<TD width=143 bgColor=#000033><FONT color=#ffffff size=2>ポータビリティ</FONT></TD>
<TD width=179 bgColor=#cccccc><FONT color=#000000 size=2>◎</FONT></TD>
<TD width=134 bgColor=#cccccc><FONT color=#000000 size=2>○</FONT></TD></TR></TBODY></TABLE>
<P>　PHP は、オープンソース・コミュニティから生まれた技術であり、主にLinuxサーバ上で利用されています。Javaなどに比べて学習の容易なスクリプト言語を利用するので、初心者でもすぐに習得できるのが特徴です。また、データセンター事業者が提供する共用ホスティング（共用サーバの貸し出し）サービスのほとんどがPHPに対応しています。こうした理由から、PHPは小規模なWebアプリケーション開発で最もポピュラーなサーバサイド・スクリプト技術として普及しています。ただし敷居が低い分だけ、ある程度の規模を超えるとパフォーマンスや保守性、開発生産性を維持するのが難しくなります。<BR></P>
<P>　JSP は、前述のとおりサンが開発したサーバサイド・スクリプト技術であり、LinuxやWindows、UNIXなどJavaが動作する大半のプラットフォームで利用できます。JSPはJava言語の知識を前提とするため、PHPに比べれば開発者の数は少なく、プログラマ単価も高めです。またデータセンターでの運用には専用Linuxサーバなどが必要になります。こうしたことから、小規模なWebアプリケーション開発ではPHPほどポピュラーではありません。しかしJSPは、Java言語の特徴であるポータビリティやパフォーマンスの高さ、オブジェクト指向による柔軟性を生かせるため、スケーラブルで信頼性に優れたWebアプリケーションを構築できます。こうした理由から、中～大規模のWebアプリケーションや、高度な信頼性や可用性、機能性、保守性が要求されるECサイトや企業の基幹業務システムなどでJSPが広く利用されています。</P>
<P>　以上、今回はサーバサイド・スクリプト技術であるJSPの概要を紹介し、その位置付けを説明しました。次回は、業界標準のWebコンテナ「Tomcat」を利用してJSP開発環境を構築する手順を解説します。</P>
<TABLE cellSpacing=0 cellPadding=5 width=490 align=center border=0>
<TBODY>
<TR>
<TD bgColor=#cccccc><B><FONT size=2>訂正のお知らせ</FONT></B><BR><FONT size=2>本記事において、当初JSPとPHP、ASP.NETとを比較する内容がございましたが、JSP／PHPとASP.NETを横並びで比較すること自体が不適切であり、JavaとASP.NETの優位性についての議論は本記事の趣旨ではないため、ASP.NETに関する記述は削除させていただきました。<BR>内容について正確を期せなかった点、読者の皆様にお詫び申し上げます。</FONT></TD></TR></TBODY></TABLE>
<P>
<TABLE cellSpacing=1 cellPadding=2 width=430 align=center border=0>
<TBODY>
<TR bgColor=#006699>
<TD colSpan=2><B><FONT color=#ffffff size=2>&nbsp;やり直し「JSPとTomcat」 バックナンバー</FONT></B></TD></TR></TBODY></TABLE></P><img src ="http://www.blogjava.net/hxcfindjob/aggbug/18604.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hxcfindjob/" target="_blank">上海滩拾贝</a> 2005-11-07 16:39 <a href="http://www.blogjava.net/hxcfindjob/articles/18604.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第１回：Struts入門編 </title><link>http://www.blogjava.net/hxcfindjob/articles/18602.html</link><dc:creator>上海滩拾贝</dc:creator><author>上海滩拾贝</author><pubDate>Mon, 07 Nov 2005 08:35:00 GMT</pubDate><guid>http://www.blogjava.net/hxcfindjob/articles/18602.html</guid><wfw:comment>http://www.blogjava.net/hxcfindjob/comments/18602.html</wfw:comment><comments>http://www.blogjava.net/hxcfindjob/articles/18602.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hxcfindjob/comments/commentRss/18602.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hxcfindjob/services/trackbacks/18602.html</trackback:ping><description><![CDATA[<!--StartFragment -->&nbsp;<TR><TD>
<TABLE cellSpacing=0 cellPadding=0 width="98%" border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=0 width="98%" border=0>
<TBODY>
<TR>
<TD class=titleAfterPage2>
<H1>第１回：Struts入門編</H1></TD>
<TD>&nbsp;</TD></TR></TBODY></TABLE>
<TABLE class=tableCaution cellSpacing=3 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD><SPAN class=f8pt120>最近ではStrutsフレームワークを用いたWebアプリケーション開発が非常に注目されています。この記事ではWebアプリケーションを作成したことがある方を対象に、Strutsフレームワークの基本的な仕組みからStrutsを用いたWebアプリケーションの開発の流れまでを紹介します。 </SPAN></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=1 cellPadding=0 width=400 border=0>
<TBODY>
<TR>
<TD vAlign=top><B>流郷俊彦</B><BR>株式会社アイティーブースト<BR>2004/6/14 </TD></TR></TBODY></TABLE></TD>
<TD vAlign=top align=left width=5><IMG height=1 src="http://www.stackasterisk.jp/img/spacer.gif" width=5></TD>
<TD vAlign=top align=left>&nbsp;</TD></TR></TBODY></TABLE><!-- #EndEditable --><IMG height=1 src="http://www.stackasterisk.jp/img/spacer.gif" width=1></TD> </TR><TR><TD bgcolor="#666666"><IMG height=1 src="http://www.stackasterisk.jp/img/spacer.gif" width=1></TD> </TR><TR><TD><!-- #BeginEditable "main" --><BR>
<TABLE cellSpacing=0 cellPadding=0 width="98%" border=0>
<TBODY>
<TR>
<TD>【 目次 】<BR><IMG height=11 hspace=3 src="http://www.stackasterisk.jp/base_img/pageArrow.gif" width=12 align=middle><A href="http://www.stackasterisk.jp/tech/java/strutsSec01_01.jsp#1">1.はじめに</A><BR><IMG height=11 hspace=3 src="http://www.stackasterisk.jp/base_img/pageArrow.gif" width=12 align=middle><A href="http://www.stackasterisk.jp/tech/java/strutsSec01_01.jsp#2">2.<STRONG>フレームワーク</STRONG>とは</A><BR><IMG height=11 hspace=3 src="http://www.stackasterisk.jp/base_img/pageArrow.gif" width=12 align=middle><A href="http://www.stackasterisk.jp/tech/java/strutsSec01_02.jsp#3">3.<STRONG>Struts</STRONG>の処理の流れ</A><BR><IMG height=11 hspace=3 src="http://www.stackasterisk.jp/base_img/pageArrow.gif" width=12 align=middle><A href="http://www.stackasterisk.jp/tech/java/strutsSec01_02.jsp#4">4.<STRONG>Struts</STRONG>アプリケーションの作成</A><BR><IMG height=11 hspace=3 src="http://www.stackasterisk.jp/base_img/pageArrow.gif" width=12 align=middle><A href="http://www.stackasterisk.jp/tech/java/strutsSec01_03.jsp#5">5.入力用JSPの準備</A><BR><IMG height=11 hspace=3 src="http://www.stackasterisk.jp/base_img/pageArrow.gif" width=12 align=middle><A href="http://www.stackasterisk.jp/tech/java/strutsSec01_03.jsp#6">6.フォームBeanの定義</A><BR><IMG height=11 hspace=3 src="http://www.stackasterisk.jp/base_img/pageArrow.gif" width=12 align=middle><A href="http://www.stackasterisk.jp/tech/java/strutsSec01_03.jsp#7">7.アクションクラスの定義</A><BR><IMG height=11 hspace=3 src="http://www.stackasterisk.jp/base_img/pageArrow.gif" width=12 align=middle><A href="http://www.stackasterisk.jp/tech/java/strutsSec01_04.jsp#8">8.<STRONG>struts</STRONG>-config.xmlの設定</A><BR><IMG height=11 hspace=3 src="http://www.stackasterisk.jp/base_img/pageArrow.gif" width=12 align=middle><A href="http://www.stackasterisk.jp/tech/java/strutsSec01_04.jsp#9">9.出力用JSPの定義</A><BR><IMG height=11 hspace=3 src="http://www.stackasterisk.jp/base_img/pageArrow.gif" width=12 align=middle><A href="http://www.stackasterisk.jp/tech/java/strutsSec01_04.jsp#10">10.まとめ</A><BR></TD></TR>
<TR>
<TD background=../../base_img/dotline2_1_7pix.gif><IMG height=7 src="http://www.stackasterisk.jp/img/spacer.gif" width=1></TD></TR>
<TR>
<TD class=f10pt130>
<TABLE class=sourceWaku cellSpacing=0 cellPadding=5 width="100%" border=0>
<TBODY>
<TR>
<TD class=tdEnv><SPAN class=strongGray>【実行環境】</SPAN><BR>
<TABLE cellSpacing=0 cellPadding=1 width=300 border=0>
<TBODY>
<TR>
<TD>OS WindowsXP <BR>JDK JDK1.4.2 <BR>WebコンテナTomcat5.0.24<BR><STRONG>Struts</STRONG> <STRONG>Struts</STRONG>1.1</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR><A name=1>
<H2>1.はじめに</H2></A>　<STRONG>Struts</STRONG>を用いた<STRONG>Webアプリケーション</STRONG>開発というのは現在では至るところで行われています。Java関連の書籍を見るといたるところで「<STRONG>Struts</STRONG>」という言葉を目にすることから<STRONG>Struts</STRONG>が今世の中で非常に注目されていることがわかります。<STRONG>Struts</STRONG>はJakartaプロジェクトで開発された<A href="http://www.stackasterisk.jp/tech/java/mvc01_01.jsp"><STRONG>MVC</STRONG>アーキテクチャ</A>のController部分を提供してくれる<STRONG>フレームワーク</STRONG>です。<STRONG>Struts</STRONG>を使用して開発を行うことにより、開発効率が向上することや用意されたアクションタグを用いることにより、JSP内でスクリプトを使わずに動的なページを生成することもできます。また、アプリケーションの作成の手順が統一化されるので、機能変更や機能追加なども容易に行えるようになります。これらの理由からも<STRONG>Struts</STRONG>が注目されているということがわかります。本記事では「<STRONG>Struts</STRONG>って何？」という方を対象に<STRONG>フレームワーク</STRONG>という言葉から<STRONG>Struts</STRONG>の概要について紹介いたします。<BR><BR><BR>
<CENTER>
<TABLE class=tableCaution cellSpacing=0 cellPadding=20 width=400 border=0>
<TBODY>
<TR>
<TD bgColor=#ffff99>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR vAlign=top>
<TD align=left width=40><A href="http://www.stackasterisk.jp/person/merit.jsp"><IMG height=27 alt=会員登録のメリット！ src="http://www.stackasterisk.jp/base_img/profile.gif" width=36 border=0> </A></TD>
<TD><A href="http://school.itboost.co.jp/ss/">▼Java や Linux を体系的に学びましょう！▼</A><BR>Stack*のアイティーブーストが、<BR>新学習方式のカリキュラムを開発しました！<BR><B>9500円から</B><SPAN style="FONT-SIZE: 8pt">(*1)</SPAN>、Java や Linux を体系的に学べます！！<BR><SPAN style="FONT-SIZE: 8pt">(*1 テキスト代のみの税別料金です)</SPAN> </TD></TR></TBODY></TABLE></CENTER></TD></TR></TBODY></TABLE></CENTER><BR><BR><BR><A name=2>
<H2>2.フレームワークとは</H2></A>　<STRONG>Struts</STRONG>は<STRONG>MVC</STRONG>アーキテクチャのController部分を提供してくれる<STRONG>フレームワーク</STRONG>です。そもそも<STRONG>フレームワーク</STRONG>とは何なのでしょうか？<STRONG>フレームワーク</STRONG>は同種類のアプリケーションにおいて共通している部分を抜き出し、その共通部分を提供してくれるものです。つまり、<STRONG>フレームワーク</STRONG>を使ってアプリケーションを開発するということは、アプリケーションの土台となる部分に<STRONG>フレームワーク</STRONG>が提供する機能を利用し、アプリケーション固有のプログラム（部品）のみを作成するということです。<BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width="98%" border=0>
<TBODY>
<TR>
<TD>
<DIV align=center><IMG height=233 src="http://www.stackasterisk.jp/tech/java/img/strutsSec01_01.gif" width=480></DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR><BR><!--StartFragment -->&nbsp;<A name=3>
<H2>3.Strutsの処理の流れ</H2></A>　では、<STRONG>Struts</STRONG>を使ったアプリケーションの処理の流れを見ていきたいと思います。<STRONG>Struts</STRONG>を用いた<STRONG>Webアプリケーション</STRONG>は主にActionServlet、フォームBean、アクションクラスの3つで構成されます。また、処理の制御を行う設定ファイルがあり、それが<STRONG>struts</STRONG>-config.xmlです。以下はこれらの関係を図にしたものです。<BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width="98%" border=0>
<TBODY>
<TR>
<TD>
<DIV align=center><IMG height=370 src="http://www.stackasterisk.jp/tech/java/img/strutsSec01_02.gif" width=480></DIV></TD></TR></TBODY></TABLE><BR>図中の番号は以下のようなことを行っています。<BR>
<TABLE cellSpacing=3 cellPadding=0 width="98%" border=0>
<TBODY>
<TR vAlign=top>
<TD width=20>(1)</TD>
<TD>～.doという形式のリクエストがActionServletに対して送られます。</TD></TR>
<TR vAlign=top>
<TD width=20>(2)</TD>
<TD>ActionServletは<STRONG>struts</STRONG>-config.xmlを参照し、～.doの「～」の部分に対応するフォームBean、アクションクラスを決定します。</TD></TR>
<TR vAlign=top>
<TD width=20>(3)</TD>
<TD>リクエストパラメータを対応するフォームBeanにセットします。また必要であれば入力値のチェックも行います。</TD></TR>
<TR vAlign=top>
<TD width=20>(4)</TD>
<TD>アクションクラスのexecute( )メソッドが呼び出されます。この中でリクエスト毎に固有の処理が実行されます。</TD></TR>
<TR vAlign=top>
<TD width=20>(5)</TD>
<TD>再度<STRONG>struts</STRONG>-config.xmlを参照し、適切な出力用Viewへ移動します。</TD></TR></TBODY></TABLE><BR>　<STRONG>Webアプリケーション</STRONG>で処理の流れとしてよくある、単一のコントローラでリクエストを受け取り、専用のコントローラに処理を振り分ける、パラメータの値をModelにセットする、処理した結果に応じた適切なViewにフォワードするといった<STRONG>Webアプリケーション</STRONG>としての基本的な処理を行ってくれるのが<STRONG>Struts</STRONG>です。つまり、<STRONG>Struts</STRONG>では要所要所で具体的な処理の内容を定義するだけで<STRONG>Webアプリケーション</STRONG>が作成できます。<BR>　以降では簡単なアプリケーションを作成しこれらの流れを抑えていきましょう。<BR><BR><BR>
<CENTER>
<TABLE class=tableCaution cellSpacing=0 cellPadding=20 width=400 border=0>
<TBODY>
<TR>
<TD bgColor=#ffff99>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR vAlign=top>
<TD align=left width=40><A href="http://www.stackasterisk.jp/person/merit.jsp"><IMG height=27 alt=会員登録のメリット！ src="http://www.stackasterisk.jp/base_img/profile.gif" width=36 border=0> </A></TD>
<TD><A href="http://school.itboost.co.jp/ss/">▼Java や Linux を体系的に学びましょう！▼</A><BR>Stack*のアイティーブーストが、<BR>新学習方式のカリキュラムを開発しました！<BR><B>9500円から</B><SPAN style="FONT-SIZE: 8pt">(*1)</SPAN>、Java や Linux を体系的に学べます！！<BR><SPAN style="FONT-SIZE: 8pt">(*1 テキスト代のみの税別料金です)</SPAN> </TD></TR></TBODY></TABLE></CENTER></TD></TR></TBODY></TABLE></CENTER><BR><BR><BR><A name=4>
<H2>4.Strutsアプリケーションの作成</H2></A>　<A href="http://jakarta.apache.org/" target=_blank>http://jakarta.apache.org/</A>から<STRONG>Struts</STRONG>1.1をダウンロードします。ダウンロードしたファイルを展開すると中にjakarta-<STRONG>struts</STRONG>-1.1\webapps\<STRONG>struts</STRONG>-blank.warというファイルがあります。このファイルはzip形式で圧縮されたファイルなので拡張子を.zipに変更することで解凍することができます（JARコマンドを使用すれば拡張子を変更する必要はありません）。<BR>　このwarファイルは<STRONG>Struts</STRONG>を用いた<STRONG>Webアプリケーション</STRONG>のテンプレートになっています。解凍すると、<STRONG>Struts</STRONG>アプリケーションを作成するために必要なJARファイルや設定ファイルなどが既に適切な位置に配置されています。あとは、この中にクラスやJSPを配置していけば<STRONG>Struts</STRONG>アプリケーションが作成できます。<BR>　今回はこの中に簡単なユーザ認証を行うアプリケーションを作成していきます。<BR>　なお、今回作成するサンプルプログラムの階層は以下のようになります。<BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width="98%" border=0>
<TBODY>
<TR>
<TD>
<DIV align=center><IMG height=271 src="http://www.stackasterisk.jp/tech/java/img/strutsSec01_03.gif" width=411></DIV></TD></TR></TBODY></TABLE><BR><!--StartFragment -->&nbsp;<A name=5>
<H2>5.入力用JSPの準備</H2></A>　まず、入力用のJSPから見ていきます。これは以下のようなJSPになります。<BR><BR><B>【loginForm.jsp】</B><BR>
<TABLE class=tableExplain cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=tdExplain><FONT face="ＭＳ ゴシック, Osaka－等幅">&nbsp;1:&nbsp; &lt;%@&nbsp;page&nbsp;contentType="text/html;&nbsp;charset=Windows-31J"&nbsp;%&gt;<BR>&nbsp;2:&nbsp; <B>&lt;%@&nbsp;taglib&nbsp;uri="/WEB-INF/struts-html.tld"&nbsp;prefix="html"&nbsp;%&gt;</B><BR>&nbsp;3:&nbsp; <B>&lt;%@&nbsp;taglib&nbsp;uri="/WEB-INF/struts-bean.tld"&nbsp;prefix="bean"&nbsp;%&gt;</B><BR>&nbsp;4:&nbsp; <B>&lt;%@&nbsp;taglib&nbsp;uri="/WEB-INF/struts-logic.tld"&nbsp;prefix="logic"&nbsp;%&gt;</B><BR>&nbsp;5:&nbsp; <BR>&nbsp;6:&nbsp; <B>&lt;html:html&gt;</B><BR>&nbsp;7:&nbsp; &nbsp;&nbsp;&lt;head&gt;&lt;title&gt;ログイン画面&lt;/title&gt;<BR>&nbsp;8:&nbsp; &nbsp;&nbsp;&lt;body&gt;<BR>&nbsp;9:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<B>&lt;html:form&nbsp;action="/login"&gt;</B><BR>10:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;table&nbsp;border="0"&gt;<BR>11:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<BR>12:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;名前&lt;/td&gt;&lt;td&gt;<B>&lt;html:text&nbsp;property="name"&nbsp;/&gt;</B>&lt;/td&gt;<BR>13:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<BR>14:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<BR>15:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;パスワード&lt;/td&gt;&lt;td&gt;<B>&lt;html:password&nbsp;property="password"&nbsp;/&gt;</B>&lt;/td&gt;<BR>16:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<BR>17:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<BR>18:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;colspan="2"&gt;<B>&lt;html:submit&nbsp;value="ログイン"&nbsp;/&gt;</B>&lt;/td&gt;<BR>19:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<BR>20:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/table&gt;<BR>21:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<B>&lt;/html:form&gt;</B><BR>22:&nbsp; &nbsp;&nbsp;&lt;/body&gt;<BR>23:&nbsp; <B>&lt;/html:html&gt;</B></FONT> </TD></TR></TBODY></TABLE><BR>　2行目から4行目が<STRONG>Struts</STRONG>のタグライブラリを使用するためのtaglibディレクティブです。<STRONG>Struts</STRONG>ではHTMLの出力や条件分岐・繰り返し処理などのロジック処理の多くをアクションタグを用いて実行することができます。<BR>　今回出てきた<STRONG>Struts</STRONG>の主なアクションタグをまとめると、簡単にまとめると以下のようになります。<BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" bgColor=#666666 border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=1 cellPadding=2 width="100%" border=0>
<TBODY>
<TR bgColor=#ddffff>
<TH bgColor=#cccccc>
<DIV align=center>タグ</DIV></TH>
<TH bgColor=#cccccc>
<DIV align=center>意味</DIV></TH></TR>
<TR bgColor=#eeeeee>
<TD bgColor=#eeeeee vrap="">
<DIV align=center>&lt;html:html&gt;</DIV></TD>
<TD bgColor=#eeeeee>
<DIV align=left>HTMLの&lt;html&gt;タグに対応します。</DIV></TD></TR>
<TR bgColor=#eeeeee>
<TD bgColor=#eeeeee vrap="">
<DIV align=center>&lt;html:form&gt;</DIV></TD>
<TD bgColor=#eeeeee>HTMLの&lt;form&gt;タグになります。method属性は省略しても自動的にPOSTで送られます。</TD></TR>
<TR bgColor=#eeeeee>
<TD bgColor=#eeeeee vrap="">
<DIV align=center>&lt;html:text&gt;</DIV></TD>
<TD bgColor=#eeeeee>HTMLの&lt;input type="text"&gt;に対応します。property属性が&lt;input&gt;タグのname属性に対応します。</TD></TR>
<TR bgColor=#eeeeee>
<TD bgColor=#eeeeee vrap="">
<DIV align=center>&lt;html:password&gt;</DIV></TD>
<TD bgColor=#eeeeee>HTMLの&lt;input type="password"&gt;に対応します。property属性が&lt;input&gt;タグのname属性に対応します。</TD></TR>
<TR bgColor=#eeeeee>
<TD bgColor=#eeeeee vrap="">
<DIV align=center>&lt;html:submit&gt;</DIV></TD>
<TD bgColor=#eeeeee>HTMLの&lt;input type="submit"&gt;に対応します。</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>　これらは、後述のフォームBeanにセットされている値をデフォルト値としてくれたり、自動的にフォーカスを移動したりといった機能があります。<BR><BR><BR>
<CENTER>
<TABLE class=tableCaution cellSpacing=0 cellPadding=20 width=400 border=0>
<TBODY>
<TR>
<TD bgColor=#ffff99>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR vAlign=top>
<TD align=left width=40><A href="http://www.stackasterisk.jp/person/merit.jsp"><IMG height=27 alt=会員登録のメリット！ src="http://www.stackasterisk.jp/base_img/profile.gif" width=36 border=0> </A></TD>
<TD><A href="http://school.itboost.co.jp/ss/">▼Java や Linux を体系的に学びましょう！▼</A><BR>Stack*のアイティーブーストが、<BR>新学習方式のカリキュラムを開発しました！<BR><B>9500円から</B><SPAN style="FONT-SIZE: 8pt">(*1)</SPAN>、Java や Linux を体系的に学べます！！<BR><SPAN style="FONT-SIZE: 8pt">(*1 テキスト代のみの税別料金です)</SPAN> </TD></TR></TBODY></TABLE></CENTER></TD></TR></TBODY></TABLE></CENTER><BR><BR><BR><A name=6>
<H2>6.フォームBeanの定義</H2></A>　フォームBeanはリクエストパラメータの値を格納するためのクラスになります。フォームBeanはActionFormクラスを継承したクラスでなければならず、フォームから送られてくる値を受け取るために同名のプロパティを定義しなければなりません。今回であれば、loginForm.jspから nameとpasswordという2つのパラメータが送られてくるので、それをプロパティとして定義します。具体的には以下のようになります。<BR><BR><B>【LoginForm.java】</B><BR>
<TABLE class=tableExplain cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=tdExplain><FONT face="ＭＳ ゴシック, Osaka－等幅">&nbsp;1:&nbsp; package&nbsp;jp.co.itboost.struts;<BR>&nbsp;2:&nbsp; <BR>&nbsp;3:&nbsp; import&nbsp;org.apache.struts.action.ActionForm;<BR>&nbsp;4:&nbsp; import&nbsp;org.apache.struts.action.ActionMapping;<BR>&nbsp;5:&nbsp; <BR>&nbsp;6:&nbsp; public&nbsp;class&nbsp;LoginForm&nbsp;extends&nbsp;ActionForm&nbsp;{<BR>&nbsp;7:&nbsp; &nbsp;&nbsp;private&nbsp;String&nbsp;name;<BR>&nbsp;8:&nbsp; &nbsp;&nbsp;private&nbsp;String&nbsp;password;<BR>&nbsp;9:&nbsp; <BR><B>//nameプロパティ&nbsp;開始</B><BR>10:&nbsp; &nbsp;&nbsp;public&nbsp;String&nbsp;getName()&nbsp;{<BR>11:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;name;<BR>12:&nbsp; &nbsp;&nbsp;}<BR>13:&nbsp; <BR>14:&nbsp; &nbsp;&nbsp;public&nbsp;void&nbsp;setName(String&nbsp;name)&nbsp;{<BR>15:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;this.name&nbsp;=&nbsp;name;<BR>16:&nbsp; &nbsp;&nbsp;}<BR>17:&nbsp; <BR>18:&nbsp; &nbsp;&nbsp;public&nbsp;String&nbsp;getPassword()&nbsp;{<BR>19:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;password;<BR>20:&nbsp; &nbsp;&nbsp;}<BR><B>//nameプロパティ&nbsp;終了<BR>//passwordプロパティ&nbsp;開始</B><BR>21:&nbsp; <BR>22:&nbsp; &nbsp;&nbsp;public&nbsp;void&nbsp;setPassword(String&nbsp;password)&nbsp;{<BR>23:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;this.password&nbsp;=&nbsp;password;<BR>24:&nbsp; &nbsp;&nbsp;}<BR><B>//passwordプロパティ&nbsp;終了</B><BR>25:&nbsp; }</FONT> </TD></TR></TBODY></TABLE><BR>　6行目でクラス定義の際、ActionFormを継承しています。<BR>　10行目から16行目がnameプロパティの定義です。<BR>　18行目から24行目がpasswordプロパティの定義です。<BR>　このようなクラスを定義すると、リクエストパラメータとして送られてきたnameとpasswordの値がそれぞれnameプロパティ、passwordプロパティにセットされます。<BR><BR><A name=7>
<H2>7.アクションクラスの定義</H2></A>　アクションクラスはリクエストパラメータがフォームBeanにセットされたあと実行されるクラスです。アクションクラスの定義はActionクラスを継承し、execute( )メソッドを定義することにより行えます。execute( )メソッドは戻り値にActionForwardオブジェクトを返しますが、これは<STRONG>struts</STRONG>-config.xmlで定義した移動先にフォワードすることを意味します。<BR>　今回のログイン処理を行うアクションクラスであれば、以下のようになります。<BR><BR><B>【LoginAction.java】</B><BR>
<TABLE class=tableExplain cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=tdExplain><FONT face="ＭＳ ゴシック, Osaka－等幅">&nbsp;1:&nbsp; package&nbsp;jp.co.itboost.struts;<BR>&nbsp;2:&nbsp; <BR>&nbsp;3:&nbsp; import&nbsp;org.apache.struts.action.Action;<BR>&nbsp;4:&nbsp; import&nbsp;org.apache.struts.action.ActionForm;<BR>&nbsp;5:&nbsp; import&nbsp;org.apache.struts.action.ActionForward;<BR>&nbsp;6:&nbsp; import&nbsp;org.apache.struts.action.ActionMapping;<BR>&nbsp;7:&nbsp; import&nbsp;javax.servlet.http.*;<BR>&nbsp;8:&nbsp; <BR>&nbsp;9:&nbsp; public&nbsp;class&nbsp;LoginAction&nbsp;<B>extends&nbsp;Action</B>&nbsp;{<BR>10:&nbsp; &nbsp;&nbsp;public&nbsp;ActionForward&nbsp;execute(ActionMapping&nbsp;mapping,&nbsp;ActionForm&nbsp;form,<BR>11:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)&nbsp;{<BR>12:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<B>LoginForm&nbsp;loginForm&nbsp;=&nbsp;(LoginForm)form;</B><BR>13:&nbsp; <BR>14:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;ログイン認証<BR>15:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;("user".equals(&nbsp;loginForm.getName()&nbsp;)&nbsp;&amp;&amp;&nbsp;"itboost".equals(&nbsp;loginForm.getPassword()&nbsp;))&nbsp;{<BR>16:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;ログイン成功<BR>17:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>return&nbsp;mapping.findForward("success");</B><BR>18:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<BR>19:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;ログイン失敗<BR>20:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>return&nbsp;mapping.findForward("error");</B><BR>21:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;}<BR>22:&nbsp; &nbsp;&nbsp;}<BR>23:&nbsp; }</FONT> </TD></TR></TBODY></TABLE><BR>　9行目でActionクラスを継承しています。<BR>　12行目は引数のActionFormオブジェクトをLoginForm型にキャストしています。今回はフォームBeanにLoginFormクラスが使われるように設定されているため、LoginForm型にキャストします。<BR>　17行目は15行目のif文の条件式がtrueになる場合、つまり、ログインが成功した場合に戻り値としてActionForwardオブジェクトを返している部分です。引数のActionMappingオブジェクトのfindForward( )メソッドを呼び出すことで、ActionForwardオブジェクトを作成することができます。引数に文字列を指定していますが、これはフォワード先を識別するための情報です。実際の移動先は<STRONG>struts</STRONG>-config.xml(後述)で指定します。<BR>　20行目も同様にログインに失敗した場合は「error」という名前の移動先にフォワードします。&nbsp;<BR><BR><!--StartFragment --> <A name=8>
<H2>8.struts-config.xmlの設定</H2></A>　ここまでで、フォームBeanとアクションクラスの定義を見てきました。<STRONG>struts</STRONG>-config.xmlはあるリクエストに対して、どのフォームBeanとどのアクションクラスを使うのか、また、最終的にどこにフォワードするのかという処理の流れを定義する設定ファイルです。WEB-INFの中に<STRONG>struts</STRONG>-config.xmlがあります。大きく分けると以下のような定義になります。<BR><BR><B>【struts-config.xml】</B><BR>
<TABLE class=tableExplain cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=tdExplain><FONT face="ＭＳ ゴシック, Osaka－等幅">&nbsp;1:&nbsp; &lt;struts-config&gt;<BR>&nbsp;2:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<BR><B>&lt;!--&nbsp;フォームBeanの登録&nbsp;開始&nbsp;--&gt;</B><BR>&nbsp;3:&nbsp; &nbsp;&nbsp;&lt;form-beans&gt;<BR>&nbsp;4:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;form-bean&nbsp;name="loginForm"&nbsp;type="jp.co.itboost.struts.LoginForm"&nbsp;/&gt;<BR>&nbsp;5:&nbsp; &nbsp;&nbsp;&lt;/form-beans&gt;<BR><B>&lt;!--&nbsp;フォームBeanの登録&nbsp;終了&nbsp;--&gt;</B><BR>&nbsp;6:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<BR><B>&lt;!--&nbsp;アクションクラスの登録&nbsp;開始&nbsp;--&gt;</B><BR>&nbsp;7:&nbsp; &nbsp;&nbsp;&lt;action-mappings&gt;<BR>&nbsp;8:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;path="/login"&nbsp;type="jp.co.itboost.struts.LoginAction"&nbsp;name="loginForm"&gt;<BR>&nbsp;9:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;forward&nbsp;name="success"&nbsp;path="/jsp/loginSuccess.jsp"&nbsp;/&gt;<BR>10:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;forward&nbsp;name="error"&nbsp;path="/jsp/loginForm.jsp"&nbsp;/&gt;<BR>11:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/action&gt;<BR>12:&nbsp; &nbsp;&nbsp;&lt;/action-mappings&gt;<BR><B>&lt;!--&nbsp;アクションクラスの登録&nbsp;終了&nbsp;--&gt;</B><BR>13:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<BR>14:&nbsp; &lt;/struts-config&gt;</FONT> </TD></TR></TBODY></TABLE><BR>　<STRONG>struts</STRONG>-config.xmlには他にもいろいろと定義しますが、ここでは特に重要な&lt;form-beans&gt;タグと&lt;action-mappings&gt;タグの内容について紹介します。<BR>　まず、4行目ではloginFormという名前でjp.co.itboost.<STRONG>struts</STRONG>.LoginFormクラスを登録しています。<BR>　&lt;form-beans&gt;タグの中で&lt;form-bean&gt;タグを使い<STRONG>Struts</STRONG>で使用するフォームBeanを登録します。&lt;form-bean&gt;タグの属性の意味は以下のようになります。<BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" bgColor=#666666 border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=1 cellPadding=2 width="100%" border=0>
<TBODY>
<TR bgColor=#ddffff>
<TH bgColor=#cccccc>
<DIV align=center>属性</DIV></TH>
<TH bgColor=#cccccc>
<DIV align=center>意味</DIV></TH></TR>
<TR bgColor=#eeeeee>
<TD bgColor=#eeeeee vrap="">
<DIV align=center>name</DIV></TD>
<TD bgColor=#eeeeee>
<DIV align=left>フォームBeanの名前(自由に指定してよい)</DIV></TD></TR>
<TR bgColor=#eeeeee>
<TD bgColor=#eeeeee vrap="">
<DIV align=center>type</DIV></TD>
<TD bgColor=#eeeeee>登録するフォームBeanのクラス(FQCNで指定)</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>　次に&lt;action-mappings&gt;タグの中で&lt;action&gt;タグを使いパスとフォームBean・アクションクラスの対応付けを行います。<BR>　8行目から11行目の&lt;action&gt;タグで/loginというパスに対してjp.co.itboost.<STRONG>struts</STRONG>.LoginActionクラスをアクションクラスとして利用し、4行目で登録したloginFormという名前のフォームBeanにパラメータの値をセットします。<BR>　また、ここでは使用していませんが、scope属性でフォームBeanをどのスコープに保存するかを指定することもできます。scope属性を指定しない場合、デフォルトでsessionスコープが指定されます。<BR>　&lt;action&gt;タグで使用する属性の意味は以下のようになります。<BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" bgColor=#666666 border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=1 cellPadding=2 width="100%" border=0>
<TBODY>
<TR bgColor=#ddffff>
<TH bgColor=#cccccc>
<DIV align=center>属性</DIV></TH>
<TH bgColor=#cccccc>
<DIV align=center>意味</DIV></TH></TR>
<TR bgColor=#eeeeee>
<TD bgColor=#eeeeee vrap="">
<DIV align=center>path</DIV></TD>
<TD bgColor=#eeeeee>
<DIV align=left>リクエスト時のパスの名前(「～.do」の「～」の部分)</DIV></TD></TR>
<TR bgColor=#eeeeee>
<TD bgColor=#eeeeee vrap="">
<DIV align=center>type</DIV></TD>
<TD bgColor=#eeeeee>実行するアクションクラスのクラス名(FQCNで指定)</TD></TR>
<TR bgColor=#eeeeee>
<TD bgColor=#eeeeee vrap="">
<DIV align=center>name</DIV></TD>
<TD bgColor=#eeeeee>使用するフォームBeanの名前</TD></TR>
<TR bgColor=#eeeeee>
<TD bgColor=#eeeeee vrap="">
<DIV align=center>scope</DIV></TD>
<TD bgColor=#eeeeee>フォームBeanを保存するスコープ(application,session,request,pageのいずれか)</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>　9行目で&lt;forward&gt;タグを使用して「success」という名前に対して「/loginSuccess.jsp」というJSPへのパスを登録しています。これは、アクションクラスの戻り値を返している部分のfindForward( )メソッドの引数に対応します。<BR>　つまり、<BR><BR>
<TABLE class=sourceWaku cellSpacing=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=tdSource><FONT face="ＭＳ ゴシック, Osaka－等幅">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;mapping.findForward("success");</FONT></TD></TR></TBODY></TABLE><BR>のようにした場合、/jsp/loginSuccess.jspへ、<BR><BR>
<TABLE class=sourceWaku cellSpacing=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=tdSource><FONT face="ＭＳ ゴシック, Osaka－等幅">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;mapping.findForward("error");</FONT></TD></TR></TBODY></TABLE><BR>のようにした場合は/jsp/loginForm.jspへフォワードされます。<BR>&lt;forward&gt;タグで使用する属性は以下のような意味になります。<BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" bgColor=#666666 border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=1 cellPadding=2 width="100%" border=0>
<TBODY>
<TR bgColor=#ddffff>
<TH bgColor=#cccccc>
<DIV align=center>属性</DIV></TH>
<TH bgColor=#cccccc>
<DIV align=center>意味</DIV></TH></TR>
<TR bgColor=#eeeeee>
<TD bgColor=#eeeeee vrap="">
<DIV align=center>name</DIV></TD>
<TD bgColor=#eeeeee>
<DIV align=left>フォワード先の名前(findForward( )メソッドの引数で指定する値)</DIV></TD></TR>
<TR bgColor=#eeeeee>
<TD bgColor=#eeeeee vrap="">
<DIV align=center>path</DIV></TD>
<TD bgColor=#eeeeee>実際のフォワード先へのパス</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR><BR>
<CENTER>
<TABLE class=tableCaution cellSpacing=0 cellPadding=20 width=400 border=0>
<TBODY>
<TR>
<TD bgColor=#ffff99>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR vAlign=top>
<TD align=left width=40><A href="http://www.stackasterisk.jp/person/merit.jsp"><IMG height=27 alt=会員登録のメリット！ src="http://www.stackasterisk.jp/base_img/profile.gif" width=36 border=0> </A></TD>
<TD><A href="http://school.itboost.co.jp/ss/">▼Java や Linux を体系的に学びましょう！▼</A><BR>Stack*のアイティーブーストが、<BR>新学習方式のカリキュラムを開発しました！<BR><B>9500円から</B><SPAN style="FONT-SIZE: 8pt">(*1)</SPAN>、Java や Linux を体系的に学べます！！<BR><SPAN style="FONT-SIZE: 8pt">(*1 テキスト代のみの税別料金です)</SPAN> </TD></TR></TBODY></TABLE></CENTER></TD></TR></TBODY></TABLE></CENTER><BR><BR><BR><A name=9>
<H2>9.出力用JSPの定義</H2></A>　では、最後に出力用のJSPを作成してみます。入力用JSPと同様に<STRONG>Struts</STRONG>のアクションタグを使用しますが、ここでは、新たに&lt;bean:write&gt;というタグが出てきます。これは、&lt;jsp: getProperty&gt;と似た動きをします。&lt;bean:write&gt;タグはスコープ内のオブジェクトもしくはオブジェクトのプロパティを出力します。スコープ内のオブジェクトのプロパティを出力するアクションタグに&lt;jsp:getProperty&gt;タグがありますが、 &lt;jsp:getProperty&gt;タグとの違いは「&lt;」や「&gt;」といったHTMLにおける特殊な記号を自動的にエスケープ (「&amp;lt;」や「&amp;gt;」など)してくれるところです。ログイン成功時の画面を出力するJSPは以下のようになります。<BR><BR><B>【loginSuccess.jsp】</B><BR>
<TABLE class=tableExplain cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=tdExplain><FONT face="ＭＳ ゴシック, Osaka－等幅">1:&nbsp; &lt;%@&nbsp;page&nbsp;contentType="text/html;&nbsp;charset=Windows-31J"&nbsp;%&gt;<BR>2:&nbsp; &lt;%@&nbsp;taglib&nbsp;uri="/WEB-INF/struts-html.tld"&nbsp;prefix="html"&nbsp;%&gt;<BR>3:&nbsp; &lt;%@&nbsp;taglib&nbsp;uri="/WEB-INF/struts-bean.tld"&nbsp;prefix="bean"&nbsp;%&gt;<BR>4:&nbsp; &lt;%@&nbsp;taglib&nbsp;uri="/WEB-INF/struts-logic.tld"&nbsp;prefix="logic"&nbsp;%&gt;<BR>5:&nbsp; <BR>6:&nbsp; &lt;html:html&gt;<BR>7:&nbsp; &nbsp;&nbsp;&lt;head&gt;&lt;title&gt;ログイン成功画面&lt;/title&gt;<BR>8:&nbsp; &nbsp;&nbsp;&lt;body&gt;<BR>9:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<B>&lt;bean:write&nbsp;name="loginForm"&nbsp;property="name"&nbsp;/&gt;さん、ようこそ</B><BR>10:&nbsp; &nbsp;&nbsp;&lt;/body&gt;<BR>11:&nbsp; &lt;/html:html&gt;</FONT> </TD></TR></TBODY></TABLE><BR>　9行目が&lt;bean:write&gt;タグを使用し、loginFormのnameプロパティを出力している部分です。loginFormは今回使用したフォームBeanですが、<STRONG>struts</STRONG>-config.xmlの部分でも説明したとおり、フォームBeanは何らかのスコープに保存されます。今回は<STRONG>struts</STRONG>-config.xml ではどのスコープも指定していないので、sessionスコープに保存されているloginFormという名前のフォームBeanが対象となります。 property属性でnameという値を指定しているので、loginFormのnameプロパティが出力されます。<BR><BR><A name=10></A>
<H2><A name=10>10.まとめ</A></H2><A name=10></A>　今回は<STRONG>Struts</STRONG>を用いた<STRONG>Webアプリケーション</STRONG>の簡単な作り方を見てきました。<BR>　今回見てきましたフォームBeanの定義、アクションクラスの定義、<STRONG>struts</STRONG>-config.xmlの編集、Viewの作成の組み合わせで最低限の開発は行うことができます。しかし、<STRONG>Struts</STRONG>には他にもフォームBeanでの入力値の検証やさらに便利なアクションタグなどさまざまな便利な機能があります。これらを次回以降の記事で紹介していきたいと思います。 <img src ="http://www.blogjava.net/hxcfindjob/aggbug/18602.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hxcfindjob/" target="_blank">上海滩拾贝</a> 2005-11-07 16:35 <a href="http://www.blogjava.net/hxcfindjob/articles/18602.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用Myeclipse快速开发struts应用程序 </title><link>http://www.blogjava.net/hxcfindjob/articles/18595.html</link><dc:creator>上海滩拾贝</dc:creator><author>上海滩拾贝</author><pubDate>Mon, 07 Nov 2005 08:11:00 GMT</pubDate><guid>http://www.blogjava.net/hxcfindjob/articles/18595.html</guid><wfw:comment>http://www.blogjava.net/hxcfindjob/comments/18595.html</wfw:comment><comments>http://www.blogjava.net/hxcfindjob/articles/18595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hxcfindjob/comments/commentRss/18595.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hxcfindjob/services/trackbacks/18595.html</trackback:ping><description><![CDATA[<DIV class=postTitle><A class=postTitle2 id=viewpost1_TitleUrl HREF="/hexuzhong/archive/2005/07/06/7218.html"><FONT color=#1a8bc8>利用Myeclipse快速开发struts应用程序</FONT></A> </DIV>
<P>
<TABLE width="100%" border=0>
<TBODY>
<TR>
<TD>头疼，又有几天没更新blog了,以此文来充实我那没有什么内容的blog。不说废话快速进入正题吧。PS：本文是myeclipse帮助文档的中文简化版。 ^___^ <BR>本人是struts初学者，如有错误请多指教。</TD></TR>
<TR>
<TD>&nbsp;</TD></TR>
<TR>
<TD>
<P>开发环境：<BR>jdk5.0<BR>eclipse3.1M7 (观众问：为啥还在用eclipse3.1M7呢？答曰：没办法，偶奶奶家还是拨号上网。^*^)<BR>myeclipse3.84<BR>tomcat5.0.28</P></TD></TR>
<TR>
<TD>&nbsp;</TD></TR>
<TR>
<TD>
<P>简介：<BR>文本主要介绍用myeclipse的struts designer（图形化开发环境）开发一个简单的用户登录程序片段。<BR>主要包括2个jsp文件、一个ActionForm、一个Action等其它<BR>userLogin.jsp(用户登录及错误提示页面) userLoginSuccess.jsp(提示登录成功页面)<BR>UserLoginForm.java(ActionForm,存放用户提交信息)<BR>UserLoginAction.java(Action,简单的处理用户登录事件) <BR></P></TD></TR>
<TR>
<TD>&nbsp;</TD></TR>
<TR>
<TD>开始吧</TD></TR>
<TR>
<TD>
<P>首先我们先建立一个j2ee的web project.如图1:<BR><IMG height=500 alt=o_1.JPG src="http://www.blogjava.net/images/blogjava_net/hexuzhong/2034/o_1.JPG" width=525 border=0></P></TD></TR></TBODY></TABLE></P>点击next,Project name输入LoginDemo,其余保持默认,点击finish.<BR>在package explorer下,就可以看到我们的项目了,然后给这个项目添加Struts框架必要的文件.在我们项目名上点击右键,选择MyEclipes --&gt; Add Struts Capabilities...弹出对话框图2：<BR><IMG height=442 alt=o_2.JPG src="http://www.blogjava.net/images/blogjava_net/hexuzhong/2034/o_2.JPG" width=719 border=0><BR>其中<SPAN class=style1><FONT color=#0000ff>Struts config path</FONT></SPAN>就是我们的struts配置文件，<SPAN class=style1><FONT color=#0000ff>URL pattern</FONT></SPAN>我们选择*.do，<SPAN class=style1><FONT color=#0000ff>Default application resource</FONT></SPAN>为我们默认的资源文件地方，你可以选择它的存储位置，我们在这里保持默认。点击Finish后，项目结构类似于图3：<BR><IMG height=644 alt=o_3.JPG src="http://www.blogjava.net/images/blogjava_net/hexuzhong/2034/o_3.JPG" width=297 border=0><BR>
<P>现在就来开始我们的例子吧。首先修改/WEB-INF/web.xml文件,为其添加标签库(在使用中发现，不添加也能成功。但为了保持书上一致，还是添加安全些。hoho~~)将下面代码添加至 &lt;/webapp&gt; 上面：<BR><BR>&lt;taglib&gt;<BR>&lt;taglib-uri&gt;/tags/struts-html&lt;/taglib-uri&gt;<BR>&lt;taglib-location&gt;/WEB-INF/struts-html.tld&lt;/taglib-location&gt;<BR>&lt;/taglib&gt;</P>
<P>&lt;taglib&gt;<BR>&lt;taglib-uri&gt;/tags/struts-bean&lt;/taglib-uri&gt;<BR>&lt;taglib-location&gt;/WEB-INF/struts-bean.tld&lt;/taglib-location&gt;<BR>&lt;/taglib&gt;</P>
<P>&lt;taglib&gt;<BR>&lt;taglib-uri&gt;/tags/struts-logic&lt;/taglib-uri&gt;<BR>&lt;taglib-location&gt;/WEB-INF/struts-logic.tld&lt;/taglib-location&gt;<BR>&lt;/taglib&gt;<BR>完成后，打开<SPAN class=style1><FONT color=#0000ff>struts-config.xml</FONT></SPAN>文件，点击这个界面左下角的<SPAN class=style1><FONT color=#0000ff>Design</FONT></SPAN>进入可视化设计界面。有没有注意右边的<SPAN class=style1><FONT color=#0000ff>Palette</FONT></SPAN> :) 点击它，让我们来开始我们的jsp页面设计。我们先建立userLoginSuccess.jsp文件，为啥先建这一个呢？等下就知道了，在myeclipse中可以一次性把我们的Action,ActionForm,Jsp文件一次建好（将三个有关联的文件等下创建）。<BR>点击<SPAN class=style1><FONT color=#0000ff>Palette</FONT></SPAN>面版上的创建JSP文件图标,弹出创建JSP文件面板。图4：<BR><IMG height=404 alt=o_4.JPG src="http://www.blogjava.net/images/blogjava_net/hexuzhong/2034/o_4.JPG" width=525 border=0><BR>
<TABLE width="100%" border=0>
<TBODY>
<TR>
<TD>
<P>在<SPAN class=style1><FONT color=#0000ff>File Name</FONT></SPAN>里输入userLoginSuccess.jsp，<SPAN class=style1><FONT color=#0000ff>Template to use</FONT></SPAN>选择2] Standard JSP using Struts 1.1,点击Finish完成。<BR>完成后，struts-config.xml文件自动被更新，可视化界在上也出现了刚新建的JSP模块。新建的jsp文件也被打开了。<BR>覆盖所有的&lt;%@ taglib ...... 为我们开始在/WEB-INF/web.xml中定义的：</P>
<P>&lt;%@ taglib uri="/tags/struts-html" prefix="html"%&gt;<BR>&lt;%@ taglib uri="/tags/struts-bean" prefix="bean"%&gt;<BR>&lt;%@ taglib uri="/tags/struts-logic" prefix="logic"%&gt; <BR><BR>然后在&lt;body&gt;&lt;/body&gt;中添加:<BR>Hello &lt;bean:write name="userName" scope="request" /&gt; .<BR>这里将request中的属性userName输出在页面上，所以等下我们在UserLoginAction中，登录成功后要设置一个相关属性。</P></TD></TR>
<TR>
<TD>
<P>OK,下面来开始我们最后三个文件的设计吧。在<SPAN class=style1><FONT color=#0000ff>Struts-config.xml</FONT></SPAN>的<SPAN class=style1><FONT color=#0000ff>Design</FONT></SPAN>模式中，在画版的空白区域点右键，选择<SPAN class=style1><FONT color=#0000ff>New</FONT></SPAN> --&gt; New <SPAN class=style1><FONT color=#0000ff>Form, Action and JSP</FONT></SPAN> 弹出ActionForm的选项面板，我们按图上输入相关值，图5：<BR><IMG height=606 alt=o_5.JPG src="http://www.blogjava.net/images/blogjava_net/hexuzhong/2034/o_5.JPG" width=615 border=0></P></TD></TR></TBODY></TABLE></P>在<SPAN class=style1><FONT color=#0000ff>Optional Details</FONT></SPAN>的<SPAN class=style1><FONT color=#0000ff>Form Properties</FONT></SPAN>选项卡，点<SPAN class=style1><FONT color=#0000ff>add</FONT></SPAN>为这个ActionForm添加相关值，在这个登录示例中，将添加两个属性userName和password，图6：<BR><IMG height=212 alt=o_6.JPG src="http://www.blogjava.net/images/blogjava_net/hexuzhong/2034/o_6.JPG" width=394 border=0><BR>在添加password时，注意将<SPAN class=style1><FONT color=#0000ff>JSP input type</FONT></SPAN> 下拉框选择password. <BR>完成这步后，我们就将ActionForm设计完成。<BR>接下来选择 <SPAN class=style1><FONT color=#0000ff>Optional Details</FONT></SPAN>的<SPAN class=style1><FONT color=#0000ff>JSP</FONT></SPAN>选项卡,我们选中<SPAN class=style1><FONT color=#0000ff>Create JSP form?</FONT></SPAN> 这一步myeclipse将为我们创建一个简单的与用户交互的登录页面。保持内容和图7一样。图7：<BR><IMG height=153 alt=o_7.JPG src="http://www.blogjava.net/images/blogjava_net/hexuzhong/2034/o_7.JPG" width=579 border=0><BR>因为我们这只是简单的演示一个登录片段，所以不用验证用户信息是否合法，所以将 <SPAN class=style1><FONT color=#0000ff>Option Details</FONT></SPAN>的<SPAN class=style1><FONT color=#0000ff>method</FONT></SPAN>选项卡的新建方法去掉，如图8：<BR><IMG height=153 alt=o_8.JPG src="http://www.blogjava.net/images/blogjava_net/hexuzhong/2034/o_8.JPG" width=579 border=0><BR>点Next，进入Action选项面板.将<SPAN class=style1><FONT color=#0000ff>Option Details</FONT></SPAN>的<SPAN class=style1><FONT color=#0000ff>Form</FONT></SPAN>选项卡中<SPAN class=style1><FONT color=#0000ff>Validate Form</FONT></SPAN>取消选择，如图9：<BR><IMG height=606 alt=o_9.JPG src="http://www.blogjava.net/images/blogjava_net/hexuzhong/2034/o_9.JPG" width=615 border=0><BR>然后在<SPAN class=style1><FONT color=#0000ff>Forwards</FONT></SPAN>选项卡中点<SPAN class=style1><FONT color=#0000ff>add</FONT></SPAN>添加成功和失败返回的页面.如图10：<BR><IMG height=172 alt=o_10.JPG src="http://www.blogjava.net/images/blogjava_net/hexuzhong/2034/o_10.JPG" width=587 border=0><BR>点击Finish完成。在<SPAN class=style1><FONT color=#0000ff>Struts-config.xml</FONT></SPAN>的<SPAN class=style1><FONT color=#0000ff>Design</FONT></SPAN>中，可以看到图11所示：<BR><IMG height=491 alt=o_11.JPG src="http://www.blogjava.net/images/blogjava_net/hexuzhong/2034/o_11.JPG" width=670 border=0><BR>最后，简单的修改一下userLogin.jsp,将所有&lt;%@ taglib ...%&gt;替换为：<BR>&lt;%@ taglib uri="/tags/struts-html" prefix="html"%&gt;<BR>&lt;%@ taglib uri="/tags/struts-bean" prefix="bean"%&gt;<BR>修改UserLoginAction中的execute片段为如下所示，图12：<BR><IMG height=334 alt=o_12.JPG src="http://www.blogjava.net/images/blogjava_net/hexuzhong/2034/o_12.JPG" width=701 border=0><BR><BR>
<TABLE width="100%" border=0>
<TBODY>
<TR>
<TD>
<P>OK，完成。。。下面就部暑项目，测试。。。</P></TD></TR>
<TR>
<TD>像为项目添加Struts框架一样，在项目名上右击，选择<SPAN class=style1><FONT color=#0000ff>MyEclipse</FONT></SPAN> --&gt; <SPAN class=style1><FONT color=#0000ff>Add and Remove Project development</FONT></SPAN>.<BR>在弹出对话框上，单击<SPAN class=style1><FONT color=#0000ff>add</FONT></SPAN> ，在弹出的 <SPAN class=style1><FONT color=#0000ff>New Deployment</FONT></SPAN> 对话框上，<SPAN class=style1><FONT color=#0000ff>Server</FONT></SPAN>选Tomcat5，点击Finish完成部署，如图13:<BR><IMG height=436 alt=o_13.JPG src="http://www.blogjava.net/images/blogjava_net/hexuzhong/2034/o_13.JPG" width=525 border=0><BR>
<TABLE width="100%" border=0>
<TBODY>
<TR>
<TD>在用浏览器上打开：http://127.0.0.1:8080/LoginDemo/userLogin.jsp</TD></TR>
<TR>
<TD>输入密码123456,用户名EricHe。显示成功：<BR></TD></TR></TBODY></TABLE><IMG height=270 alt=o_14.JPG src="http://www.blogjava.net/images/blogjava_net/hexuzhong/2034/o_14.JPG" width=342 border=0><BR>
<TABLE width="100%" border=0>
<TBODY>
<TR>
<TD>如果输错，或不输入，则无反映又回到当前登录页面（因为我们没有设置错误信息）。<BR></TD></TR>
<TR>
<TD>55555~~~ 终于写完了。。。。。。。2005-07-06</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><img src ="http://www.blogjava.net/hxcfindjob/aggbug/18595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hxcfindjob/" target="_blank">上海滩拾贝</a> 2005-11-07 16:11 <a href="http://www.blogjava.net/hxcfindjob/articles/18595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>