인서트 뷰랑 그냥 인서트 a 태그 관련해서 , 이해한 것 정리 = > a 태그 인서트뷰로 하이퍼링크가 걸려있다 , 그러면 보드 컨트롤러의 것매핑어노테이션도 인서트뷰로 바꿔줘야함. 그러면 리턴이 인서트보드인데 그러면 인서트보드.jsp를 호출하고 그러면 글등록하는 창이 뜸. 그 창에 인풋 서밋버튼을 누르면 폼 액션이 인서트보드라서 포스트모드로 인서트보드를 호출함. 그러면 보드컨트롤러에 인서트보드 (포스트매핑된) 애를 호출하고 비즈니스로직(보드서비스)에 글등록되는 비즈니스가 실행되고 보드리스트로 가는 리다이렉션 jsp가 호출되어 글목록으로 돌아감 .

insertBoardView로 바꿔도 됨.
insertBoard는 겟메서드와 포스트 메서드(뷰를 호출하기 위한 메서드와 디비에 넣기위한 메서드)
동일한 명으로 두개가 있지만 라도 포스트냐, 겟이냐에 따라 뷰를 위한건지 비즈니스로직을 위한건지가 구분되긴 하지만 명시적으로 구분 가능.
a태그로 연결된 애들은 다 겟메서드임. 그래서 자연스레 insertBoard중 겟메서드를 호출하는것.
겟은 대부분 뷰목적.
폼태그는 겟과 포스트만지원. (CRUD 와 좀 다름)
딜리트 , 업데이트 이런건 포스트임.
폼형태로 모든 서비스 ( 업로드 삭제 조회 )를 구현할때의 약간 제약사항임
<a href="insertBoard">글등록</a>
GET /insertBoard 요청을 보냄.@GetMapping("/insertBoard")
public String insertBoardView() {
return "insertBoard"; // insertBoard.jsp 호출
}
insertBoard.jsp 파일을 화면에 렌더링함. <form action="insertBoard" method="post">
<!-- 제목, 작성자, 내용 입력 -->
<input type="submit" value="새글 등록">
</form>
POST /insertBoard 요청을 보냄.@PostMapping("/insertBoard")
public String insertBoard(Board board) {
boardService.insertBoard(board);
return "redirect:getBoardList"; // 등록 후 목록 페이지로 리다이렉트
}
Board 객체를 boardService.insertBoard()에 전달/getBoardList로 리다이렉트함@GetMapping("/getBoardList")
public String getBoardList(Model model) {
List<Board> boardList = boardService.getBoardList();
model.addAttribute("boardList", boardList);
return "getBoardList"; // getBoardList.jsp 호출
}
getBoardList.jsp 호출해서 사용자에게 글 목록 화면을 보여줌.[getBoard.jsp] (글등록 링크 클릭)
|
V
GET /insertBoard ---> BoardController.insertBoardView()
|
V
[insertBoard.jsp] (폼 입력 후 submit)
|
V
POST /insertBoard ---> BoardController.insertBoard()
|
V
boardService.insertBoard() → 저장
|
V
redirect:/getBoardList
|
V
BoardController.getBoardList() → 게시글 목록 조회
|
V
[getBoardList.jsp]
<a href="insertBoard">글등록</a>
<form action="insertBoard" method="post">
<input type="text" name="title">
<input type="text" name="writer">
<textarea name="content"></textarea>
<input type="submit" value="새글 등록">
</form>
@GetMapping("/insertBoard")
public String insertBoardView() {
return "insertBoard";
}
@PostMapping("/insertBoard")
public String insertBoard(Board board) {
boardService.insertBoard(board);
return "redirect:getBoardList";
}
@Override
public void insertBoard(Board board) {
BoardRepo.save(board);
}
insertBoard와 insertBoardView를 명확하게 구분해서 처리하고 싶을 때는 URL 매핑을 아래처럼 바꾸면 구조가 훨씬 깔끔해지고 역할도 명확해집니다.
| 기능 | URL | 설명 |
|---|---|---|
| 글 작성 화면 보기 | GET /insertBoardView | 사용자에게 글 작성 폼을 보여줌 |
| 글 등록 처리 | POST /insertBoard | 사용자가 폼 작성 후 제출한 데이터를 저장함 |
<a href="insertBoardView">글등록</a>
👇
// [1] 글 작성 화면을 보여주는 요청 (GET)
@GetMapping("/insertBoardView")
public String insertBoardView() {
return "insertBoard"; // insertBoard.jsp 호출
}
// [2] 실제 글 등록 로직 처리 요청 (POST)
@PostMapping("/insertBoard")
public String insertBoard(Board board) {
boardService.insertBoard(board);
return "redirect:getBoardList";
}
👇
insertBoard.jsp
<form action="insertBoard" method="post"> <!-- 여긴 그대로 -->
[getBoard.jsp] (글등록 링크 클릭)
|
V
GET /insertBoardView ---> insertBoardView()
|
V
[insertBoard.jsp] (사용자 글 작성 후 submit)
|
V
POST /insertBoard ---> insertBoard()
|
V
boardService.insertBoard() → DB 저장
|
V
redirect:/getBoardList → getBoardList()
|
V
[getBoardList.jsp]
insertBoardView는 글쓰기 화면만 보여주는 GET 요청이고,insertBoard는 글을 등록하는 POST 처리용 요청입니다. 이렇게 나누면 URL만 봐도 어떤 역할인지 명확하게 알 수 있어서 유지보수와 협업에 더 유리합니다.