「JSPセッション」ログイン/ログアウトの処理


会話とは?

  • は、ユーザからの情報をサーバ側の概念
  • に記憶する.
    各Webブラウザには、Webコンテナにセッションが格納されます.
  • Webサーバサービスのユーザの単位を区別することができる.
  • セッションを使用すると、ユーザーは複数のサイト間で仮想接続を行うことができ、情報を失うことはありません.
  • の設定を必要とせずに、セッションが自動的に作成されます.
  • セッション処理によるログイン

  • Top.jsp:認証とログインの有無を確認できます.
  • Center.jsp:
  • 中画面
  • Main.jsp:
  • メイン画面
  • LoginForm:ログインフォーム
  • SessionLogin.jsp:
  • ページログインボタンをクリックしてログイン処理

    実装目標



    Top.jsp

  • ユーザーのIDとログイン/ログアウトを表示できます.
  • ログインボタン/ログアウトボタンを生成します.
  • idの値がある場合は、ログアウトボタンが表示されます.
  • center値が空の場合、まだログインしていません.center値が空の場合、ログインボタンが表示されます.
  • <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <%
    	String id = (String)session.getAttribute("id");
    	String center = request.getParameter("center");
    %>
    <%
    	if(id!=null){
    		%>
    		<%=id %> 님
    		<button onclick="location.href='Main.jsp?logout=1'">로그아웃</button>
    		<%
    	}else if(center==null){
    		//center에 값이 존재하는 경우에만 로그인버튼을 띄움.
    		//처리를 안해주고 로그인 버튼을 누를시 LoginForm.jsp로 넘어가면 Top.jsp에 있는 로그인 버튼이 그대로 나옴.
    		%>
    		<button onclick="location.href='Main.jsp?center=LoginForm.jsp'">로그인</button>
    		<% 
    	}	
    	else{
    		%>
    	<%} 
    	%>
    </body>
    </html>
  • 結果

  • Center.jsp

  • ログインの有無に応じて変更されたページ.
  • <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    </head>
    <body>
    Center
    </body>
    </html>
  • 結果
  • Main.jsp

  • メイン画面.
    1.Top.jsp, Center.jspを含む.
    2.ログアウト処理を行います.
  • <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    </head>
    <body>
    <table border="1">
    <%
    	response.setCharacterEncoding("UTF-8");
    	String center = request.getParameter("center");
    	String logout = request.getParameter("logout");
    	if(logout!=null){
    		//id값에 null 값을 넣음
    		session.setAttribute("id", null);
    		//세션시간 0. 로그아웃 처리
    		session.setMaxInactiveInterval(0);
    	}
    	if(center==null){
    		center = "Center.jsp";
    	}
    %>
    <!-- top -->
    	<tr height="50">
    		<td width="300" align="right">
    		<jsp:include page="Top.jsp"/>
    	</td>
    </tr>
    <!-- center -->
    <tr height="300">
    		<td width="300" align="center">
    		<jsp:include page="<%=center %>"/>
    	</td>
    </tr>
    </table>
    </body>
    </html>
  • 結果
  • LoginForm.jsp

  • 登録フォーム
  • 登録フォームを作成します.
  • ログインボタンをクリックすると、SessionLoginが使用されます.jspに処理します.
  • <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    </head>
    <body>
    <form method="post" action="SessionLogin.jsp">
    <table>
    <tr height="50">
    	<td height="50">로그인</td>
    	<td height="50"><input type="text" name="id"></td>
    </tr>
    <tr height="50">
    	<td height="50">패스워드</td>
    	<td height="50"><input type="password" name="pass"></td>
    </tr>
    <tr height="50">
    	<td height="50"><input type="submit" value="로그인"></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
  • 結果
  • SessionLogin.jsp

  • セッション登録処理
  • id、passをStringタイプ変数
  • に割り当てる
  • id、passをsession
  • に割り当てる
  • セッション保存時間を
  • に設定
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String id = request.getParameter("id");
    	String pass = request.getParameter("pass");
    
    	session.setAttribute("id", id);
    	session.setAttribute("pass", pass);
    	//세션 유지시간 설정
    	session.setMaxInactiveInterval(60); //1분간 아이디 유지
    	response.sendRedirect("Main.jsp");
    %>
    </body>
    </html>

    完全なコード結果

  • ログインボタンをクリックします.
  • ログインフォーム
  • を表示
  • ログイン/パスワードを挿入し、ログインボタンをクリックします.
  • は登録がいいです.
  • をクリックしてログアウトし、ログインボタンを再アクティブにします.
  • ユーザが設定した時間(ここでは1分)でログアウト処理を行うことができる.
  • 参照
  • https://sesok808.tistory.com/327