티스토리 뷰

36단계_jsp_java_DTO_DAO_

login_level 권한처리

 

 

 

login_action.jsp

String id = request.getParameter("id");
String pw = request.getParameter("pw");
System.out.println(id + "<- id ");
System.out.println(pw + "<- pw ");
//mLoginCheck 메서드 호출 후 리턴값을 받아 리턴 값에 따라 조건문 처리할 수 있다.
Mdao dao = new Mdao();
String result = dao.mLoginCheck(id,pw);
System.out.println(result +"<---result");

1) 로그인 성공시 : mLoginCheck 메서드의 아이디, 비밀번호가 일치했을 때의 리턴값을 받아온다.

2) 아이디, 비밀번호 불일치

 

3)아이디일치, 비밀번호 불일치 :

 

 

Mdao.java - 로그인 체크

public String mLoginCheck(String inputId, String inputPw) throws ClassNotFoundException, SQLException{
		System.out.println("7 mLoginCheck mDao.java");
		String re = null;
		//SELECT m_pw FROM tb_member WHERE m_id = 'id001'; <- 쿼리 문장 준비 후 실행
		//결과가 있다면 아이디 일치 조건. 
			//inputPw 변수에 담겨있는 값과 m_pw 컬럼에 담겨있는 값이 일치하면 로그인 성공 조건. - 1)로그인성공 리턴
			// 그렇지 않으면 비번 불일치. - 3) 비번 불일치 리턴
		//그렇지 않으면 아이디 불일치. - 2)아이디 불일치 리턴
		System.out.println(inputId +"<--- inputId");
		System.out.println(inputPw +"<--- inputPw");
		DriverDB db = new DriverDB();
		conn = db.driverDbcon();
		pstmt = conn.prepareStatement("SELECT m_pw FROM tb_member WHERE m_id = ?");
		pstmt.setString(1, inputId);
		rs = pstmt.executeQuery();
		if(rs.next()){
			System.out.println("아이디 일치");
			if(inputPw.equals(rs.getString("m_pw"))){
				System.out.println("1) 로그인 성공");
				re = "1) 로그인 성공";
			}else if(inputPw != rs.getString("m_pw")) {
				System.out.println("3) 비번 불일치");
				re = "3) 비번 불일치";
			}
		}else {
			System.out.println("아이디 불일치");
			re = "2)아이디 불일치";
		}
		return re;
	}

1) 아이디와 패스워드를 id, pw로 받아오고 mLoginCheck 메서드를 실행하여 변수에 입력한다.

 

2) 아이디와 패스워드만 조회할 때 다른 정보는 판단하지 않는다. DB 와의 아이디 패스워드 일치, 불일치 여부만을 판단하면 되므로 받아온 아이디를 조회하여 m_pw만 select 한다.

SELECT m_pw FROM tb_member WHERE m_id = ?
pstmt.setString(1, inputId);

 

3) 실행한 쿼리문을 rs(resultset) 에 담는다.

rs를 조회하여 next 메서드(boolean) 를 실행하여 값이 true 이면 "아이디 일치" 콘솔에 출력한다.

 

4)

1. next() 메서드 가 정상적으로 작동 (true) - 아이디가 일치

1-1. 입력된 패스워드와 db에 입력된 패스워드가 일치 -> 1) 로그인성공

1-2. 비밀번호 불일치 -> 3) 비번 불일치

 

2. next() 메서드 가 정상적으로 작동 안됨 (false) - 아이디가 불일치

2-1. 아이디 불일치

if(rs.next()){
			System.out.println("아이디 일치");
			if(inputPw.equals(rs.getString("m_pw"))){
				System.out.println("1) 로그인 성공");
				re = "1) 로그인 성공";
			}else if(inputPw != rs.getString("m_pw")) {
				System.out.println("3) 비번 불일치");
				re = "3) 비번 불일치";
			}
		}else {
			System.out.println("아이디 불일치");
			re = "2)아이디 불일치";
		}

 

 

세션등록하기

Mdao.java

	public Member mGetForSession(String inputId) throws ClassNotFoundException, SQLException {
		System.out.println("8 mGetForSession.java");
		System.out.println(inputId + "<--- input id 8 mGetForSession.java");
		
		DriverDB db = new DriverDB();
		conn = db.driverDbcon();
		System.out.println(conn +"<---conn");
		
		pstmt = conn.prepareStatement("SELECT m_id, m_level, m_name FROM tb_member WHERE m_id = ?");
		pstmt.setString(1, inputId);
		System.out.println(pstmt +"<---pstmt");
		
		rs = pstmt.executeQuery();
		
		while(rs.next()){
			m = new Member();
			m.setM_id(rs.getString("m_id"));	
			m.setM_level(rs.getString("m_level"));
			m.setM_name(rs.getString("m_name"));
		}
		return m;
	}

세션관리에는 아이디, 권한, 이름만 사용하고 있으므로 id를 조회하여 3개만 select 한다.

변수에 담긴 id 를 셋팅한다.

 

next 메서드로 각 행의 아이디, 권한, 이름을 조회하고

Member 클래스를 참조하는 m을 리턴한다.

 

login_action.jsp

if(result.equals("1) 로그인 성공")){
	System.out.println("01 로그인 성공 조건문 실행");
	Member m = dao.mGetForSession(id);
	session.setAttribute("S_ID", m.getM_id());
	session.setAttribute("S_LEVEL", m.getM_level());
	session.setAttribute("S_NAME", m.getM_name());
	msg = "로그인 성공";
}else if(result.equals("2)아이디 불일치")){
	System.out.println("02 아이디 불일치 조건문 실행");
	msg = "아이디 불일치 ";
}else if(result.equals("3) 비번 불일치")){
	System.out.println("03 비번 불일치 조건문 실행");
	msg = "비밀번호 불일치";
}
<script type="text/javascript">
	alert('<%= msg %>');
	location.href='<%= request.getContextPath()%>/index.jsp';
</script>

 

리턴받은 값을 조회하여 세션 셋팅하기.

로그인이 성공했을 때만 세션을 셋팅하고, 그 외에는 셋팅하지 않는다.

 

1) 로그인성공시 

mGetForSession 을 호출하여 입력받은 id를 입력하고 m에 할당한다.

session.setAttribute("저장하고자 하는 변수명", 저장변수값)

저장변수 값에 m_id~ m_name 을 겟팅한다.

로그인 성공 알림창을 띄우고 index로 경로를 지정한다.

 

2) 아이디 불일치, 비번 불일치시 해당되는 알림창을 띄우고 index로 이동한다.

 

top.jsp

<%
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 ");
%>

세션에서 아이디 ~ 권한을 받아와 변수에 저장하고 if문을 활용하여 각 권한별로 메뉴를 보여준다.

'41기 개발자과정' 카테고리의 다른 글

20211029 documnet api 실습  (0) 2021.10.29
20211028 document api  (0) 2021.10.28
20211024 오류 Incorrect integer value:  (0) 2021.10.24
20211020 32단계_jsp_java_DTO_DAO_list처리  (0) 2021.10.23
20211021 브라우저 객체  (0) 2021.10.21
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함