はしくれエンジニアもどきのメモ

情報・Web系技術の勉強メモ・備忘録です。

JSP(formデータ)とJava Servletプログラムの連携

JSP(formデータ)とJava Servletプログラムの連携

JSP(formデータ)とJava Servletプログラムの連携する方法をメモ。

環境

  • Windows7

    • jdk 8.0.6001

    • NetBeans 8.02

    • Apache Tomcat 8.0

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のコンソールに出力するサンプル

「はしくれエンジニア」と「もどきのメモ」と入力
実行結果(入力)
結果
実行結果(コンソール)
  1. 宛先

    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は、以下のようになる。

  2. 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()) の 引数requestgetParameter('JSPで指定したinputのname')メソッドから、入力された値を取得できる。

    
    // JSPの画面から値を取得
    text1 = request.getParameter("text1");
    text2 = request.getParameter("text2");
    

サンプル:Formタグから取得したデータをHTMLに表示

このサンプルはエスケープ処理をしていないので、 クロスサイトスクリプティングの危険がある。

Formタグから取得したデータをHTMLに表示するサンプル。(エスケープ処理なし)

「はしくれエンジニアもどきのメモ」と「cartman」と入力
実行結果(入力)
HTMLページに出力
実行結果(送信後)

まとめ

  • 画面(HTML)とサーバ(Java)の橋渡し役であり、 実態はjavaファイル。

  • JSPにはHTMLタグとは異なる独自タグがあり、 Javaの処理と組み合わせるために必要となる。

  • JSP内にJavaプログラムを組み合わせて動的に画面を作成できる。