【こんな記事を探していた!】サンプル付き!Javaでログイン機能を実装【Spring boot編】

この記事は約5分で読めます。

スポンサーリンク

この記事では、プログラミング入門者・初心者の方へ向けて、Webアプリケーションシステムでの「非常に簡単なログイン機能の実装方法」をご紹介します。使用するフレームワークはSpring boot です。

もしJSP & Servletバージョンが知りたい方は、以下の記事をご覧ください。

[記事] サンプル付き!Javaでログイン機能を実装【JSP & Servlet編】

ではまずDBに以下のテーブルを作成し、初期データを入れておいて下さい。

次に、「LoginInfo」という、上記のテーブルのデータクラスを作成します。

lombok.Dataを使用しているため非常に簡易なクラスになっています。lombok.Dataを使用しない場合はGetterとSetterを記述して下さい。
なお、「@NotEmpty」アノテーションで未入力チェックを実装しています。

次に、このデータクラスのデータアクセスクラスを作成します。「LoginInfoRepository」というインターフェースを作成し、以下のように記述します。

これだけで大丈夫です。単純な全件取得、IDが一致するデータを取得、DB更新処理などは、SQL文を記載せずとも既に機能が備わっています。

「findByIdAndPassword」とありますが、これはJPAが以下のSQL文に、自動的に解釈してくれます。

スポンサーリンク

では次に、コントローラクラスを作成します。「AppController」を作成し、以下のように記述します。

コントローラにロジックを書いていますが、本来であればサービスクラスを作成し、そちらに記載するべきです。ですが今回は非常に簡単なサンプルのため、良しとしましょう。

ログイン画面の初期表示と、ログイン処理を記述しました。ログイン処理は、渡されたデータを元に先ほど作成したリポジトリのデータアクセス処理を使用し、アクティブなユーザーであるか判定します。結果に応じ、失敗であればエラーメッセージを返却し、成功であればログイン後の画面に遷移します。

では次に、ビューを作成していきます。「Login.html」を作成し、以下のように記述します。

${#fields.hasErrors(‘id’)}で、エンティティがエラーを保持しているか判定します。保持している場合、エラーメッセージを入力欄の下に表示します。

次に、ログイン結果を確認するだけの画面を作成します。「LoginResult.html」を作成し、以下のように記述します。

スポンサーリンク

では、実際に動かしてみましょう。アプリケーションを起動し、「 http://localhost:8080/login」にアクセスして下さい。以下のような画面が表示されればOKです。

試しに、何も入力せずにログインボタンをクリックしてみましょう。以下のようにメッセージが表示されればOKです。

片方だけ未入力でも、未入力である片方にだけメッセージが表示されます。エラー発生時の初期値は、IDのみ入力値を保持するようにしていますので、パスワードは都度リセットされます。

さて、先ほどDBに入れた初期データで、ログイン出来るIDとパスワードは
ID:ayano
パスワード:1123

でした。(自由に変えて頂いて構いません!)それ以外のIDとパスワードを入力してログインボタンをクリックしましょう。以下のようにメッセージが表示されます。

では、正常にログインしてみましょう。IDとパスワードを、正確に入力してログインボタンをクリックしてみて下さい。以下の画面が表示されればOKです!

非常に簡単ではありますが、以上がログイン機能でした。

※Springには、多くの機能が備わっています。その中で、認証認可に使用される「Spring Security」というものがあります。もっとSpringらしい機能が知りたい!という方は、Spring Securityを勉強して頂くと良いかもしれません!

まだMVCCRUDの記事を読んでいない!という方は、めちゃくちゃ参考になると思いますので、以下の記事を是非読んでみて下さい!

[記事] サンプル付き!JavaでのWebシステムの作り方【Spring boot編】

MVCとCRUDは基礎として非常に重要な知識です!
とても参考になりますので、上記の記事は是非おすすめです!

スポンサーリンク

いかがでしたでしょうか?
このブログでは、他にも多くの参考になるような「システム開発に関するリアルな情報」や、「人間関係論の非常に勉強になる記事」を発信しています!
少しでも興味のある方は、是非覗きに来て下さい!
[ブログ]システム開発現場のリアルな情報
[Twitter] @ayano_java
今回は以上です!

スポンサーリンク

コメント

タイトルとURLをコピーしました