나의개발일지

계정 수정 본문

프로젝트/전자도서관 프로젝트

계정 수정

아. 이렇게 하면 될거 같은데.. 2023. 12. 28. 02:40
728x90


계정 수정

 

아이디와 비밀번호를 제외한 이름, 성별, 부서, 직책, 이메일, 전화번호를 새로 수정한다.

 


계정 수정 구현

1. JSP 페이지

<div class="modify_account_form">

    <form action="<c:url value='/admin/member/modifyAccountConfirm' />" name="modify_account_form" method="post">

        <input type="hidden" 	name="a_m_no"		value="<%= loginedAdminMemberVo.getA_m_no() %>">

        <input type="text"		name="a_m_id" 		value="<%= loginedAdminMemberVo.getA_m_id() %>" readonly disabled> <br>
        <input type="password"	name="a_m_pw" 		value="******" readonly disabled> <br>
        <input type="text"		name="a_m_name" 	value="<%= loginedAdminMemberVo.getA_m_name() %>" placeholder="INPUT USER NAME."> <br>
        <select name="a_m_gender">
            <option value="">SELECET USER GENDER.</option>
            <option value="M" <% if (loginedAdminMemberVo.getA_m_gender().equals("M")) {%> selected <%}%>>Man</option>
            <option value="W" <% if (loginedAdminMemberVo.getA_m_gender().equals("W")) {%> selected <%}%>>Woman</option>
        </select> <br>
        <input type="text"		name="a_m_part"		value="<%= loginedAdminMemberVo.getA_m_part() %>" placeholder="INPUT USER PART." ><br>
        <input type="text"		name="a_m_position"	value="<%= loginedAdminMemberVo.getA_m_position() %>" placeholder="INPUT USER POSITION." ><br>
        <input type="email"		name="a_m_mail"		value="<%= loginedAdminMemberVo.getA_m_mail() %>" placeholder="INPUT USER MAIL." ><br>
        <input type="text"		name="a_m_phone"	value="<%= loginedAdminMemberVo.getA_m_phone() %>" placeholder="INPUT USER PHONE."> <br>
        <input type="button"	value="modify account" onclick="modifyAccountForm();"> 
        <input type="reset"		value="reset">

    </form>

</div>

 

JSP 페이지에서 세션값에 있는 정보를 불러와 표시하고 수정하는 페이지이다.

a_m_no값은 hidden타입으로 전송하고, id와 password는 readonly값을 주어서 수정불가능 하도록 구현한다.

modify_account_form.jsp 페이지에서 modify account버튼을 눌러서 submit을 하게 되면 해당 form태그 안에 있는 정보들이 컨트롤러로 넘어가게된다.

 

2. Controller

@GetMapping("/modifyAccountForm")
public String modifyAccountForm(HttpSession session) {
    System.out.println("[AdminMemberController] modifyAccountForm()");

    String nextPage = "admin/member/modify_account_form";

    AdminMemberVo loginedAdminMemberVo =
            (AdminMemberVo) session.getAttribute("loginedAdminMemberVo");

    if (loginedAdminMemberVo == null)
        nextPage = "redirect:/admin/member/loginForm";

    return nextPage;

}

//계정 수정 확인
@PostMapping("/modifyAccountConfirm")
public String modifyAccountConfirm(AdminMemberVo adminMemberVo, HttpSession session) {
    System.out.println("[AdminMemberController] modifyAccountConfirm()");

    String nextPage = "admin/member/modify_account_ok";

    int result = adminMemberService.modifyAccountConfirm(adminMemberVo);

    if (result > 0) {
        // 계정 수정 성공
        AdminMemberVo loginedAdminMemberVo =
                adminMemberService.getloginedAdminMemberVo(adminMemberVo.getA_m_no());
        session.setAttribute("loginedAdminMemberVo", loginedAdminMemberVo);
        session.setMaxInactiveInterval(60*30);
    } else {
        nextPage = "admin/member/modify_account_ng";
    }

    return nextPage;
}

 

admin home 에서 계정 수정 버튼이 눌르면 Controller로 modifyAccountForm신호가 들어오면 위의 JSP페이지인 modify_account_form.jsp페이지로 연결한다.

modifyAccountConfirm신호가 들어오게되면 계정 수정 결과를 서비스에 요청해서 result로 받는다.

result값이 0보다 크면 수정성공이고, 0이하이면 실패이다

 

3. Service

public int modifyAccountConfirm(AdminMemberVo adminMemberVo) {
    System.out.println("[AdminMemberService] modifyAccountConfirm()");

    return adminMemberDao.updateAdminAccount(adminMemberVo);
}

 

서비스 부분에서는 adminMemberVo값을 받아 Dao의 updateAdminAccount메서드를 실행후 반환값을 리턴한다.

4. DAO

public int updateAdminAccount(AdminMemberVo adminMemberVo) {
    System.out.println("[AdminMemberDao] updateAdminAccount()");

    String sql = "UPDATE tb1_admin_member SET a_m_name=?,"+
                                            "a_m_gender=?, "+
                                            "a_m_part=?, " +
                                            "a_m_position=?, "+
                                            "a_m_mail=?, "+
                                            "a_m_phone=?, "+
                                            "a_m_mod_date=NOW() "+
                                            "WHERE a_m_no = ?";

    int result = -1;
    result = jdbcTemplate.update(sql,adminMemberVo.getA_m_name(),
                                     adminMemberVo.getA_m_gender(),
                                     adminMemberVo.getA_m_part(),
                                     adminMemberVo.getA_m_position(),
                                     adminMemberVo.getA_m_mail(),
                                     adminMemberVo.getA_m_phone(),
                                     adminMemberVo.getA_m_no());

    return result;
}

 

Dao에서는 adminMemberVo 의 이름, 성별, 부서, 직책, 이메일, 휴대폰번호를 사번을 기준으로 찾아서 DB테이블에서 바꾸는 과정이다.

jdbcTemplate.update()문은 성공시 0보다 큰 양수을 반환하기 때문에 성공시 양수, 실패시 0 또는 -1를 반환한다.

728x90
반응형

'프로젝트 > 전자도서관 프로젝트' 카테고리의 다른 글

도서등록  (0) 2024.01.07
새 비밀번호 생성 with. e-mail  (1) 2024.01.07
로그인, 로그아웃  (0) 2023.12.24
회원가입  (0) 2023.11.21
개발환경 세팅  (0) 2023.11.14