백엔드/자바
간단하게 게시판 만들기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>
<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";
}
}
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 "";
}
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;
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;
}
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);
}
}
@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> {
}
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