이 튜토리얼의 소스는  https://github.com/gauryan/springboot2-tutorial 에서도 확인할 수 있습니다.

 

관리자 목록을 보았으니, 이제는 새로운 관리자를 추가해봅시다. 

1. 저장 프로시저 (SP_INSERT_ADMIN) 생성

CREATE PROCEDURE SP_INSERT_ADMIN (
    i_userid VARCHAR(255),
    i_password VARCHAR(255),
    i_nick VARCHAR(255))
BEGIN
  INSERT INTO TB_ADMIN(userid, password, nick) VALUES(i_userid, i_password, i_nick);
END


mysql> SELECT * FROM TB_ADMIN;
+-----+---------+----------+-------+
| sno | userid  | password | nick  |
+-----+---------+----------+-------+
|   1 | testid1 | passwd1  | nick1 |
|   2 | testid2 | passwd2  | nick2 |
|   3 | testid3 | passwd3  | nick3 |
|   4 | testid4 | passwd4  | nick4 |
|   5 | testid5 | passwd5  | nick5 |
+-----+---------+----------+-------+

 
mysql> CALL SP_INSERT_ADMIN('testid6', 'passwd6', 'nick6');

 
mysql> SELECT * FROM TB_ADMIN;
+-----+---------+----------+-------+
| sno | userid  | password | nick  |
+-----+---------+----------+-------+
|   1 | testid1 | passwd1  | nick1 |
|   2 | testid2 | passwd2  | nick2 |
|   3 | testid3 | passwd3  | nick3 |
|   4 | testid4 | passwd4  | nick4 |
|   5 | testid5 | passwd5  | nick5 |
|   6 | testid6 | passwd6  | nick6 |
+-----+---------+----------+-------+


2. 관리자 입력 양식을 만들자. src/main/resources/templates/mgmt/admin/insert_form.html

<div class="modal-header">
  <h5 class="modal-title">관리자 추가</h5>
  <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
  <form name="insert_form" action="/mgmt/admin/insert" method="post">
    <div class="form-group">
      <label>아이디 <small>(필수)</small></label>
      <input type="text" name="userid" class="form-control" required>
    </div>
    <div class="form-group">
      <label>비밀번호 <small>(필수)</small></label>
      <input type="password" id="password" name="passwd1" class="form-control" required>
    </div>
    <div class="form-group">
      <label>비밀번호 확인 <small>(필수)</small></label>
      <input type="password" name="passwd2" class="form-control" required>
    </div>
    <div class="form-group">
      <label>별명 <small>(필수)</small></label>
      <input type="text" name="nick" class="form-control" required>
    </div>
    <br>
    <div class="form-group" style="text-align: right">
      <input class="btn btn-primary" type="submit" value="관리자 추가" />
    </div>
  </form>
</div>


3. src/main/java/com/tutorial/xyz/controller/mgmt/AdminController.java 에 다음 코드를 추가한다.

...
 
  // 관리자 추가 폼
  @GetMapping("/mgmt/admin/insert_form")
  public String insertForm() {
    return "mgmt/admin/insert_form";
  }

...


4. 관리자 추가 버튼을 클릭하면 모달 다이얼로그 박스 형식의 입력 양식이 나올 것이다. 여기에서는 bootstrap 과 jquery를 이용해서 Modal 박스를 사용하였다. list.html 하단에 보면 관련 코드들이 있으니 참고 바란다.

 

5. src/main/resources/mybatis-mapper/AdminMapper.xml 파일에 다음을 추가한다. AdminMapper.java 에서 @Insert 어노테이션을 사용하는 경우에는 설정하지 않아도 된다.

...

    <insert id="insertAdmin">
        CALL SP_INSERT_ADMIN(#{userid}, #{password}, #{nick})
    </insert>

...

 

6. src/main/java/com/tutorial/xyz/mapper/AdminMapper.java 파일에 다음을 추가한다.

  // @Insert("CALL SP_INSERT_ADMIN(#{userid}, #{password}, #{nick})")
  int insertAdmin(@Param("userid") String userid, @Param("password") String password, @Param("nick") String nick);

 

7. src/main/java/com/tutorial/xyz/controller/mgmt/AdminController.java 파일에 다음을 추가한다. Form 값을 받아서 처리하는 방법이 여러가지가 있는데, 여기에서는 가장 간편한 @RequestParam 어노테이션을 이용하였다.

  // 관리자 추가
  @PostMapping("/admin/insert")
  public String insert(@RequestParam("userid") String userid, @RequestParam("passwd1") String passwd1, @RequestParam("passwd2") String passwd2, @RequestParam("nick") String nick) {
    String password;
    if(!passwd1.equals(passwd2)) {
      // 비밀번호가 다른 경우, 관리자목록으로 돌아간다.
      return "redirect:/mgmt/admin";
    }
    password = passwd1;
    mapper.insertAdmin(userid, password, nick);
    // 관리자 추가 성공
    return "redirect:/mgmt/admin";
  }

 

8. 코드 작성은 완료되었으니, 실제 화면에서 관리자를 등록해보면 목록에 표시되는 것을 볼 수 있을 것이다.

 


+ Recent posts