티스토리 뷰
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 |