質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Q&A

解決済

1回答

1741閲覧

サーブレットのソースコードの意味を知りたい

ypk

総合スコア80

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

0グッド

0クリップ

投稿2020/06/20 04:34

編集2020/06/20 04:47

始めまして。
現在、ログインシステムを作成しようとしています。

具体的には、

jspにてユーザーIDとパスワードを入力し、データベースに登録されているユーザー情報と一致していればログインの許可をし、IDやパスワードが未入力であったり、データベースに登録されていない情報でログインを試みた場合はエラーメッセージを表示させます。

ログインシステムをMVCモデルを用いて作成を試みており、Controller(Servlet)の個所を下記のサイトを参照して作成することを試みています。

https://www.ipentec.com/document/java-servlet-login-session

そこで質問なのですが、上記サイトのコード (LoginServlet.java)に出てくる

ServletConfig config = getServletConfig();

が何を意味しているのかが分かりません。
これはコード (Login.html)にて送信されたユーザーIDとパスワードを受け取っているものなのでしょうか。

また、このソースコードはどうしてこのような書かれ方をされているのでしょうか。

ご存じの方いらっしゃいましたら、教えていただけると嬉しいです。

どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

これはコード (Login.html)にて送信されたユーザーIDとパスワードを受け取っているものなのでしょうか。

そうではありません。まず、getServletConfigメソッドは、サーブレットが使える標準(?)のメソッドです。
ServletConfig.getServletConfig - J2EE8

で、以下の記事中のコードで抜粋したように使っている訳ですが、
コード (LoginServlet.java) - サーブレットを用いたログイン機構の実装 - Java プログラミング

Java

1...以下抜粋 2ServletConfig config = getServletConfig(); 3 // Servlet 初期化パラメータ情報 4 String un = config.getInitParameter("username"); 5 String pw = config.getInitParameter("password"); 6 7 response.setContentType("text/html; charset=shift-jis"); 8 PrintWriter out = response.getWriter(); 9 //if (request.getParameter("username") == un){ 10 if (un.equals(request.getParameter("username")) == true 11 && pw.equals(request.getParameter("password")) == true) { 12...

Login.htmlのフォームにて送信されたユーザー名とパスワードは、requestオブジェクトの方に入っています。記事のコードの処理としては、サーブレットの初期設定ファイルにあらかじめ保存されたusernamepassword値を取り出し、requestオブジェクトで表されるHTTPリクエストに含まれたusernamepasswordと突き合せ、正しいユーザ名とパスワードでログイン操作をしているかを判定しています。

JavaサーブレットのAPI(クラスやメソッド)については、少しでも公式に近いリファレンスを参照するように努めましょう。

投稿2020/06/20 04:54

dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ypk

2020/06/20 05:16

ありがとうございます。 大変勉強になりました。 最後に、もう少し詳しく教えていただきたい箇所がございます。もしよろしければ、教えていただけると嬉しいです。どうぞよろしくお願いいたします。 サーブレットの初期設定ファイルにあらかじめ保存されたusernameとpassword値を取り出し、requestオブジェクトで表されるHTTPリクエストに含まれたusernameとpasswordと突き合せ、正しいユーザ名とパスワードでログイン操作をしているかを判定しています。 これはServletConfig config = getServletConfig();の記述によって、DBからログイン情報を取得し、リクエストにて受け取ったIDとPWの情報を突き合わせているという認識でよろしいでしょうか。 どうぞよろしくお願いいたします。
dodox86

2020/06/20 06:34

> これはServletConfig config = getServletConfig();の記述によって、DBからログイン情報を取得し、 ここで質問者であるypkさんの言う「DB」が、MySQLやPostgreSQL、OracleのようなRDBMSを指しているのだとすると、「いいえ」です。広い意味でのDBならば、「はい」です。DB(データベース)とは、必ずしもシステムを指しません。単なるファイルでもデータを管理しているモノであれば、データベースと言うこともあります。 参考にされたサイトのページの下の方、コード(web.xml)と言うXMLファイルを見ると分かりますが、以下のような要素があります。 <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>webApplication28.LoginServlet</servlet-class> <init-param> <param-name>username</param-name> <param-value>taro</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>taro</param-value> </init-param> </servlet> これらの要素の値をAPIであるgetServletConfig()を介して、取得している訳です。XMLでデータを管理しているので、これもDBと言って間違えではありません。ログインシステムのサンプルであるから、このように簡単で分かりやすい例にしているのでしょう。もし、ypkさんが複数のユーザーを管理したいのであれば、この部分を拡張するなり、MySQLなどのRDBMSを使ってログインできるようにコードを膨らませていく必要があります。尚、web.xmlはサーブレットを管理する上で重要な設定ファイルです。別途勉強してみてください。
ypk

2020/06/20 06:42

大変勉強になりました。 ありがとうございます。勉強してみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問