Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Java JSP/Servlet

JSP/Servletでログイン・ログアウト機能を作成する方法

投稿日:2021年5月4日 更新日:

<目次>

(1) JSP/Servletでログイン・ログアウト機能を作成する方法
 (1-1) ログイン
  (1-1-1) 概要・構文
  (1-1-2) サンプルプログラム
 (1-2) ログアウト
  (1-2-1) 概要・構文
  (1-2-2) サンプルプログラム
 (1-3) 操作動画

(1) JSP/Servletでログイン・ログアウト機能を作成する方法

(1-1) ログイン

(1-1-1) 概要・構文

ログイン機能は、次の図のようにある「要求ページ」をリクエストすると、自動で「ログイン画面」に遷移し、IDとパスワードを入力して認証成功すると「要求ページ」にリダイレクトし、認証失敗すると「ログインエラー画面」に遷移するという仕組みです。

(図111)

 
詳しい仕組みについては下記の別記事にてご紹介していますので、そちらを参照頂けたらと思います。
 
 

(1-1-2) サンプルプログラム

フォーム認証のログインは内部的には、次のような画面や設定ファイルを準備しています。

・ログイン画面(XXXX1.jsp)
・ログインエラー画面(XXXX2.jsp)
・ユーザ情報(tomcat-users.xml)
・フォーム認証設定(web.xml)

サンプルプログラムについても下記の別記事にてご紹介していますので、そちらを参照頂けたらと思います。
 
 

目次にもどる

(1-2) ログアウト

(1-2-1) 概要・構文

ログアウト機能は、ログアウト処理を行うサーブレット(Servlet)を用意して行います。Webサイトの各ページにて、ログアウトするサーブレット(Servlet)を呼び出す「ボタン」や「リンク」等を設置し、それを押す事でサーブレットが呼び出され、ログアウト画面に遷移(forward)するイメージになります。

(図121)

ログアウトをするためには、HttpServletRequestインターフェイスのlogout()メソッドを使用します。
 
(構文:ログアウト処理)

「request」は「HttpServletRequest」のインスタンスを表します。

request.logout();
 
あとは、この各業務画面にて、このサーブレットを呼び出す「ボタン」なり「リンク」なりを必要に応じて設置します。
 
(構文:ログアウトボタン例)
<input type="button" value="ログアウト" onclick="location.href='[ログアウトサーブレットのURL]'">

 

目次にもどる

(1-2-2) サンプルプログラム

・①サーブレット(Servlet)

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/LogoutServlet1")
public class LogoutServlet1 extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.logout();
        //# ログアウト画面への遷移
        RequestDispatcher dispatch = request.getRequestDispatcher("/Logout1.jsp");
        dispatch.forward(request, response);
    }

}
 
(図122)

・②ログアウトボタン設置画面
 
こちらはログアウトボタンを設置した適当な画面になります。
 
ポイントとなるのは「ログアウトサーブレット」を呼び出すボタンの部分で、このボタンを押す事で上記の①サーブレット(例:LogoutServlet1)が呼び出され、③ログアウト画面に遷移します。
 
(補足)
今回の例の「LogoutServlet1」は、このjspから見て1つ上の階層にあるため、相対パスで「../ LogoutServlet1」としています。
 
(サンプル)
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Form認証(MemoryRealm) ログイン成功</title>
</head>
<body>
####################################<br />
ログインに成功しました(Login Success.)<br />
####################################<br />
</body>
<br /><br />
<input type="button" value="ログアウト" onclick="location.href='../LogoutServlet1'">
</html>
(図123)

・③ログアウト画面
 
ログアウト画面のサンプルです(ログアウトサーブレットの遷移先画面です)。よく一般のWebサイト等で見る「ログアウトしました」的な画面です。
 
(サンプル)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html class="font_1">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="./css/TwitterTool.css">
<title>Form認証(MemoryRealm) ログアウト</title>
</head>
<body>
ログアウトしました。
<br />
<br />
<%--
<%
response.sendRedirect(request.getContextPath()+"/form_auth/AfterLogin1.jsp");
%>
--%>
<a href="./form_auth/AfterLogin1.jsp">→ログインページへ戻る</a>
</body>
</html>
 
(図124)
 
・階層構造
 
プログラムの理解をしやすくするため、プロジェクトの階層構造もご紹介します。今回の例では「form_auth」ディレクトリに対して「フォーム認証」を適用しており、AfterLogin1.jspを要求するとログイン画面に遷移して認証が始まります。
 
(図125)

(表)

ページ 階層
要求ページ form_auth/AfterLogin1.jsp
ログイン画面 Login1.jsp
ログインエラー画面 LoginError.jsp
ログアウトサーブレット LogoutServlet1.java
ログアウト画面 Logout1.jsp

目次にもどる

(1-3) 操作動画

最後に、上記の画面を実際に操作した動画をご紹介します。

前半:ある画面を要求 ⇒ ログイン失敗 ⇒ ログインエラー画面表示
後半:ある画面を要求 ⇒ ログイン成功 ⇒ ある画面が表示 ⇒ ログアウト押下 ⇒ ログアウト画面表示

(動画)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Java, JSP/Servlet

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

JavaでJSON配列から値を抽出する方法+郵便番号検索APIのサンプルプログラムも紹介

(0)目次&概説 (1) 記事の目的  (1-1) 目的  (1-2) 前提条件 (2) JSON配列から値抽出する方法  (2-1) JSON配列のデータの構造例  (2-2) JSON配列のデータ …

「サーブレットコンテナ」や「サーブレットのライフサイクル」とは?(サンプルプログラム付)

※本記事は「サーブレットとは?その役割やHelloWorldサンプルコードのご紹介」の続編です。 (0)目次&概説 (2) サーブレットコンテナの基本  (2-1) サーブレットコンテナとは?  (2 …

Javaでdouble型での誤差を対処する方法について+サンプルプログラムも紹介

(1) Javaでの誤差の対処法  (1-1) 対処が必要なケース  (1-2) 対処の方法   (1-2-1) BigDecimalクラスでの対処   (1-2-2) int型を優先的に使い対処   …

JSPやServletの画面をスマホ表示に対応させる方法~メディアクエリの導入~

<目次> (1) JSPやServletの画面をスマホ表示に対応させる方法 (2) 設定手順  (2-1) Step1:ビューポートの設定  (2-2) Step2:メディアクエリを記述したcssファ …

JSP ServletでForm認証時にcssが上手く適用されない事象の対処メモ

<目次> (1) JSP ServletでForm認証時にcssが上手く適用されない事象の対処メモ  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 対処  (1-4) 結果 …

  • English (United States)
  • 日本語
Top