サーブレットを追加

フォルダ構成

MyWebの現在のフォルダ構成を、下の図に示します
スタンドアロンアプリと比べて、何か足りない気がしませんか?
実は、Javaのソースコードを格納する MyWeb\src\main\java フォルダが無いのです。

どうやら、Maven2の war プロジェクト雛形は、jsp 用のフォルダ構成のみのようです。
フォルダ名 用途 雛形が作ったファイル
src\main\resources target\MyWeb\WEB-INF\classesにコピーされます
将来的には、message.properitesなどを格納します。
なし。
src\main\webapp target\MyWebにコピーされます
jspやcssファイルを格納します。
index.jsp
src\main\webapp\WEB-INF Webアプリの設定用フォルダです web.xml

ソースディレクトリを作成

まずは、Javaソースを格納するフォルダを作ります。
Eclipse上から、MyWebプロジェクトを右クリックし、「New」→「Source Folder」を
選択します。

子画面で、ソースフォルダ名を「src/main/java」と入力して「Finish」ボタンを押します。

pom.xmlを修正

これで、MyWeb\src\main\java フォルダが追加できました。
しかし、Maven2は、まだこのフォルダの存在を知らないので、教えてやる必要があります。
pom.xmlを開いて、下の図のように、<sourceDirectory>に src/main/java と追加してください。

サーブレットソース作成

簡単なサーブレットを追加します。
機能は、index.jspからpostで送信された文字列(sendMsg)を、そのまま request.setAttribute("echoMsg", 文字列 )と
Echoして、index.jspに戻るというEchoです。

パッケージフォルダを作成

まず、ソースを格納するパッケージを作ります。 下の図のように、「src/main/java」を右クリックして、「New」→「Package」を選びます。

今回は、下の図のように、package名を「com.jxpath.MyWeb」として、「Finish」ボタンを押します。

ソース作成

Eclipse上に、com.jxpath.MyWebというパッケージが出現しますので、そこを右クリックして、
「New」→「Class」と選択します。

子画面で、Nameに「EchoServlet」、Superclassに「javax.servlet.http.HttpServlet」と
入力して、「Finish」ボタンを押します。

次に、EchoServlet.javaにメソッド doPost を追加します。
Servlet で doPost と言って、ピンと来ない方は、Servletについて、少し勉強をお願いします。
ソースの説明は割愛しますが、本ページの末尾でダウンロードできるようにしておきます。

web.xmlの修正

まだまだ、作業があります。
次に、web.xmlを修正して、http://localhost:8080/MyWeb/echoMsg.do というURLに対して
上で作成した EchoServlet.java が呼ばれるように、設定を追加します。
サーブレット設定の追加ですが、今時は struts などを使うので、この記述をする人も少ないでしょうね。

index.jspの修正

次に、index.jspにformを追加して、/MyWeb/echoMsg.do にpost送信を行うようにします。
また、request.getAttribute( "echoMsg" ) を画面に表示します。

ソース一式

MyWebプロジェクト一式のソースを置いておきます。ダウンロードしてご覧ください。 MyWeb.zip

動かしてみよう

お疲れ様でした。やっと一式整いました。
あとは、Eclipse上から、「mvn package」を実行して、Tomcatを起動させてください。

うまく起動すれば、ブラウザで http://localhost:8080/MyWeb/ を表示すると、下の図のようになり
入力欄に文字を入れて 「send」ボタンを押すと、「- echoMsg - null」の箇所が書き換わるはずです。