0
0

More than 3 years have passed since last update.

【Java】初心者のServlet理解-②

Last updated at Posted at 2020-07-27

目次

  • はじめに
  • パラメーター(html)
  • サーブレット側
  • メソッド
    • setCharacterEncoding
    • getParameter
  • おわりに

はじめに

今回はServletを用いて、他htmlファイルからの値受け取りについてまとめます。
前回の「初心者のServlet理解①」のコードを引き継いでますので、コードをパッと見て「無理。」と思った方は一度戻って確認してみてください~

なお、本記事は
  ・「いまからJavaをやるよ~」
  ・「Javaやってるけどもっかい復習したいよ~」
人向けの雑な内容です。
筆者も鋭意学習中の身なので、内容の正確性は保証しませんが。。。
皆さんの学習の一助(自分の学習のメモ帳)になればと思います。

パラメーター(html)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<title>例題3</title>
</head>
<body>
    <div align="center">

        <!-- 宛先URL「sample」で、sample<form>タグ内の入力フォームの値を送信 -->
        <!-- methodに「get」ではなく「post」を指定して送信した場合、-->
        <!-- GET送信ではなく、POST送信が行われる-->
        <form action="sample" method="post" >

            <!-- テキストボックスに記述した文字列がパラメーター名「requestParam」の値に設定される-->
            <input type="text" name="requestParam" value="" >
            <input type="submit" name="button" value="送信" >
        </form>
    </div>
</body>
</html>

こんな感じのhtmlファイルのとき、
パラメーターとは、formタグ内のinputタグにあるnameとvalueの組み合わせのこと。
パラメーター名「requestParam」でパラメーター値「"(テキストボックスに入力した値)"」が取得できる。

サーブレット側

↑のhtmlファイル内のパラメータ[requestParam]の値を受け取るためのコードが↓。

package parameterPackage;

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 ParameterServlet extends HttpServlet {

    // GET送信を処理するにはdoGetメソッドが、
    // POST送信を処理するにはdoPostメソッドのオーバーライドが必要
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {

        // HTTPリクエスト内の文字列を、文字コード「UTF-8」で読み込む(エンコード)
        request.setCharacterEncoding("UTF-8");
        // HTTPリクエストから「requestParam」のパラメータ値を取得
        String value = request.getParameter("requestParam");

        response.setContentType("text/html; charset=UTF-8");

        PrintWriter out = response.getWriter();

        // valueの値を出力
        out.println("<body>" + value + "</body>");

    }
}

メソッド

●setCharacterEncoding()

request.setCharacterEncoding("UTF-8");

HTTPリクエスト内のパラメータ値を、引数に指定した文字コードでエンコードする(読み込む)メソッド。
パラメータの値を日本語として指定する場合、正しく読み取ることができないらしい。(ServletはデフォルトでパラメータをASCIIコードとしか解釈しないため)ので、このメソッドで値を変換する必要がある。

●getParameter()

String value = request.getParameter("requestParam");

GET/POSTで送信(リクエスト)されたパラメータ値を読み取るためのメソッド。
サーブレットのdoGet()/doPost()メソッドの第1引数「HttpServletRequest」が、Httpリクエストに対応しているため、オブジェクトrequestを作成して読み込んでいる。

おわりに

これ系の知識って、調べ始めると「わからない単語をわからない単語で説明される」現象が普通に起きててかなり困る。
「正確な知識も大事だけど、最初はイメージをつかむことが大事かな~」
とか初心者なりに考えているとことでした。

では。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0