ITWILL학원 : 24강 JSP기초 BY 정규태강사
자바빈 프로젝트 1 : 회원가입페이지만들기
자바빈 프로젝트 2 : 로그인 및 로그아웃페이지만들기
자바빈 프로젝트 3 : 회원정보조회 및 수정페이지만들기
1. 로그인폼페이지 작성
1 2 3 4 5 6 7 8 9
| <fieldset> <legend>로그인</legend> <form action="loginPro.jsp" method="post" name="fr"> 아이디 <input type="text" name="id" required ><br> 비밀번호 <input type="password" name="pw"><br> <input type="submit" value="로그인하기"> <input type="button" value="회원가입하기" onclick="location.href='insertForm.jsp'"> </form> </fieldset>
|
2. 로그인프로페이지 작성
파라미터를 저장할 때 세가지 방법이 있다.
- 파라미터 사용 : getParameter()
- 자바빈객체사용 : Javabean jb = new Javabean(), jb.set변수()
- 액션태그 사용 : useBean(), setProperty()
자세히 : 자바빈기초
- getParameter() : 주소줄과 폼태그에 작성한 INPUT은 getParameter로 가져온다.
- getAttribute() : 세션, 페이지에서 저장한 값들은 getAttribute로 가져온다.
이 중 로그인 페이지에선 파라미터를 사용할 예정이다.
로그인페이지 작성 순서
- 한글처리 & 파라미터저장
- 1-1. 파라미터저장 -> 파라미터사용
- 1-2. 파라미터저장 -> 액션태그사용
- 로그인처리 -> DAO에서 처리
- why? DB와 관련된 모든 사항은 DAO에서 처리하니까.
- 로그인 메서드는 DB에서 해당 값이 있는지 체크하고 결과를 리턴
- 리턴값은 정수형 데이터값 사용(1-로그인처리, 0-비번오류, (-1)-아이디없음)
- 결과(result가 -1,0,1)에 따른 페이지 이동처리
- result = 1 : 아이디정보를 세션값으로 저장(키값, 저장할 데이터이름), main.jsp로 이동
- result = 0 : 비번불일치 알림창, history.back()
- result = -1 : 없는아이디 알림창, history.back()
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 32 33 34 35 36 37
| <%//1. 한글처리 request.setCharacterEncoding("UTF-8"); //1-1. 파라미터사용 : 전달된 파라미터값 저장(아이디,비번) String id = request.getParameter("id"); String pw = request.getParameter("pw"); %>
<% //2. 로그인처리 -> DAO에서 처리 따라서 객체만 생성 MemberDAO mdao = new MemberDAO(); mdao.idCheack(id, pw);
//3. 결과(result가 -1,0,1)에 따른 페이지 이동처리 if(result == 1){ //3-1. 아이디정보를 세션값으로 저장(키값, 저장할 데이터이름) session.setAttribute("id", id); //object자리에 string을 담았기에 업캐스팅발생 response.sendRedirect("main.jsp"); }else if(result == 0){ %> <script type="text/javascript"> alert("비밀번호가 일치하지 않습니다"); history.back(); </script> <% }else{ %> <script type="text/javascript"> alert("없는 아이디입니다"); history.back(); </script> <% } %>
|
3. DAO페이지 작성
기존에 만들었던 MemberDAO를 그대로 가져온 뒤 idCheck()메서드만 생성하면 된다.
기존 MemberDAO 태그
순서
- 드라이브로드 디비연결
- SQL & pstmt 생성
- 실행 -> rs저장
- 데이터 처리
- 왜 while이 아닌 if인가? where절에서 id는 pk조건을 가지고 있으므로 중복이 없기때문.
- 세션정보를 만들 수 있을까?
- session.setAttribute();
- 만들 수 없다. why? session은 jsp내장객체이다.
- java에서 사용할 수 없지만 추후 서블릿을 통해 사용할 수 있다.
- 그래서 지금은 main.jsp페이지에서 세션만들거임.
- 자원해제
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 32 33 34
| public int idCheack(String id, String pw){ int result = -1; try { con = getCon(); sql = "select pw from itwill_member where id=?"; pstmt = con.prepareStatement(sql); pstmt.setString(1, id); rs = pstmt.executeQuery(); if(rs.next()){ if(pw.equals(rs.getString("pw"))){ result = 1; System.out.println("아이디,비번일치 = 로그인성공(1)"); }else{ result = 0; System.out.println("아이디있지만 비번다름 (0)"); } }else{ result = -1; System.out.println("아이디,비번없음 (-1)"); } } catch (SQLException e) { e.printStackTrace(); } finally { closeDB(); } return result; }
|
4. main 페이지작성 후 로그아웃 페이지 연결하기.
순서
- 메인페이지, 한글처리 파라미터 저장
- 세션생성
- 메인페이지에 로그아웃버튼을 만들고 로그아웃페이지에 연결한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <%//1.한글처리, 파라미터 (세션생성) request.setCharacterEncoding("UTF-8"); String id = (String) session.getAttribute("id");//object를 string으로 다운캐스팅 //1-1. id없이는 진입불가, id없는 경우 로그인페이지로 이동 if(id == null){ response.sendRedirect("loginForm.jsp"); } %>
<h2><%=id %>님 환영합니다.</h2>
//2. 버튼생성 <input type="button" value="회원정보조회" onclick="location.href='memberinfo.jsp'"> <input type="button" value="회원정보수정" onclick="location.href='updateForm.jsp'"> <input type="button" value="로그아웃" onclick="location.href='logout.jsp'"> <input type="button" value="회원탈퇴" onclick="location.href='deleteForm.jsp'">
|
4-1. 로그아웃페이지작성
메인페이지 연결한 로그아웃페이지를 만든다.
1 2 3 4 5 6 7 8
| <% session.invalidate(); System.out.println("로그아웃성공"); %> <script type="text/javascript"> alert("정상적으로 로그아웃 되었습니다"); location.href="loginForm.jsp"; </script>
|