37日目①(2025.03.08) JSPとフォームの連携
おはようございます!!
今日は、この記事を書きながら昨日(3月8日)の振り返りから始めます!!
テーマは「JSPとフォームの連携」ということで、菅原先生、よろしくです!!
【JSPとフォームの連携】
webブラウザからのreqをサーバーに送信した時に、どのようにJSPで受け取って使うのか
①フォームの入力情報は「name属性の値=入力値」の形でリクエストに格納される。
この説明の時に、菅原先生が「サーブレットの時と同じです。何か分かりますか?」と質問をしてくださったのですが、残念ながら、僕は分かりませんでした、、、
まだまだです、、、

★フォームで入力された文字列の情報をどうやってJSPで受け取るのか
サーブレットの場合は、
doPost(HttpServletRequest req,HttpServletResponse res){
※throws~は省略
}
でしたが、JSPの場合は、
②暗黙オブジェクトのrequestがもつメソッドから入力値を取得
<% request.setCharacterEncoding(“utf-8”); %>
名前:<% = request.getParameter(“name”) % >
★暗黙オブジェクト
JSPサーブレット内で自動で宣言されるオブジェクト
(自動 → JSPファイルが初めて呼び出された時に自動でJSPサーブレットが生成される。その際にオブジェクトも作られる)
⇓
★オブジェクトの例
HttpServletRequest request
HttpServletResponse response
→ サーブレットのdoPost、doGetメソッドの引数
HttpSession session
→ セッション管理
JspWriter out
→ ブラウザに対して文字列を出力するためのprintlnメソッドを持っているoutオブジェクト
【コード例】
菅原先生のコードを真似してコーディング!!
そして実行!!

うむ!!
まあ、これは前にも出てきた例だし問題はないかな!!
ということで「送信」をクリック!!

はいエラー。
というか、自分で1からコーディングしているんやったらまだしも、なんで真似してエラーになるんや、、、
でも前回で学んだように、このエラーメッセージはどの行がおかしいのかを教えてくれているので原因が発見しやすいですね。
29行目か、、、
String[] langs = request.getParameter(“lang”);
最初はスペルミスかと思って画面を睨みつけてましたが、そうでもなさそう、、、
でもなんとか自分で原因を見つけたい!!
いやいや、分からん!!
菅原先生のコードをもう一回見てみよう、、、
はい解決。
どうやら
String[] langs = request.getParameter
ではなくて、
String[] langs = request.getParameterValues
だったようです。。。
String[] langs = request.getParameter
と
String[] langs = request.getParameterValues
って何が違うんや、、、
調べたところ、
String[] langs = request.getParameter
は単一の値を取得、
String[] langs = request.getParameterValues
はチェックボックスや複数選択可能なセレクトボックスにおいて使用。
配列の時はこれ。
というわけでした!!
ということで修正!!



よっしゃ!!
無事、エラーもなく表示された!!
この調子で
引き続き楽しんでいこう!!!