Board/게시판 만들기(jsp)

로그인/로그아웃 기능 구현하기(세션)

호ㅁl 2022. 12. 5. 12:22

 

javastudy0919.zip
3.37MB

 로그인화면 페이지 만들기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인</title>
<script>
function check(){
	
	var fm = document.frm;
	
	if(fm.memberId.value == ""){
		alert("아이디를 입력해주세요.");
		fm.memberId.focus();
		return;
	}else if(fm.memberPwd.value == ""){
		alert("비밀번호를 입력해주세요.");
		fm.memberPwd.focus();
		return;
	}
	
	//가상경로 지정
	fm.action = "<%=request.getContextPath() %>/member/memberLoginAction.do"; 
	fm.method = "post"; //감춰져서 넘기는 방식 Post
	fm.submit();
	return;
}
</script>
</head>
<body>
로그인 화면
<form name="frm">
<table border=1 style="width:270px; margin-top:10px;">
<tr>
<td style="text-align:right;">아이디 : </td>
<td style="text-align:center;"><input type="text" name = "memberId"></td>
</tr>

<tr>
<td style="text-align:right;">비밀번호 : </td>
<td style="text-align:center;"><input type="password" name = "memberPwd"></td>
</tr>

<tr>
<td colspan=2 style="text-align:center;">
<input type="button" value="로그인" onclick="check()">
<input type="button" value="취소">
</td>
</tr>

</table>
</form>
</body>
</html>

 

 

1. MemberController에서 파라미터로 넘어온 값을 받음

input에 입력된 값을 변수에 담는다.

 

2. MemberDao에서  아이디와 비밀번호를 매개변수로 받는 memberLogin 메소드 만든다.

member0919에서 delyn이 N이고 memberid와 memberpwd가 ?인 컬럼값을 조회하는 쿼리를 작성하여

연결객체에 sql문장을 담아 실행하고 결과를 가져온다.

 

 

 

3. MemberController에서 memberLogin메소드를 호출함.

로그인정보를 value값에 담아 회원정보가 있으면 1, 없으면 0값을 반환한다.

회원정보가 없으면 로그인 화면으로 이동하고

회원정보가 있으면 메인페이지로 이동한다.

로그인 성공시 메인페이지로 이동 

콘솔창에 찍어본 값도 정상적으로 출력된다.

 


세션을 사용하여 로그인 기능 구현

1. MemberDao로 돌아와

member0919에서 delyn이 N이고 아이디와 패스워드가 ? 사람의 이름과 아이디를  추출하는 쿼리로 수정한다.

그리고 if문에서 mv에 있는 아이디와 이름값을 꺼내온다.

 

 

2. MemberController에서 아이디와 비민번호를 mv에 담는다.

정상적으로 담겨졌는지 확인을 위해 콘솔창에 출력해서 확인해본다.

 

3. mv가 null이면 로그인화면으로 이동하고

null이 아닐경우 세션에 mv를 담고 메인페이지로 이동을한다.

 

HttpSession은 사용을 위해 import해준다.

 

 

 

 

 

4. index 페이지에서  MemberVo사용을 위해 import해주고 

session.setAttribute로 저장된 값은 object타입이기 때문에 값을 꺼내기위해선 형변환이 필요하다.

MemberVo로 형변환을하고 세션에 담겨있는 mv를 꺼내 변수 mv에 담는다.

그리고

mv가 null이 아닐경우 mv에 담긴 이름과 아이디를 각각의 변수에 담는다.

담긴 변수에 값으로 로그인정보를 화면에 나타나게한다.

로그인이 정상적으로 되면 index페이지에 회원이름과 아이디가 나타난다.


로그아웃 기능구현

 

index 페이지에서 로그아웃 변수를 만들어 초기화해주고

조건문안에서 변수에 로그아웃 버튼을 만들어 준 뒤 클릭이벤트를 걸어

로그아웃페이지로 이동하는 경로를 작성한다.

 

로그인을 하게되면 로그아웃 버튼이 생성된다.

 

MemberController에서 로그아웃버튼 클릭시 memberLogOut페이지로 이동하게 되면

세션을 초기화시키고 로그아웃이 되었으면 메인페이지로 이동을 한다.

 

로그아웃 버튼 클릭시 로그아웃이 된 화면을 확인할 수 있다.

 

https://enai.tistory.com/29

 

세션(Session) 이용하는 방법

세션은 클라이언트 별로 서버에 저장되는 정보이다. 사용자 컴퓨터에 저장되던 쿠키와 다르게 서버에 저장되므로, 비교적 보안이 필요한 데이터는 쿠키보다 세션에 저장한다. 서버가 종료되거

enai.tistory.com

https://muengx2.tistory.com/55

 

[HttpSession] 기초 개념

[Session] - 방문자가 웹 서버에 접속해 있는 상태 - WAS의 메모리에 Object의 형태로 저장 - 메모리가 허용하는 용량까지 제한없이 저장가능 [동작순서] - 클라이언트가 페이지 요청 - 접근한 클라이언

muengx2.tistory.com