v5
★ PART · BOARD

최소 게시판

회원과 게시판 — 읽기 자료

📍 지금 어디를 만지고 있나요?
브라우저
회원과 게시판
DB

핵심 용어

JSTLJSP 의 표준 태그 라이브러리. c:forEach, c:if 등.
ELJSP 의 Expression Language. ${...}

1. 문제

전 차시까지의 답답함

게시판을 처음 만들 때 — 모든 기능을 한꺼번에 가지 말고 가장 단순한 두 개부터.

2. 새 도구

Create + Read 만

글 쓰기와 목록 보기까지만. 의도적으로 인가 없음 — 다음 차시의 동기.

3. 코드

-- 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>

4. 정리

5. Before / After

전 차시 끝

게시판을 처음 만들 때 — 모든 기능을 한꺼번에 가지 말고 가장 단순한 두 개부터.

이번 차시 끝

동작하는 게시판이 있다. 단 — 누구나 남의 글을 수정할 수 있는 위험한 상태.