회원과 게시판 — 읽기 자료
게시판을 처음 만들 때 — 모든 기능을 한꺼번에 가지 말고 가장 단순한 두 개부터.
글 쓰기와 목록 보기까지만. 의도적으로 인가 없음 — 다음 차시의 동기.
-- DB (MySQL)
CREATE TABLE myboard (
num INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
writer VARCHAR(50) NOT NULL,
content TEXT NOT NULL
);
// com.smhrd.domain.Board
@Data @AllArgsConstructor @NoArgsConstructor
public class Board {
private int num;
private String title;
private String writer;
private String content;
}
// com.smhrd.mapper.BoardMapper
@Mapper
public interface BoardMapper {
List<Board> selectList();
Board selectOne(int num);
void insert(Board b);
}
// BoardController
@Controller @RequestMapping("/board")
public class BoardController {
@Autowired BoardService service;
@GetMapping("/list")
public String list(Model model) {
model.addAttribute("boards", service.selectList());
return "board/list";
}
@GetMapping("/view")
public String view(@RequestParam int num, Model model) {
model.addAttribute("board", service.selectOne(num));
return "board/view";
}
@PostMapping("/write")
public String write(Board b, HttpSession session) {
Member u = (Member) session.getAttribute("loginUser");
b.setWriter(u.getId());
service.insert(b);
return "redirect:/board/list";
}
}
<!-- write.jsp 폼 — name 이 Board 필드와 일치 -->
<form action="/board/write" method="post">
<input name="title" required />
<textarea name="content"></textarea>
</form>
<!-- list.jsp -->
<c:forEach var="b" items="${boards}">
<tr>
<td>${b.num}</td>
<td><a href="/board/view?num=${b.num}">${b.title}</a></td>
<td>${b.writer}</td>
</tr>
</c:forEach>
게시판을 처음 만들 때 — 모든 기능을 한꺼번에 가지 말고 가장 단순한 두 개부터.
동작하는 게시판이 있다. 단 — 누구나 남의 글을 수정할 수 있는 위험한 상태.