<目次>
(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)するイメージになります。
「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); } }
<%@ 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>
<%@ 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>
(表)
ページ | 階層 |
要求ページ | form_auth/AfterLogin1.jsp |
ログイン画面 | Login1.jsp |
ログインエラー画面 | LoginError.jsp |
ログアウトサーブレット | LogoutServlet1.java |
ログアウト画面 | Logout1.jsp |
(1-3) 操作動画
最後に、上記の画面を実際に操作した動画をご紹介します。
前半:ある画面を要求 ⇒ ログイン失敗 ⇒ ログインエラー画面表示
後半:ある画面を要求 ⇒ ログイン成功 ⇒ ある画面が表示 ⇒ ログアウト押下 ⇒ ログアウト画面表示
(動画)