본문 바로가기
프로젝트/게시판

[SpringBoot] 게시판 6. 게시글 입력 기능 구현

by qkzkdo 2023. 8. 3.
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