YJ의 새벽

JDBC 활용 연습용9. ( 회원정보수정 ) 본문

SelfStudy/JDBC

JDBC 활용 연습용9. ( 회원정보수정 )

YJDawn 2023. 3. 31. 21:40

 

 

 

 

수정을 하면 ??

 

DB 의 정보도 수정 .

 

 

--------->>>

 

-- 회원정보수정 form 에  infoValidate()  함수가 적용되어있다 .

 

--회원정보 수정  myPage.js    구문. 

//////////////////////////////////////////// 회원정보 수정
function infoValidate(){

    const memberNickname = document.getElementById("memberNickname");
    const memberTel = document.getElementById("memberTel");

    const regExp1 = /^[a-zA-Z0-9가-힣]{2,10}$/;        // 닉네임 정규식
    const regExp2 = /^0(1[01679]|2|[3-6][1-5]|70)\d{3,4}\d{4}$/; // 전화번호 정규식

    // 닉네임 유효성 검사
    if(memberNickname.value.length == 0){ // 미작성 시 : 닉네임을 입력해주세요.
        alert("닉네임을 입력해주세요.");
        memberNickname.focus();
        return false;
    }

    if(!regExp1.test(memberNickname.value)){ // 유효하지 않은 경우
        alert("닉네임은 영어/숫자/한글 2~10 글자 사이로 작성해주세요.");
        memberNickname.focus();
        return false;
    }

    // 전화번호 유효성 검사
    if(memberTel.value.length == 0){ // 미작성 시
        alert("전화번호를 입력해주세요.(- 제외)");
        memberTel.focus();
        return false;
    }

    if(!regExp2.test(memberTel.value)){ // 유효하지 않은 경우
        // alert(" 전화번호 형식이 올바르지 않습니다.");
        // memberTel.focus();
        // return false;

        return printAlert(memberTel, "전화번호 형식이 올바르지 않습니다.");
    }

    return true; // true를 반환해서 form 제출 수행
}

 

function printAlert(el, message){ // 매개변수 el은 요소
    alert(message);
    el.focus();
    return false;
}

 

-- 회원정보수정 MyPageInfoServlet.class         

@WebServlet("/member/myPage/info")
public class MyPageInfoServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String path = "/WEB-INF/views/member/myPage-info.jsp";
		req.getRequestDispatcher(path).forward(req, resp);

	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

		String memberNickname = req.getParameter("memberNickname");
		String memberTel = req.getParameter("memberTel");
		String[] memberAddress = req.getParameterValues("memberAddress");

		for (String i : memberAddress) {
			System.out.println(i);
		}
		try {
			HttpSession session = req.getSession();
			Member loginMember = (Member) session.getAttribute("loginMember");
			int loginMemberNo = loginMember.getMemberNo();

			MemberService service = new MemberService();

			int result = service.updateInfo(loginMemberNo, memberNickname, memberTel, memberAddress);

			loginMember.setMemberNickname(memberNickname);
			loginMember.setMemberTel(memberTel);
			loginMember.setMemberAddress(memberAddress[0] + ", " + memberAddress[1] + ", " + memberAddress[2]);

			if (result > 0) {
				session.setAttribute("message", "정보수정 성공");
			} else {
				session.setAttribute("message", "정보수정 실패");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		resp.sendRedirect("info");
	}
}

 

 

-- 회원정보수정 MemberService.class   updateInfo()     서비스클래스

	/**
	 * 회원정보 업데이트 서비스 ( 닉네임, 전화번호 )
	 * 
	 * @param loginMemberNo
	 * @param memberNickname
	 * @param memberTel
	 * @param memberAddress
	 * @return
	 */
	public int updateInfo(int loginMemberNo, String memberNickname, String memberTel, String[] memberAddress)
			throws Exception {
		Connection conn = getConnection();

		int result = dao.updateInfo(conn, loginMemberNo, memberNickname, memberTel, memberAddress);

		if (result > 0)
			commit(conn);
		else
			rollback(conn);

		close(conn);

		return result;
	}

 

 

-- 회원정보수정 MemberDAO.class    

 

/**  회원정보 업데이트 DAO
 * @param conn
 * @param loginMemberNo
 * @param memberNickname
 * @param memberTel
 * @param memberAddress
 * @return
 * @throws Exception
 */
public int updateInfo(Connection conn, int loginMemberNo, String memberNickname, String memberTel, String[] memberAddress) throws Exception{

	int result = 0;
	
	try {
		String sql = prop.getProperty("updateInfo");
		
		pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, memberNickname);
		pstmt.setString(2, memberTel);
		pstmt.setString(3, memberAddress[0]+", "+memberAddress[1]+", "+memberAddress[2]);
		pstmt.setInt(4, loginMemberNo);
		
		result = pstmt.executeUpdate();
		
	}finally {
		close(pstmt);
	}
	return result;
}

 

-- 회원정보수정  member-sql.xml     회원정보 update 쿼리문

 

	<entry key="updateInfo">
        UPDATE MEMBER SET
        MEMBER_NICK = ? ,
        MEMBER_TEL = ? ,
        MEMBER_ADDR = ?
        WHERE MEMBER_NO = ? 
	</entry>

 

 

 

 

 

 

Comments