JSP(formデータ)とJava Servletプログラムの連携
JSP(formデータ)とJava Servletプログラムの連携
JSP(formデータ)とJava Servletプログラムの連携する方法をメモ。
環境
JSPとServletの関係
JSPからServletへデータを送るには、 (PHPのように)Formタグが使える。
Formとは?
フォーム(Form)、入力フォームは、Webプログラミングの技術の1つ。クライアントが情報を入力・選択し、Webサーバ等のフォームを処理するエージェントへ提出するための機構である。 他のプログラムとの組み合わせが容易なことや、双方向性(インタラクティブ)が求められる今日のインターネットのニーズを十分に満たしていたため、Webプログラミングの技術の中でも非常に重要な存在となった。 CGIプログラムやPHPプログラムやJava Servletにデータを渡して起動することに用いられることが多い。
引用:フォーム (ウェブ) - Wikipedia
データの送信を行うためにformタグを使用
-
method
: 送信時に使用するHTTPメソッドの種類を指定 postやgetが指定できる。デフォだとgetになる。 -
action
: そのデータの送信先を指定。 -
<input type="submit">
: submit ボタンを押すことで、サーバ(今回はJava Servlet)に情報が送信される。
<form method="post" action="./Send">
<input type="text" name="text1">
<input type="text" name="text2">
<input type="submit" value="POSTで送信">
</form>
Fromタグでデータを渡す
Formタグでデータを渡して、Java Servletのコンソールに出力するサンプル
コード:
Formタグでデータを渡して、Java Servletのコンソールに出力するサンプル
-
宛先
JSP:
action
で指定した送信先に、 同じ場所にある「FormServlet」にデータinput 要素の データを送る。formの
action
は、絶対パスと相対パスの両方を指定できるが、 相対パスを指定したほうがURL変更の影響を受けにくい。<form action="./FormServlet"> <p>ここに値を入れてください:<input type="text" name="text1"></p> <p>ここに値を入れてください:<input type="text" name="text2"></p> <input type="submit" value="GETで送信"> </form>
Servlet: Tomcat がそのURL「FormServlet」があるか確認。
@WebServlet("/FormServlet") public class FormServlet extends HttpServlet { ... }
このとき、JSPとSevletのURLは、以下のようになる。
-
http://localhost:8080/プロジェクト名/inputForm.jsp
-
http://localhost:8080/プロジェクト名/FormServlet
-
-
formデータの取得
JSP: (
name
を指定した)input要素で入力した値がServletに送られる。<form action="./FormServlet"> <p>ここに値を入れてください:<input type="text" name="text1"></p> <p>ここに値を入れてください:<input type="text" name="text2"></p> <input type="submit" value="GETで送信"> </form>
Servlet:
オーバーライドしたdoGet()(またはdoPost())
の 引数request
のgetParameter('JSPで指定したinputのname')
メソッドから、入力された値を取得できる。// JSPの画面から値を取得 text1 = request.getParameter("text1"); text2 = request.getParameter("text2");
サンプル:Formタグから取得したデータをHTMLに表示
このサンプルはエスケープ処理をしていないので、 クロスサイトスクリプティングの危険がある。
Formタグから取得したデータをHTMLに表示するサンプル。(エスケープ処理なし)
まとめ
参考リンク