멋쟁이v의 개발일지

[JSP] session 응용(로그인, 권한 관리) 본문

0년차/JAVA

[JSP] session 응용(로그인, 권한 관리)

멋쟁이v 2023. 4. 23. 16:23
728x90
320x100

[목차]

👉🏻
아래 회원관리 화면 구현에서 이어지는 내용입니다. 참고하세요.

01. 로그인 폼에서 아이디, 비밀번호 받기

💡
1️⃣ 로그인 폼 만들기 ➡️ 아이디 : / 비밀번호 : / 로그인버튼 2️⃣ 로그인 버튼 경로 설정 3️⃣ 아이디와 비밀번호를 입력 받아서 출력한다. (login_action.jsp) 4️⃣ 콘솔창 확인
  • [코드예제] top.jsp
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    <!-- Begin Wrapper -->
    <div id="wrapper">
          <!-- Begin Header -->
          <div id="header">
          상단 메뉴	<br/><br/>
          <a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01 회원 가입</a>		 
          <a href="<%= request.getContextPath() %>/user/user_list.jsp">02 회원 조회</a>		 
          <a href="#">03 상품 등록</a>		 
          <a href="#">04 상품 조회</a> <br/><br/>
          
          <form action="<%= request.getContextPath() %>/login/login_action.jsp" method="post">
          	아이디 : <input type="text" name="id">
          	비밀번호 : <input type="text" name="pw">
          	<input type="submit" value="로그인버튼">
          </form>
    
    </div>
    <!-- End Header -->

  • [코드예제] login_action.jsp
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    <%
    
    request.setCharacterEncoding("euc-kr"); // post방식 한글처리
    String id = request.getParameter("id");
    String pw = request.getParameter("pw");
    System.out.println(id + "<-- id");
    System.out.println(pw + "<-- pw");
    
    %>

02. 아이디, 비번 일치 조건 비교

💡
1️⃣ db에 회원 한명이 있다는 가정으로 id, pw, name, level 세팅 2️⃣ 아이디일치, 불일치, 비번불일치, 로그인 성공 조건식 만들기 3️⃣ 콘솔창 확인
  • [코드예제] login_action.jsp
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    <%
    
    request.setCharacterEncoding("euc-kr"); // post방식 한글처리
    String id = request.getParameter("id");
    String pw = request.getParameter("pw");
    System.out.println(id + "<-- id");
    System.out.println(pw + "<-- pw");
    
    String dbid = "id001";
    String dbpw = "pw001";
    String dbname = "홍길동";
    String dblevel = "관리자";
    
    if(id.equals(dbid)) {
    	System.out.println("1-1 아이디 일치");
    	if(pw.equals(dbpw)) {
    		System.out.println("2-1 로그인 성공");
    	} else {
    		System.out.println("2-2 비번 불일치");
    	}
    } else {
    	System.out.println("1-2 아이디 불일치");
    }
    
    %>

03. session 셋팅 후 index.jsp로 redirect

💡
1️⃣ 로그인 성공 조건식 안에 session 셋팅 2️⃣ index.jsp로 경로 설정 3️⃣ 아이디, 비번 불일치 시 화면 멈춤 확인 4️⃣ 로그인시 index.jsp로 리다이렉트 확인
  • [코드예제] login_action.jsp
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    <%
    
    request.setCharacterEncoding("euc-kr"); // post방식 한글처리
    String id = request.getParameter("id");
    String pw = request.getParameter("pw");
    System.out.println(id + "<-- id");
    System.out.println(pw + "<-- pw");
    
    String dbid = "id001";
    String dbpw = "pw001";
    String dbname = "홍길동";
    String dblevel = "관리자";
    
    if(id.equals(dbid)) {
    	System.out.println("1-1 아이디 일치");
    	if(pw.equals(dbpw)) {
    		System.out.println("2-1 로그인 성공");
    
    		session.setAttribute("S_ID", dbid);
    		session.setAttribute("S_NAME", dbname);
    		session.setAttribute("S_LEVEL", dblevel);
    		response.sendRedirect(request.getContextPath()+"/index.jsp");
    
    	} else {
    		System.out.println("2-2 비번 불일치");
    	}
    } else {
    	System.out.println("1-2 아이디 불일치");
    }
    
    %>

04. session 데이터 확인

💡
1️⃣ session 데이터 값 가져오기 2️⃣ 서버 재시작 후 초기화면 값 null 콘솔창 확인 3️⃣ 로그인 후 입력 값 출력 콘솔창 확인
  • [코드예제] top.jsp
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    
    <%
    String S_ID = (String)session.getAttribute("S_ID");
    String S_NAME = (String)session.getAttribute("S_NAME");
    String S_LEVEL = (String)session.getAttribute("S_LEVEL");
    System.out.println(S_ID + "<--S_ID");
    System.out.println(S_NAME + "<--S_NAME");
    System.out.println(S_LEVEL + "<--S_LEVEL");
    %>
    
    <!-- Begin Wrapper -->
    <div id="wrapper">
          <!-- Begin Header -->
          <div id="header">
          상단 메뉴	<br/><br/>
          <a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01 회원 가입</a>		 
          <a href="<%= request.getContextPath() %>/user/user_list.jsp">02 회원 조회</a>		 
          <a href="#">03 상품 등록</a>		 
          <a href="#">04 상품 조회</a> <br/><br/>
          
          <form action="<%= request.getContextPath() %>/login/login_action.jsp" method="post">
          	아이디 : <input type="text" name="id">
          	비밀번호 : <input type="text" name="pw">
          	<input type="submit" value="로그인버튼">
          </form>
    </div>
    <!-- End Header -->

05. 로그인 전과 후 화면 전환

💡
조건식으로 로그인 전, 후 화면 전환
  • [코드예제] top.jsp
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    
    <%
    String S_ID = (String)session.getAttribute("S_ID");
    String S_NAME = (String)session.getAttribute("S_NAME");
    String S_LEVEL = (String)session.getAttribute("S_LEVEL");
    System.out.println(S_ID + "<--S_ID");
    System.out.println(S_NAME + "<--S_NAME");
    System.out.println(S_LEVEL + "<--S_LEVEL");
    %>
    
    <!-- Begin Wrapper -->
    <div id="wrapper">
          <!-- Begin Header -->
          <div id="header">
          상단 메뉴	<br/><br/>
          <a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01 회원 가입</a>		 
          <a href="<%= request.getContextPath() %>/user/user_list.jsp">02 회원 조회</a>		 
          <a href="#">03 상품 등록</a>		 
          <a href="#">04 상품 조회</a> <br/><br/>
    <% if(S_LEVEL == null) { %>
    <!-- 로그인 전 화면 시작 -->
          <form action="<%= request.getContextPath() %>/login/login_action.jsp" method="post">
          	아이디 : <input type="text" name="id">
          	비밀번호 : <input type="text" name="pw">
          	<input type="submit" value="로그인버튼">
          </form>
    <!-- 로그인 전 화면 끝 -->
    <% } else { %>
    <!-- 로그인 후 화면 시작 -->
    		id001 / 홍길동님 / 관리자 로그인 중
    		<a href="#">로그아웃</a>
    <!-- 로그인 전 화면 끝 -->
    <% } %>
    </div>
    <!-- End Header -->

06. 로그아웃

💡
1️⃣ 로그아웃 경로 설정 2️⃣ 세션 종료 3️⃣ 로그아웃 처리 후 index.jsp로 이동
  • [코드예제] top.jsp
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    
    <%
    String S_ID = (String)session.getAttribute("S_ID");
    String S_NAME = (String)session.getAttribute("S_NAME");
    String S_LEVEL = (String)session.getAttribute("S_LEVEL");
    System.out.println(S_ID + "<--S_ID");
    System.out.println(S_NAME + "<--S_NAME");
    System.out.println(S_LEVEL + "<--S_LEVEL");
    %>
    
    <!-- Begin Wrapper -->
    <div id="wrapper">
          <!-- Begin Header -->
          <div id="header">
          상단 메뉴	<br/><br/>
          <a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01 회원 가입</a>		 
          <a href="<%= request.getContextPath() %>/user/user_list.jsp">02 회원 조회</a>		 
          <a href="#">03 상품 등록</a>		 
          <a href="#">04 상품 조회</a> <br/><br/>
    <% if(S_LEVEL == null) { %>
          <form action="<%= request.getContextPath() %>/login/login_action.jsp" method="post">
          	아이디 : <input type="text" name="id">
          	비밀번호 : <input type="text" name="pw">
          	<input type="submit" value="로그인버튼">
          </form>
    <% } else { %>
    		id001 / 홍길동님 / 관리자 로그인 중
    		<a href="<%= request.getContextPath() %>/login/logout.jsp">로그아웃</a>
    <% } %>
    </div>
    <!-- End Header -->

  • [코드예제] logout.jsp
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    <%
    	session.invalidate(); // 세션종료
    %>
    <script type="text/javascript">
    	alert('로그아웃');
    	location.href='<%= request.getContextPath() %>/index.jsp';
    </script>

07. 권한별 메뉴변경(조건문)

💡
1️⃣ 로그인 전 메뉴 1개 (회원가입) 2️⃣ 관리자 권한 메뉴 4개 (회원가입, 회원조회, 상품등록, 상품조회) 3️⃣ 판매자 권한 메뉴 3개 (회원가입, 상품등록, 상품조회) 4️⃣ 구매자 권한 메뉴 2개 (회원가입, 상품조회)
  • [코드예제] top.jsp
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    
    <%
    String S_ID = (String)session.getAttribute("S_ID");
    String S_NAME = (String)session.getAttribute("S_NAME");
    String S_LEVEL = (String)session.getAttribute("S_LEVEL");
    System.out.println(S_ID + "<--S_ID");
    System.out.println(S_NAME + "<--S_NAME");
    System.out.println(S_LEVEL + "<--S_LEVEL");
    %>
    
    <!-- Begin Wrapper -->
    <div id="wrapper">
          <!-- Begin Header -->
          <div id="header">
          상단 메뉴	<br/><br/>
    /*
    <a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01 회원 가입</a>		 
    <a href="<%= request.getContextPath() %>/user/user_list.jsp">02 회원 조회</a>		 
    <a href="#">03 상품 등록</a>		 
    <a href="#">04 상품 조회</a> <br/><br/>
    */ 
    
    <% if(S_LEVEL == null) { %>
    			<a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01 회원 가입</a> <br/><br/>
          <form action="<%= request.getContextPath() %>/login/login_action.jsp" method="post">
          	아이디 : <input type="text" name="id">
          	비밀번호 : <input type="text" name="pw">
          	<input type="submit" value="로그인버튼">
          </form>
    <% } else { %>
    	<% if(S_LEVEL.equals("관리자")) { %>
    		      <a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01 회원 가입</a>		 
    		      <a href="<%= request.getContextPath() %>/user/user_list.jsp">02 회원 조회</a>		 
    		      <a href="#">03 상품 등록</a>		 
    		      <a href="#">04 상품 조회</a> <br/><br/>
        <% } else if(S_LEVEL.equals("판매자")) { %>
    			<a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01 회원 가입</a>		 
    		      <a href="#">03 상품 등록</a>		 
    		      <a href="#">04 상품 조회</a> <br/><br/>
        <% } else if(S_LEVEL.equals("구매자")) { %>
       			<a href="<%= request.getContextPath() %>/user/user_insert_form.jsp">01 회원 가입</a>		 
    		      <a href="#">04 상품 조회</a> <br/><br/>
       	<% } %>
    		id001 / 홍길동님 / 관리자 로그인 중
    		<a href="<%= request.getContextPath() %>/login/logout.jsp">로그아웃</a>
    <% } %>
    </div>
    <!-- End Header -->

08. 경고창 로그인 처리

💡
1️⃣ 아이디 불일치, 비번 불일치, 로그인 성공 시 alert 창 활성화 2️⃣ 각각 조건식에 alert 과 index 경로로 이동되게 설정한다.
  • [코드예제] login_action.jsp
    <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <!DOCTYPE html>
    <%
    
    request.setCharacterEncoding("euc-kr"); // post방식 한글처리
    String id = request.getParameter("id");
    String pw = request.getParameter("pw");
    System.out.println(id + "<-- id");
    System.out.println(pw + "<-- pw");
    
    String dbid = "id001";
    String dbpw = "pw001";
    String dbname = "홍길동";
    String dblevel = "관리자";
    
    // alert 메세지
    String messeage = null;
    
    if(id.equals(dbid)) {
    	System.out.println("1-1 아이디 일치");
    	if(pw.equals(dbpw)) {
    		System.out.println("2-1 로그인 성공");
    		session.setAttribute("S_ID", dbid);
    		session.setAttribute("S_NAME", dbname);
    		session.setAttribute("S_LEVEL", dblevel);
    		/* response.sendRedirect(request.getContextPath()+"/index.jsp"); */
    		messeage = "로그인 성공";
    	} else {
    		System.out.println("2-2 비번 불일치");
    		messeage = "비밀번호 불일치";
    	}
    } else {
    	System.out.println("1-2 아이디 불일치");
    	messeage = "아이디 불일치";
    }
    
    %>
    // 자바스크립트를 통한 alert, location 처리
    <script>
    	alert('<%= messeage %>');
    	location.href='<%= request.getContextPath() %>/index.jsp';
    </script>


tag : #jsp #java #session #post #get #javascript #조건문 #경로


Uploaded by N2T

728x90
320x100
Comments