관리 메뉴

bright jazz music

[bootBoard] N:1(다대일) 연관관계: 10-2 화면처리: 게시물 등록 처리 본문

Framework/Spring

[bootBoard] N:1(다대일) 연관관계: 10-2 화면처리: 게시물 등록 처리

bright jazz music 2022. 10. 9. 21:44

게시물 등록 처리

 

 

1. BoardController에 등록을 위한 코드 추가

//BoardController.java

@Controller
@RequestMapping("/board/")
@Log4j2
@RequiredArgsConstructor
public class BoardController {

	private final BoardService boardService;

...

    //등록(get) : 등록을 위한 페이지 반환
    @GetMapping("/register")
    public void register(){
        log.info("register get...");
    }
    //등록(post) : 등록을 위한 페이지에 입력된 값을 BoardDTO로 받아서 처리
    @PostMapping("/register")
    public String registerPost(BoardDTO dto, RedirectAttributes redirectAttributes){

        log.info("dto..." + dto);
    //새로 추가된 엔티티의 번호
        Long bno = boardService.register(dto);

        log.info("BNO: " + bno);

        redirectAttributes.addFlashAttribute("msg", bno);

        return "redirect:/board/list";
    }
...

}

 

 

 

 

2. 등록을 위한 페이지 생성 register.html

register.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">

<th:block th:replace="~{/layout/basic :: setContent(~{this::content})}">
    <th:block th:fragment="content">
        <h1 class="mt-4">Board Register Page</h1>

        <!--버튼 클릭 시 /board/register로 POST 발사!!!        -->
        <form th:action="@{/board/register}" th:method="post">
            <div class="form-group">
                <label>Title</label>
                <input type="text" class="form-control" name="title" placeholder="Enter Title">
            </div>

            <div class="form-group">
                <label>Content</label>
                <textarea class="form-control" rows="5" name="content"></textarea>
            </div>
            <div class="form-group">
                <label>Writer Email</label>
                <input type="email" class="form-control" name="writerEmail" placeholder="Writer Email">
            </div>
            <button type="submit" class="btn btn-primary">Submit</button>
        </form>
    </th:block>
</th:block>

 

 

 

 

 

2. 폼에 값 입력 뒤 submit 버튼 클릭

 

  • 단, 이 때 Writer Email 필드의 값은 반드시 member 테이블에 존재하는 값을 넣어줘야 함.
  • 여기서는 user100@aaa.com을 예시로 사용했음.
  • member테이블에 존재하지 않는 값을 입력하면 에러 발생.

 

 

 

3. 목록 확인

 

콘솔로그

 

2022-10-09 21:48:42.140  INFO 8052 --- [nio-8080-exec-3] c.e.b.controller.BoardController         : dto...BoardDTO(bno=null, title=등록 테스트 title, content=등록 테스트 content, writerEmail=user100@aaa.com, writerName=null, regDate=null, modDate=null, replyCount=0)
2022-10-09 21:48:42.140  INFO 8052 --- [nio-8080-exec-3] c.e.bootboard.service.BoardServiceImpl   : BoardDTO(bno=null, title=등록 테스트 title, content=등록 테스트 content, writerEmail=user100@aaa.com, writerName=null, regDate=null, modDate=null, replyCount=0)
Hibernate: 
    select
        member_.email,
        member_.moddate as moddate2_1_,
        member_.name as name4_1_,
        member_.password as password5_1_ 
    from
        member member_ 
    where
        member_.email=?
Hibernate: 
    insert 
    into
        board
        (moddate, reg_date, content, title, writer_email) 
    values
        (?, ?, ?, ?, ?)
Comments