팀프로젝트/JAVA

팀플_20240115

일일일코_장민기 2024. 3. 6. 14:48
728x90
LoginForm_Active(Starting Point)
세션 연결 확인 및 로그인 페이지(loginForm.html) 작동

로그인 페이지(loginForm.html)
-	로그인: 서블릿(LoginFormController) – 성공페이지(loginSuccess.jsp) / 실패ajax 출력) 
-	아이디 찾기(find_Id.jsp)
-	비밀번호 찾기(find_Password.jsp)
-	회원가입(register_Term.jsp)
-	디버그용 회원 리스트 확인(memberListServlet  list_for_test.jsp)’

아이디 찾기(find_Id.jsp)
-	로그인 페이지(loginForm.html)
-	비밀번호 찾기(find_Password.jsp)
-	회원가입(register_Term.jsp)
-	SSN1 6글자 이상이면 제한
-	SSN2 7글자 이상이면 제한
-	아이디 확인(FindIdController)
1.	이름 / 주민등록번호 일치 시:		찾은 아이디 정보(found_id.jsp)
2.	이름 / 주민등록번호 불일치 시:	회원 가입 이력 없음(cantFindUser.jsp)

비밀번호 찾기(find_Password.jsp)
-	로그인 페이지(loginForm.html)
-	아이디 찾기(find_Id.jsp)
-	회원가입(register_Term.jsp)
-	SSN1 6글자 이상이면 제한
-	SSN2 7글자 이상이면 제한
-	비밀번호 확인(FindIdController)
1.	아이디/이름/주민등록번호 일치:	찾은 비밀번호 정보(found_PW.jsp)
2.	아이디/이름/주민등록번호 불일치:	회원 가입 이력 없음(cantFindUser.jsp)

찾은 비밀번호 정보(found_PW.jsp)
-	FindPWController를 통해 비밀번호 일부 출력(found_PW.jsp) / 못 찾으면 cantFindUser.jsp
-	로그인 페이지(loginForm.html)
-	(미구현 – 서블릿 – child에서 전체 확인(질문?) 전체 비밀번호 찾기
(FindAllPWController  find_AllPassword.jsp)

회원가입 약관 페이지(register_Term.jsp)
-	회원 확인 페이지(confirm_Id.jsp)	– SSN2의 0번 숫자 제약 + 첫 번째 숫자만 보이기
,
기존회원 여부 확인 페이지(confirm_Id.jsp)
-	기존 회원 여부 확인(confirmIdController) 
	1.	이름/주민등록번호 있음:	찾은 유저 정보(findUser.jsp)
	2.	이름/주민등록번호 없음:	회원 가입 페이지(register_Member.jsp)

회원가입 페이지(register_Member.jsp)
-	****************(실패) 회원 가입 확인(RegisterController)******************************
1.		회원가입 성공:	회원가입 성공(로그인 페이지로 자동 이동?)
2.		회원가입 실패:	회원가입 실패

추가 사항
Css를 뽑아서 따로 관리 작업
로그인 시스템 폴더 관리
로그인 시스템 명칭 정리
Choose를 통한 mapper 정리
회원등록 페이지에서 ajax가 늦게 출력되는 것을 대비해서 코드 수정
핸드폰 번호 int -> String
registerDate 변경
처음 만들고 정리했던 내용이다.
그리고 필요한 사항을 추가로 정리했었는데
이제 와서 보니 최신버전은
다 고치거나 다른 방법으로 처리됐다.

 

 

 

 

 

 

변화과정을 어떻게 할까 고민하다가 Github 연동으로 확인하기로 했다.
Git Staging을 통해서 보면 어느 부분이 보이는지 확인할 수 있기 때문이다.

 

 

 

 

 

 

대표적으로 이 컨트롤러는 로그인작업을 하는 컨트롤러임을 명시했다

 

 

 

 

 

 

1월 14일 프로젝트에서는 작동하지 않았던 여러 기능을 확인할 수 있었다.

디버그용 회원 목록 출력 jsp

 

 

사실 맨처음 DB를 만들었을 때 핸드폰 번호의 타입을 Number로 잡았었다.
그런데 작업하다 보니 010과 같이 0으로 시작하는 번호를 읽지 못하는 것을 발견!
Varchar2로 변경하게 되었다.
마찬가지로 SSN도 이후에 변경하게 된다.

 

 

 

DB에서 가입일은 당일 날짜를 Default로 잡긴 했지만 명시적으로 넣고 싶었다.
처음에는 Calendar함수로 만들었지만,
SimpleDateFormat작업을 하지 않고 넣는 바람에 출력할 때마다 jsp에 넣어주어야 했다.
이왕 이렇게 된 거 Date함수로 바꿨는데 훨씬 간단하고 쉬워졌다.

 

 

아이디 찾기, 비밀번호 찾기 기능이 정상적으로 작동된다.
이중 가장 어려웠던 부분은 비밀번호를 절반만 마스킹하는 작업이었다.

아이디, 이름, SSN이 DB에 있는 정보와 일치할 경우,
컨트롤러에서 회원정보를 받아오고,
받아온 정보를 그대로 출력하는 것이 아니라, 마스킹 과정을 거친 뒤에 출력되어야 했다.

문제는 jsp는 일반적으로 스크립트->body 순서이기 때문에 마스킹 작동이 되지 않았다.
그리고 받아온 정보 자체는 온전하게 보관해서 다음 컨트롤러로 넘겨야 했기 때문에 처리가 곤란했다.
(지금 생각해보면 마스킹한 비밀번호, 그냥 비밀번호를 둘 다 넘기고
그냥 비밀번호는 hidden처리하면 됐을 듯 싶다)




<script type="text/javascript">
        function maskPassword(password) {
            var visible = Math.ceil(password.length / 2);		
            // 마스킹할 길이 (비밀번호 길이의 절반)
            var masked = "*".repeat(password.length - visible);
            return password.slice(0, visible) + masked;
        }
</script>
    
    
    
<%
//JavaScript 함수는 클라이언트 측에서 실행되므로, Java 코드에서 직접 호출할 수 없기 때문에 scrip 형식
        for (memberDTO dto : list) {
            String maskedPassword = "<script>document.write(maskPassword('" + dto.getUserPw() + "'));</script>";
%>
    
<p><%=dto.getUserName()%>님의 비밀번호는 <%=maskedPassword%>입니다.</p>​
그래서 아예 자바스크립트 인젝션으로 만들었다.

 

 

 

두 번째 작업은 여기까지