目次
- はじめに
- パラメーター(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を作成して読み込んでいる。
おわりに
これ系の知識って、調べ始めると「わからない単語をわからない単語で説明される」現象が普通に起きててかなり困る。
「正確な知識も大事だけど、最初はイメージをつかむことが大事かな~」
とか初心者なりに考えているとことでした。
では。