サーブレットでフォームの入力データを使う方法【JavaWeb入門講座6】サーブレット-フォーム連携-

Поделиться
HTML-код
  • Опубликовано: 1 дек 2024

Комментарии •

  • @のりのりお-b4q
    @のりのりお-b4q 2 года назад +8

    現在社内研修でJavaをやってます。
    復習にいつも見させていただいています!

    • @SekaChan
      @SekaChan  2 года назад +1

      のりのりおさん、コメントありがとうございます!
      最近はJavaの社内研修や新人研修を受けている人からのコメントが多いですね。
      動画なら好きなタイミング&場所で見られるので、ぜひ予習や復習に活用してください✨
      みんなで一緒に研修を頑張り抜きましょう!!

  • @cot4rd
    @cot4rd Год назад +5

    疑問なのですが、 11:46 このあたりから入力フォームに何も入っていない状態で登録が行われましたが、
    ラジオボタンにチェックが入っていない場合nullが格納されているのに対して、nameやpassは入力されていない状態でもプログラムがまだ終了していないということは、こちらはnullではなく空の文字列を参照するアドレス値を格納しているからプログラムが終了していないという理解であっているのでしょうか?

    • @SekaChan
      @SekaChan  Год назад +3

      コメントありがとうございました。
      その通りですね。ラジオボタンやチェックボックスが未入力の場合は null が送られ、テキストボックスでは空の文字列が送られます。

  • @半澤博
    @半澤博 Год назад +4

    いつもありがとうございます。
    サーブレット理解出来ました。これを Eclipse(pleiades2022-12)で行う場合は環境変数の定義はどこですればよろしいでしょいうか。お忙しいところ申し訳ございません。

    • @SekaChan
      @SekaChan  Год назад +2

      半澤博さん、コメントありがとうございました!
      もうサーブレットまで進んでるんですね。着実にスキルアップできているようで良かったです!
      環境変数(CLASSPATHなど)はWindowsに対して設定するものなので、Eclipseを使うかどうかによらずに動画と同じように設定してもらうことができますよ👍

  • @tora6977
    @tora6977 2 года назад +7

    いつも分かりやすい動画をありがとうございます!java入門からこれまで全ての動画を見させて頂き、とても素晴らしい教材を無料で公開して下さっている事にとても感謝しています!
    質問なのですが、ServletファイルにてResponseを受けた後(doPostメソッド内)でres.setCharacterEncoding("UTF-8");を指定しているのは、formからのデータ取得の文字コードを指定している事は理解できたのですが、僕の環境ではなぜか日本語を入力してその値を受け取った時に文字化けが発生してしまします。
    res.setContentType("text/html;charset=UTF-8");も同様に記述しているのですが何か他に原因がありますでしょうか?
    動画内の環境と違う所はTomcatをインストールして実行しようとした際にjavaxの関連するパッケージ?がうまく読み込まれずコンパイルが通らなかった為、EclipseをインストールしてプロジェクトをEclipseで作成しています。(Tomcat環境構築時、私のデバイスがApple silicon搭載Macの為、起動はシェルを使いました)
    動的Webコンテンツで作成した後にHTMLファイルとServletファイルを配置しTomcat9サーバーで起動後に動作を確認しました。その結果、動作は動画の通りに作動しているのを確認できましたが、日本語入力値は文字化けが発生してしまっている現状です。
    Eclipse環境だと他に何か設定等が必要なのでしょうか?(Filterファイルを作成するなど)
    よろしくお願いします。

    • @SekaChan
      @SekaChan  2 года назад +6

      TORAチャンネルさん、コメントありがとうございます。
      Javaの入門講座からWeb講座まで見てもらえているようで、とても嬉しいです✨
      質問について、一番怪しいのは
      誤:res.setCharacterEncoding("UTF-8");
      正:req.setCharacterEncoding("UTF-8");
      ですね。
      書いてくれていた通り、setCharacterEncoding()メソッドではformデータの文字コードを指定します。
      formデータはリクエストに含まれるため、reqオブジェクトに対して呼び出すんですね👍
      あと念のためですが、フォームデータを受け取るときには、
      (1)req.setCharacterEncoding("utf-8");
      (2)req.getParameter(~);
      レスポンスを出力するときには、
      (1)res.setContentType("text/html;charset=utf-8");
      (2)PrintWriter out = res.getWriter();
      (3)out.println(~);
      という順番を守ることにも気をつけましょう!
      (1)と(2)が逆になると、文字化けする可能性があります。

    • @tora6977
      @tora6977 2 года назад +3

      @@SekaChan
      早速のご返信ありがとうございます!すみません!完全に私の見落としでした。
      とても分かりやすい解説をして頂きありがとうございます!
      無事に文字化けせず動作しました!
      ありがとうございます!

  • @まるむし商店-k4u
    @まるむし商店-k4u 2 года назад +3

    いつも丁寧な解説ありがとうございます。わかりやすくて助かります。
    画面を見ながらソースコードを打ってますが、右側に見えないところがあり、コードをダウンロードしようと思いましたが、解説内容と一致してないように思います。
    お手数ですがご確認をお願いできませんでしょうか?

    • @SekaChan
      @SekaChan  2 года назад +2

      まるむし商店さん、コメントありがとうございました。
      ソースコードの件、ごめんなさい!
      たしかに解説内容と一致していないコードのURLになってしまっていました🙏
      こちらが正しいダウンロードURLなので、お手数ですがもう一度ダウンロードをお願いします→bit.ly/3QUrkxe
      ご指摘ありがとうございました!(概要欄は修正済です)

    • @まるむし商店-k4u
      @まるむし商店-k4u 2 года назад +2

      早速ご対応いただきまして、どうもありがとうございました。

  • @gg-vf3ti
    @gg-vf3ti Год назад +2

    初めまして。
    サンプルコードを使い、コンパイルは通りサーブレットのクラスファイルは生成できました。フォームに情報を入力し確認画面もサーブレットから出力できましたが、コード上に赤い波線がずっと残っている状態です。特にjavax.servletやHttpservletなどにエラーの表示がついています。おそらくクラスパスの設定でサーブレットのAPIが設定されていないことが原因かなと思います。macbookを使っているため動画上では環境変数の設定が分からず、コンパイルもできない状態でしたが色々サイトを調べjavac -classpass "servlet-api.jarのパス名" Registeservlet.javaと入力するとコンパイルでき、出力もできるようになったため、このままでもいいのかな?とも思っていますが、、、
    赤い波線(エラー?)は無視してこの先の動画もこのやり方で続けていいのでしょうか?また自分のやり方があっているのかもわかりません、、、
    4月から独学でjavaを勉強し始めたため質問する人がおらず、困っています。
    お手隙の際にご回答いただけると幸いです。

    • @SekaChan
      @SekaChan  Год назад +2

      ggさん、初めまして。コメントありがとうございました!
      僕だったらプログラムが動いたとしてもエラーは取り除きたくなっちゃいますね。
      (原因を特定できてそれに納得できれば良しとするときもありますが‥)
      僕の手元にmac環境がないのとどんな開発環境を使っているのかが分からないので、すみませんが赤い破線が出ている原因は分からないです🙏
      mac環境でJavaの解説動画を出している人もいると思うので、その方に聞いてみてもらうと解決できるかもしれません。

    • @gg-vf3ti
      @gg-vf3ti Год назад +2

      @@SekaChan
      ご返信ありがとうございます!
      やはりmacだと判断できないですよね、、
      この件は他の方にも聞いてみたいと思います。
      引き続き先生の動画で勉強していこうと思うので今後もよろしくお願いします。

  • @うさ-b3b
    @うさ-b3b 2 года назад +5

    いつも説明わかりやすくてありがとうございます。
    今回もなんとか動画通りに作成できました。
    今回の『RegisterServlet.java』で記述されていた【req.setCharacterEncoding("utf-8");】は
    前回の「JavaWeb入門講座5」の『FirstServlet.java』では記述されていません。
    違いを教えていただけませんか?
    『RegisterServlet.java』を自分で作成したとき、記述するの忘れてしまって、最初表示画面がおかしくなってしまったので。
    よろしくお願いします。

    • @SekaChan
      @SekaChan  2 года назад +1

      うさ〇さん、コメントありがとうございます!
      たしかに、前回は【req.setCharacterEncoding("utf-8");】を記述していませんね。
      違いはサーブレットで【フォームの入力情報を使うか】です。
      【req.setCharacterEncoding("utf-8");】はフォームから送られてくるデータを読み取るときの文字コードを指定する処理ですね。
      (動画の 3:00 以降を振り返ってみてください🍀)

    • @うさ-b3b
      @うさ-b3b 2 года назад +2

      ご丁寧な回答ありがとうございます。
      【JavaWeb入門講座5】での先生の『赤文字だけかえればいい』という言葉のインパクトが強くて、
      今回の授業での肝心なところの言葉を聞き落としてしまいました。申し訳ありません。
      再度、動画を見直して理解しました。
      ありがとうございました。

    • @SekaChan
      @SekaChan  2 года назад +3

      そうだったんですね。ミスリードさせてしまってすみませんでした。
      動画を見直して理解できたようで良かったです😄

  • @zakiyama0108
    @zakiyama0108 2 года назад +4

    いつもわかりやすい動画ありがとうございます。
    送信ボタンを押したタイミングでゲットやポストが呼ばれると言うのは決まり事でしょうか?

    • @zakiyama0108
      @zakiyama0108 2 года назад +2

      上記がイエスであるのであれば、
      フォームタグを使っているのにもかかわらず、
      送信ボタンを使用しないことができない理解で合っているでしょうか?

    • @SekaChan
      @SekaChan  2 года назад +2

      R Yさん、コメントありがとうございました。
      その認識で正しいですよ👍
      タグ内のコンテンツに入力された情報は、送信ボタンを押されたタイミングでタグのmethod属性に指定した方法(get/post)でaction属性に指定したアドレスに送られます。
      送信先にサーブレットが指定された場合、getで送られたらdoGet()メソッドが、postで送られたらdoPost()メソッドが呼び出されますね。