백엔드/자바

간단하게 게시판 만들기1(게시글 작성 및 DB저장)

후누피 2023. 6. 9. 14:48
728x90

1. 게시글을 작성 할 폼을 만들기. boardwrite

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>게시물 작성폼</title>
</head>
<style>
.layout{
width : 500px;
margin : 0 auto;
margin-top : 40px;
}

.layout > input {
width : 100%;
box-sizing : border-box
}
.layout > textarea {
width : 100%;
margin-top : 10px;
min-height : 300px;
}

</style>
<body>
<div class="layout">
<form>

</form>
<input type="text">
<textarea></textarea>
<button>작성</button>
</div>
</body>
</html>

package com.study.board.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class BoardController {

@GetMapping("/board/write") //localhost:8090/board/wirte 주소를 접속했을때
public String boardWriteForm(){

return "boardwrite";
}
}

url에서 localhost:8090/board/write 형태로 접근하면

컨트롤러가 유저 요청을 제어하여

@GetMapping 어노테이션을 통해 boardWriteForm 메서드가 실행되고,

return값으로 위에 boardwirte.html을 실행시켜 유저에게 화면으로 출력해준다.


 

2.데이터베이스에 저장해보기.

유저가 브라우저를 통해 작성후 작성버튼을 누른다.

 


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

form태그안의 내용들 input (title) , textarea(content) 데이터들이

button type=submit에  board/writepro 로 이동된다.

 

BoardController.java

@PostMapping("/board/writepro")
public String boardWritePro(Board board){

boardService.write(board);
return "";
}

/board/writepro url은 postmapping을 통해 

boardWritePro 메서드가 실행된다. boardWritePro메서드는

entity(데이터베이스의 테이블)의 Board.java board를 매개변수로 받는다.

boardService.write(board) 는 boardService의 write메서드를 실행시킨다.

이때 컨트롤러는 boardService를 읽을수 없기 때문에

@Autowired
private BoardService boardService;

Autowired 어노테이션을 사용하여

boardService를 읽어온다.


 

Entity > Board.java (테이블)

package com.study.board.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Data;

@Entity //테이블을 의미
@Data
public class Board {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String title;
private String content;
}

mysql에서 생성한 

컬럼값과 타입들을 설정해준다.


BoardService.java

import org.springframework.stereotype.Service;

@Service
public class BoardService {
@Autowired
private BoardRepository boardRepository;
public void write(Board board){
boardRepository.save(board);
}
}

 

컨트롤러에서 boardService.write(board)가 실행되면

BoardService.java의 

write메소드가 실행되며

boardRepository.save(board)를 통해 데이터베이스에 유저의 입력값들을 저장해준다.

 


BoardRepository.java

package com.study.board.repository;

import com.study.board.entity.Board;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

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

JpaRepository를 참조하며 테이블과 그 테이블의 PK를 매개변수로 설정해준다.

 


결과

728x90