글작성 기능 구현하기

친친·2022년 10월 21일
0

글작성 폼에 내용을 입력하고 '작성'버튼을 누르면
스프링에서 내부적으로 처리되는 로직을 만들어보는 과정이다.

  • boardwrite.html
    : form태그로 게시글 내용을 전달한다
  • boardController.java
    : post 요청 url을 뷰와 맵핑하고, 필요시 해당 요청을 Service에 전달한다
  • BoardService.java
    : Board 객체를 통해 전달받은 데이터를 DB에서 처리하고 반환하는 비지니스 로직을 구현한다
  • BoardRepository.java
    : JpaRepository를 상속받은 인터페이스로, DB와 관련된 CRUD 요청을 처리한다
  • board.java
    : DB의 테이블과 연동되어, 게시글 데이터를 전달하는 객체이다.

//boardwrite.html

<body>
    <div class="layout">                    
        <form action="/board/writepro" method="post" >
            <input name="title" type="text">
            <textarea name="content"></textarea>
            <input type="file" name="file">
            <button type="submit">작성</button>
        </form>
    </div>
</body>

위의 글작성 폼에서 내용을 입력하고 작성버튼을 누르면 form 태그 안의 action속성에서 지정한 "/board/writepro"로 입력내용들이 전달된다. 그리고 이를 아래 Controller에서 받아서 처리한다


//boardController.java

@Controller
public class boardController {
   
    @Autowired
    private BoardService boardService;
    
    @PostMapping("/board/writepro")
    public String boardWritePro(Board board){

        boardService.write(board);      
        return "";
    }
}를 입력하세요

@PostMapping("/board/writepro")

보통 데이터를 게시할 때 사용한다.
메소드에 주어진 URI 표현식(/board/writepro)과 일치하는 HTTP POST 요청을 처리한다.

@Autowired

의존성 주입을 위해 사용하는 어노테이션.
스프링이 관리하는 Bean을 찾아서 자동으로 매핑해준다.


//BoardService.java

@Service
public class BoardService {
	
    @Autowired
    private BoardRepository boardRepository;

    public void write(Board board){
    	
    boardRepository.save(board);
    }
}

@Service

스프링에 Bean 객체로 등록해주는 어노테이션
보통 비지니스 로직이나 repository layer를 호출하는 함수에 사용한다


//BoardRepository.java

@Repository
public interface BoardRepository extends JpaRepository<Board, Integer> {

}

@Repository

스프링에 Bean 객체로 등록해주는 어노테이션.
JpaRepository를 상속받아 기본적인 Create, Read, Update, Delete 가 자동으로 생성된다.


//board.java

@Entity //데이터베이스 테이블과 연동해주는 어노테이션
@Data //변수에 getter, setter 자동생성해주는 어노테이션
public class Board {

    @Id //기본키로 지정하는 어노테이션
    @GeneratedValue(strategy = GenerationType.IDENTITY) //MariaDB에서는 GenerationType.IDENTITY 사용
    private Integer id;

    private String title;

    private String content;
}

@GeneratedValue

기본키 생성전략 어노테이션으로, IDENTITY타입의 경우 기본키 생성을 DB에 위임한다




[출처] 위 내용은 한코딩님의 강의를 보고 정리한 내용입니다

https://youtu.be/Y7S1xXsKy_w

profile
웹개발 블로그

0개의 댓글