💡 핵심 요약 (TL;DR)
Javabean 4 : web.xml, 회원정보삭제페이지의 동작 원리를 이해하고 실제 프로젝트에 적용하기 위한 실무 가이드다.
* 에러코드별 데이터 처리필요 : 프로그램배포시 꼭 필요한 페이지.
ITWILL학원 : 25강 JSP기초 BY 정규태강사
1. web.xml
- 배포서술자 : 프로젝트 실행시 가장 먼저 실행되는 파일.
- 프로그램에 필요한 전반적인 설정을 지정함.
- 에러코드별 데이터 처리필요 : 프로그램배포시 꼭 필요한 페이지.
- 위치 :
WEBCONTENT하위의 WEB-INF폴더안에 위치함.

1-1. 404에러 예시
- 만약 404에러가 뜨면 location 아래로 이동해서 처리하겠다는 의미
webcontent하위에 error폴더 생성 후 그 안에 404code.jsp생성
web.xml파일에 태그 위에 아래 코드를 입력한다.
1 2 3 4 5 6
| <error-page> <error-code>404</error-code> <location> /error/404code.jsp </location> </error-page>
|
- ‘error’폴더를 따로 생성한 뒤
404code.jsp를 만든다.
1 2 3 4
| <h1>404code</h1> <h2>페이지를 찾을 수 없습니다.</h2> <h2>관리자에게 문의하세요.</h2> <input type="button" value="로그인페이지로 이동" onclick="location.href='loginForm.jsp'">
|
1-2. 500에러 예시
- 만약 500에러가 뜨면 location 아래로 이동해서 처리하겠다는 의미
webcontent하위에 error폴더 생성 후 그 안에 500code.jsp생성
- 위와 동일한 방법에 코드만 404에서 500으로 변경해주면 된다
1 2 3 4 5 6
| <error-page> <error-code>500</error-code> <location> /error/500code.jsp </location> </error-page>
|
1 2 3 4
| <h1>500code</h1> <h2>페이지를 찾을 수 없습니다.</h2> <h2>관리자에게 문의하세요.</h2> <input type="button" value="로그인페이지로 이동" onclick="location.href='loginForm.jsp'">
|
2. 회원정보삭제페이지
2-1. 메인페이지 main.jsp에서 회원정보삭제버튼 추가
메인페이지에 회원정보삭제 버튼을 만든다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <% request.setCharacterEncoding("UTF-8"); String id = (String) session.getAttribute("id"); String name = request.getParameter("name");
if(id == null){ response.sendRedirect("loginForm.jsp"); } %> <h2><%=id %>님 환영합니다.</h2>
<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'">
|
사용자로부터 비밀번호 받는 폼페이지 생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <% //1. 로그인 처리 -> 로그인 x (로그인페이지 이동) String id = (String) session.getAttribute("id"); if( id == null ){ response.sendRedirect("loginForm.jsp"); } //2.회원 비밀번호만 입력받아서 deletePro.jsp페이지 이동후 삭제 %> <fieldset> <legend>회원탈퇴</legend> <form action="deletePro.jsp" method="post"> <!-- input타입중 hidden은 화면에 있는 해당 input태그를 숨겨서 정보 전달 --> 아이디 : <input type="hidden" name="id" value="<%=id %>" readonly><br> 비밀번호 : <input type="password" name="pw"><br> <input type="submit" value="탈퇴하기"> <input type="button" value="뒤로가기" onclick="location.href='main.jsp'"> </form> </fieldset>
|
2-3. 회원정보삭페이지 deletePro.jsp 생성
순서
- 한글처리 & 로그인여부체크 ->로그인페이지이동
- 삭제할 비밀번호 가져오기 : 파라미터이용
- MeberDAO객체 생성 -> deleteMember()메서드 호출
- 데이터처리 : 1-삭제완료, 0-비번오류, -1-아이디없음
- 삭제 후 session 초기화 까먹으면 안된다! 세션 꼭 없앨 것!
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 38 39 40 41
| <% request.setCharacterEncoding("UTF-8"); String id = (String) session.getAttribute("id"); if(id == null){ response.sendRedirect("loginForm.jsp"); }
String pw = request.getParameter("pw"); %>
<%
MemberDAO mdao = new MemberDAO(); int result = mdao.deleteMember(id, pw);
if(result == 1){ session.invalidate(); %> <script type="text/javascript"> alert("회원정보삭제 성공"); location.href="loginForm.jsp"; </script> <% }else if(result == 0){ %> <script type="text/javascript"> alert("비밀번호오류로 회원정보삭제실패"); history.back(); </script> <% }else{ %> <script type="text/javascript"> alert("존재하지않는 아이디입니다."); history.back(); </script> <% } %>
|
2-4. DAO에서 deleteMember()메서드만들기
순서
- DB연결메서드 불러오기
- SQL & pstmt 생성 : 사용자가 입력한 비밀번호가 DB비번과 일치하는 지 확인
- 실행 -> rs저장
- 데이터처리 : DB에 있는 비번일치하면 정보삭제 작업, 아닌 경우 에러
- 4-1. DB에 있는 회원 -> 비번체크 : 비번일치(->수정) 비번불일치(->에러)
- 비번일치하는 경우 : SQL 구문작성 & pstmt 생성 -> 실행
- 4-2. DB에 없는 회원 -> 에러
- 자원해제
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 38 39 40 41
| public int deleteMember(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"))){ sql = "delete from itwill_member where id=?"; pstmt = con.prepareStatement(sql); pstmt.setString(1, id); pstmt.executeUpdate(); result = 1; System.out.println("회원삭제성공-아디일치,비번일치"); }else{ result = 0; System.out.println("회원삭제실패-아디일치,비번불일치"); } }else{ result = -1; System.out.println("회원삭제실패-아이디불일치"); } } catch (SQLException e) { e.printStackTrace(); } finally { closeDB(); } return result; }
|
#TILITWILL(JAVA)