フォームデータを受け取る
- 2010-11-29 Mon 14:10:47
- データのやり取り
Webサイトでよく、テキストボックスがあってそこに何か文字を入力して「送信」ボタンを押すとデータが送信されるというフォームがありますが、それをサーブレット・JSPを使って作ってみようというのが今回の課題です。
まずはフォルダとファイルを作成しましょう。
JSPファイルを入れるために、「siroto」プロジェクトの下に「form_entry」というフォルダを作成してください。そしてその中に、「Form1.jsp」というファイルを作成してください。
次にJavaファイルです。「siroto」プロジェクトの「WEB-INF/src」フォルダの中に「form_entry」というパッケージを作成して、その中に「Form1.java」というクラス(ファイル)を作成してください。
JSPファイルとJavaファイルの名前が同じですが、これは同じ場所で勉強したことが後ですぐに分かるようにという考えからです。同じでなければならないというものではありません。
web.xmlのファイルはすでに出来上がっているはずです。
web.xmlを設定する
まず、サーブレット(Javaファイル)へのアクセスURLを簡単にするために、web.xmlの設定をします。
といっても簡単で、「<web-app> ~ </web-app>」の間に以下のソースを書き加えるだけです。
<servlet>
<servlet-name>Form1</servlet-name>
<servlet-class>form_entry.Form1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Form1</servlet-name>
<url-pattern>/Form1</url-pattern>
</servlet-mapping>
JSPファイルを作る
フォームタグを使ったJSPファイルは、HTMLの知識があれば問題ないかと思います。
<%@page contentType="text/html; charset=Windows-31J" %>
<html>
<body>
<h3>フォームデータを送信してみましょう。</h3>
<form action="../Form1">
<input type="text" name="message">
<input type="submit" value="送信">
</form>
</body>
</html>
入力フォームを作るには、フォームタグ<form> ~ </form>を使います。
そして、formタグ内のaction属性には、データを処理するプログラムのURIを指定します。今回の場合、Form1.jspからForm1.javaへの相対パスを指定しています。
siroto
├ Form1.java
└ form_entry
└ Form1.jsp
Form1.jspからForm1.javaへの相対パスがどういうルートをたどるかというと、まず「form_entry」フォルダの上の「siroto」フォルダへ行き、そこからForm1.javaへ降りるということになります。「siroto」フォルダからForm1.javaの間にあるフォルダについては、web.xmlの設定で省略しています。
<input type="text" name="message">
の部分がテキストフィールドです。ここに入力された内容はmessageという名前になります。
Javaファイルを作る
さて、フォームで送信されたデータを受け取るサーブレットの作成です。
package form_entry;
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;
public class Form1 extends HttpServlet{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
String msg=request.getParameter("message");
response.setContentType("text/plain;charset=Windows-31J");
PrintWriter out=response.getWriter();
out.println("message="+msg);
}
}
ブラウザからHelloWorldで記述したコードと大きく異なるのは、getParameter()というメソッドを利用していることです。見比べてください。
String msg=request.getParameter("message");
out.println("message="+msg);
上の1行目は、requestというオブジェクトに対して、getParameter()メソッドをmessegeを引数として実行して、String型の変数msgに代入しています(参考:メソッドの定義・呼び出し)。2行目は先に定義した変数msgの出力です。
ブラウザからサーブレットに渡される値を、入力パラメータと呼びます。getParameter()メソッドは、引数に入力パラメータの名前を指定して値を受け取るメソッドです。
スポンサーサイト
タグ :
Comments: