제공된 프로시저를 mysql에 붙여 넣어줌으로써 데이터들을 확보합니다.
use board;
DELIMITER $$
CREATE PROCEDURE testDataInsert()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= 120 DO
INSERT INTO board(title, content)
VALUES(concat('제목',i), concat('내용', i));
SET i = i + 1;
END WHILE;
END$$
DELIMITER $$
call testDataInsert();
@GetMapping("/board/list")
public String boardList(Model model){
model.addAttribute("list", boardService.boardList());
//리스트를 반환한다.
return "boardlist";
}
rerturn 위치가 boardlist라는 html인 겁니다. 그 이름으로 html 파일을 만들어줍니다.
BoardService에
public List<Board> boardList(){
return boardRepository.findAll();
}
를 추가해 줍니다. 만든 거를 컨트롤러에서 사용해 보겠습니다.
@GetMapping("/board/list")
public String boardList(Model model){
model.addAttribute("list", boardService.boardList());
//리스트를 반환한다.
return "boardlist";
}
Controller의 메서드는 Model이라는 타입의 객체를 파라미터로 받을 수 있다.
순수하게 JSP Servlet으로 웹 애플리케이션을 만들 때 보통 request나 session 내장객체에 정보를 담아 jsp에 넘겨주곤 했는데 Spring에서는 Model를 쓴다고 합니다.
해당 html에는
xmlns:th = "http://www.thymeleaf.org"
를 추가해 줍니다. 아래에
<tr th:each="board : ${list}">
<td th:text="${board.id}">id</td>
<td th:text="${board.title}">제목</td>
</tr>
each는 반복문입니다.
[상세글 확인하기]를 진행해 보겠습니다.
우선적으로 상세글을 보기 위한 html이 필요합니다. boardView로 명명했습니다.
<!DOCTYPE html>
<html lang="en" xmlns:th = "http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>게시글 상세 페이지</title>
</head>
<body>
<h1 th:text="${board.title}">제목입니다.</h1>
<p th:text="${board.content}">내용이 들어갈 부분입니다.</p>
</body>
</html>
이렇게 설정을 해줬고요, 연결하기 위한 controller를 구현해야겠습니다.
@GetMapping("/board/view")//board/view?id=1
public String boardView(Model model, Integer id){
model.addAttribute("board", boardService.boardView(id));
return "boardView";
}
이제 service로 넘어가 보겠습니다.
public Board boardView(Integer id){
return boardRepository.findById(id).get();
}
boardView라는 함수 서비스를 제공하겠습니다. 아이디를 받아서, 우리의 레포지토리에서 id를 따라 얻어냅니다. 그럼 그걸 반환을 해주겠죠? 위의 boardView 컨트롤러 함수 내에서, id를 전달받습니다.
view의 html에서
<h1 th:text="${board.title}">제목입니다.</h1>
<p th:text="${board.content}">내용이 들어갈 부분입니다.</p>
이 부분을 통해 데이터를 얻습니다.
boardlist.html인데요,
<tr th:each="board : ${list}">
<td th:text="${board.id}">id</td>
<td ><a th:text="${board.title}" th:href="@{/board/view(id=${board.id})}"></a></td>
</tr>
href는 링크로 갈 것임을 알려줍니다. 여기서 /view? id=1 이 부분을 표현해 줍니다. 이렇게 해주면, list 페이지에서 해당 제목에 밑줄이 생기며 클릭 시 제목과 내용을 확인할 수 있습니다. 보드의 view화면으로 넘어가는데, 상세 글을 볼 수 있는 곳으로 넘어 가게 됩니다. 이러면 실제적으로 게시판이 만들어지네요. 개꿀잼입니다.
'CSE' 카테고리의 다른 글
Spring 프로젝트 GCP에 올리기 [무료계정] (1) | 2024.09.06 |
---|---|
[Spring Jwts] parser() 와 parserBuild() (0) | 2024.07.18 |
[Flutter] DART 기본문법 (1) | 2024.02.07 |
[프로그래머스] ComponentScan, @Service (0) | 2023.07.19 |
SpringBoot 게시판 따라만들기1 (0) | 2023.06.01 |
댓글