728x90
구현 순서
1. board-list.html
2. BoardController
3. write.html
4. BoardService
5. BoardServiceProcess
6. BoardMapper
7. board-mapper.xml
8. 게시글 입력 구현 화면
1. board-list.html
board-list.html 글쓰기 페이지로 이동할 수 있는 <a> 태그를 만들어준다
2. BoardController
글쓰기 페이지 이동 메서드, 게시글 작성 메서드 생성
private final BoardService service;
//글쓰기 페이지 이동
@GetMapping("/board/new")
public String writePage() {
return "board/write";
}
//게시글 작성
@PostMapping("/board/write")
public String boardWrite(BoardDTO dto) {
service.boardWriteProcess(dto);
return "redirect:/board-list";
}
- @PostMapping("/board/write") : 폼 데이터를 서버로 전송하기 위한 POST요청 처리 메서드
- 클라이언트가 전송한 데이터를 해당 객체에 바인딩 하기 위해 파라미터로 BoardDTO 타입의 객체인 dto를 받는다
- redirect : 해당 경로로 다시 요청을 보낸다
3. write.html
작성한 게시글 정보를 서버로 보낼 from태그 작성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>
<section>
<form action="/board/write" method="post">
<p>
<input type="text" name="title" placeholder="제목">
</p>
<p>
<textarea rows="5" cols="50" name="content" placeholder="내용"></textarea>
</p>
<p>
<button type="submit">등록</button>
</p>
</form>
</section>
</div>
</body>
</html>
- <form action="/board/write" method="post"> : 폼을 제출할 때 POST 메서드를 사용하여 "/board/write" URL로 데이터를 전송
- name속성은 사용자가 입력한 값을 서버로 전송할 때 이 이름으로 데이터를 식별한다.
- 서버에서는 HTML 폼의 name 속성과 DTO 객체의 필드를 매핑하여 데이터를 추출하고 객체로 변환한다
(DTO 객체의 필드와 전송된 데이터의 이름이 일치해야 함)
4. BoardService
BoardService 인터페이스에 boardWriteProcess() 메서드 선언
//게시글 작성
void boardWriteProcess(BoardDTO dto);
5. BoardServiceProcess
BoardService 인터페이스의 boardWriteProcess() 메서드를 구현
private final BoardMapper mapper;
//게시글 작성
@Override
public void boardWriteProcess(BoardDTO dto) {
mapper.boardSave(dto);
}
6. BoardMapper
XML 파일에 정의된 쿼리를 호출할 boardSave() 메서드 선언
void boardSave(BoardDTO dto);
7. board-mapper.xml
동적 쿼리를 사용하여
<insert id="boardSave">
insert into board(title, content) values(#{title}, #{content});
</insert>
- #{title}과 #{content}는 각각 BoardDTO 객체의 title과 content 필드 값을 자동으로 바인딩하게된다
- boardSave 쿼리가 실행될 때 title과 content에 해당하는 값들이 데이터베이스의 board 테이블에 새로운 레코드로 삽입된다
8. 입력 기능 구현 화면
728x90
'프로젝트 > 게시판' 카테고리의 다른 글
[SpringBoot] 게시판 8. 게시글 수정 기능 구현 (0) | 2023.08.04 |
---|---|
[SpringBoot] 게시판 7. 게시글 삭제 기능 구현 (0) | 2023.08.04 |
[SpringBoot] 게시판 5. 게시글 상세보기 페이지 구현 (0) | 2023.08.03 |
[SpringBoot] 게시판 4. 게시글 조회 기능 +페이징 처리 - 비동기 구현 (0) | 2023.08.02 |
[SpringBoot] 게시판 3. 게시글 입력 테스트 코드 작성 (0) | 2023.08.01 |