DAY_047[국비] 자바 웹프로그래밍 과정

Bona의 블로그 입니다.·2022년 12월 4일
0

국비과정

목록 보기
47/99

 🌞 Day 047 

  • Servlet : logout, 회원가입, 회원 정보 수정, 회원 탈퇴

 🎄 코드 작성 순서 

  • 한 작업당 여러 파일을 왔다갔다 하면서 추가 하거나 수정하기 때문에 코드 작성의 순서(?!)는 여기에, 각 파일의 코드는 아래에 파일마다 따로 정리
  • 자세한 코드 작성과 수정과 순서는 각 코드 블럭에 주석으로 정리

 오늘 수업 정리 

1. 로그인한 상태에서 index.jsp 접근 하면
⇒ 바로 main으로 바로 이동하기 (다시 로그인 폼으로 가지 않도록)

2. 로그아웃
: main페이지 버튼 추가
> logoutServlet에서 doGet()메서드에서 session 삭제

3. 회원가입
: loginForm에서 회원가입버튼에 onclick 추가(join.do 이동하는 이벤트)
> joinServlet(로그인 페이지에서 가입버튼 클릭하면 이동할 서블릿) 생성 > doGet()메서드에 joinForm으로 이동하는 코드 작성
> joinForm.jsp만들기 (아이디 중복체크, 필수 항목 확인)

     1) 아이디 중복 체크 코드 작성
        : idCheck() 작성 - joinForm.jsp
        (중복체크 버튼 클릭하면 호출되는 자바스크립트 함수)
        > idcheckservlet 생성
        (아이디를 데이터 베이스와 비교하고 결과를 보내는)
        > idcheck.jsp 생성 (중복 체크 결과를 출력할 팝업창)
        > idcheck.jsp에서 idok()작성
        (idcheck.jsp에서 사용 가능한 아이디이면 ‘중복 체크 되었음’
        결과를 보낼 자바스크립트 함수)

     2) 필수 항목 확인
        : joinCheck() 작성 - joinForm.jsp
        (필수 입력 사항 체크하는 자바스크립트 함수)
        > join.do(joinServlet)이동 doPost() 작성

     3) 회원 가입
        : join.do(joinServlet) doPost() 작성
        > MemberDao에 insertMember()메서드 작성

4. 회원 정보 변경
: main에서 ‘회원 정보 변경’ 버튼 클릭 > update.do

    1) doGet()에서 updateForm.jsp로 바로 포워드
       (로그인한 상태에서 이동하기 때문에 정보조회하는 함수를 만들거나
        파라미터를 같이 보낼 필요가 없다.)

    2) updateForm.jsp 생성
       (아이디는 수정불가, 다른 정보는 입력창에 미리 입력되어 있음)

    3) update.do의 doPost()작성

    4) MemberDao에 updateMember()메서드 작성

5. 회원 탈퇴
: main에서 ‘회원 탈퇴’ 버튼 클릭
> withDrawConfirm() 자바스크립트 함수 작성

    1) withDrawConfirm()
        withdraw.do(WithDrawServlet)으로 아이디 정보 가지고 이동
        > doGet()메서드 에서 mdao.deleteMember(userid); 호출
        > deleteMember(String userid) 작성

6. 수정(관리자 로그인, 등급 변경)
    1) LoginServlet수정
       : url = "main.do";
        (doGet(), doPost() 둘 다 수정, updateSERVLET도 수정)

    2) mainServlet 생성
        > MemberDao에 selectMember() 작성

    3) main.jsp에 표 만들기
       (관리자로 로그인 할 때에만보이는, 회원들의 정보를 조회하고
        등급을 바꿀 수 있는 표)

    4) 회원 등급 변경 버튼
       (관리자는 등급만 바꿀 수 있음, 관리자가 자신의 등급을 일반으로
        바꾸면 표가 바로 없어지는 것이 아니라 다음 로그인에 반영됨)

    5) EditAdminServlet 생성
        > MemberDao에 editAdmin(String userid, int admin) 작성

Import

  • JSTL
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

  • Format import
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>



 🎁 LoginServlet 

[1] 로그인한 상태에서 다시 index로 접근을 했을 경우

  • 로그인 페이지로 가지 않고 바로 메인으로 이동하도록 doGet() 메서드에 코드 수정 & 추가



 🎁 main.jsp 

[2] 로그아웃 만들기

  • table에 '로그아웃', '회원 정보 변경', '회원 탈퇴' 버튼 만들기

[6-3] 관리자로 로그인한 경우

  • 멤버 정보를 페이지에 표시하기

  • onclick="location.href='editadmin.do?userid=${member.userid}&admin=${member.admin}'"
    오타와 큰따옴표 작은따옴표 위치 조심할 것!!! member의 정보를 보내는 것임!!!

[5-1] whithDrawConfrim()함수

WithDrawServlet로 이동하기 전에 다시 한 번 안내하고, userid를 가지고 이동하는 함수



 🎁 logoutServlet 

[2] doGet()메서드 작성



 🎁 LoginForm 

[3] 회원가입 : 코드 추가

      <!-- 수정1. 회원가입 서블릿으로 이동 -->
      <input type="button" value="회원가입"
             onClick="location.href='join.do'"> 
      <!-- 파일 위치와 이름 노출 방지를 위해 서블릿으로 이동 -->



 🎁 joinServlet 

[3] joinServlet 생성 - doGet()메서드 작성

: joinForm 으로 포워드

[3-3] joinServlet - doPost()작성

: joinForm에서 받은 데이터를 DB에 추가하고 loginForm으로 포워드



 🎁 joinForm.jsp 

  • 자바스크립트 함수는 title태그 아래에 script태그 열어서 작성함

[3-1] 아이디 중복체크 : idCheck() 함수

  • 팝업창을 열고 그 팝업창에서(idcheck.jsp)아이디를 중복체크를 하고 그 결과를 받는 함수
    중복체크결과는 팝업창(idcheck.jsp)에서 보낼 것임

[3-2] 필수 항목 확인 : joinCheck() 함수

  • 필수 입력사항이 입력되었는지, 아이디 중복체크를 확인 했는지 체크하고 그 결과를 리턴하는 함수

joinForm의 form태그



 🎁 idCheckServlet 

[3-1] inCheckServlet 생성



 🎁 idcheck.jsp 

  • 팝업창
  • idCheckServlet에서 포워딩으로 넘어왔기 때문에 idCheckServlet에서 보낸 결과를 가지고 있음
    그 결과에 따라서 보여질 내용이 바뀌어야 하므로 c:choose태그를 사용한다 ➡️ JSTL import 잊지 말 것!!
  • self.close(); ➡️ (팝업창)스스로 닫는 함수
  • opener.~~ ➡️ opener팝업창을 연 주체를 (팝업창에서) 지칭

[3-1] idcheck.jsp 생성



 🎁 MemberDao 

  • 추가된 메서드만 정리

[3-3] 회원가입 : insertMember()

[4-4] 회원 정보 변경 : updateMember()

[5-1] 회원 탈퇴 : deleteMember()

[6-2] 회원 정보 조회 : selectMember()

[6-5] 회원 등급 변경 : editAdmin()



 🎁 updateServlet 

[4] updateServlet 생성

[4-1] doGet() 작성

: 로그인한 상태이므로 이미 request에 'loginUser' Attribute에 필요한 데이터가 들어있음, updateForm으로 바로 포워드

[4-3] doPost() 작성

: updateForm에서 받은 데이터를 MemberDao 멤버메서드 updateMember에 보내고 결과를 리턴 받는다.



 🎁 updateForm.jsp 

[4-2] updateForm 생성 - updateCheck() 작성

  • 아이디는 수정불가(표시는 O) + 패스워드는 빈칸(아예 다시 입력하도록)
  • 다른 정보들은 입력창에 표시되어 수정할 것만 수정하도록 하기
  • 자바스크립트 함수로 필수 입력사항이 제대로 입력되었는지,
    패스워드와 패스워드 확인이 일치하는지 점검하고 값을 리턴
  • 자바스크립트 함수(updateCheck())가 true를 리턴했을 때만 submit이 되도록하고 updateServlet에 post로 보내기



 🎁 WithDrawServlet 

[5] WithDrawServlet 생성 - doGet()메서드 작성



 🎁 MainSERVLET 

[6-2] MainServlet 생성

로그인 여부를 확인하고 회원정보를 조회한 후 (selectMember() 호출) 리턴 받은 값을 가지고 main.jsp 혹은 조회하지 않고 loginForm으로 포워드 하는 서블릿



 🎁 EditAdminServlet 

[6-5] EditAdminServlet 생성

회원등급을 변경하는 서블릿





profile
제가 공부하고 공유하고 싶은 글을 올리고 있습니다.

0개의 댓글