티스토리 뷰
@RequestMapping 에서 method=RequestMethod.GET or POST가 추가되었습니다. 무엇을 의미할까요?
호출방식에 따라 같은 URL 요청이 들어와도 별개의 메서드가 처리할 수 있게 지원한 것입니다.
https://hongku.tistory.com/122
BindingResult는 뭘까요? 후에 추가할 validation과 비슷한 검증 역할을 합니다.
일반적으로 요청 메서드는 GET 메서드이기에 list.jsp 에서 새 글을 클릭하면, GET으로 들어가게 됩니다.
저희는 DB에다 데이터를 저장할 것이고 password의 값을 숨기기 위해 POST method를 form 형식에 넣습니다. 그렇게 되면 등록을 했을 때 RequestMethod.POST로 들어가는 메서드로 들어가는 것을 확인할 수 있습니다.
그리고 검증을 위해 Validation을 추가했습니다.
BoardController.class 에서 @Valid BoardVO boardVO가 보이실 겁니다. 여기에 제한을 걸어 향후 일어날 예외를 정해두는 것입니다.
pom.xml에 hibernate를 추가하고,
@Length 라던지, @NotEmpty라는 어노테이션을 통해 길이와 비어있으면 안된다라는 것을 제시할 수 있습니다. 참고로 제목이 5글자 넘어가게 되면 재실행하라고 write.jsp가 반복됩니다.
이런식으로 데이터가 추가된 것을 확인할 수 있습니다.
redirect:/board/list vs /board/list
/board/list인 경우 localhost:8080/mvc/board/write로 계속 남아있게됩니다. 이때 사용자가 화면을 새로고침을 할때마다 다시 POST 요청이 서버로 전송되고 같은 글이 다시 DB에 저장됩니다.
POST요청 성공과 redirect:/board/list를 주면 의도대로 localhost:8080/mvc/board/list로 변경이되며 새로 고침버튼을 눌러도 서버에 부작용을 일으키지 않게 됩니다.
이것을 PRG 패턴이라고 합니다.
+ PRG 패턴
https://it-eldorado.tistory.com/68
수정)
눈여겨보아야하점은 HttpServletRequest 객체를 받아 id값의 value를 받는 getParameter를 이용해 password를 비교했습니다.
id = pwd가 getParameter로 가는 것이죠.
비밀번호가 일치하지 않으면 msg를 뜨게하고, 일치하면 수정하는 식으로 구성했습니다.
마지막 삭제는 비슷비슷하니 코드와 결과만 올리도록 하겠습니다.
비밀번호를 맞게 입력하면 no 0이 사라진 것을 확인할 수 있습니다.
끝~~~~~!
최종 : https://github.com/kimjongbuem/spring_mvc_basic_book_project
'책 > 스프링 입문 - 자바 객체지향의 원리' 카테고리의 다른 글
8장. 게시판 프로젝트 개발(2) (0) | 2021.09.29 |
---|---|
8장. 게시판 프로젝트 개발(1) (0) | 2021.09.28 |
7장. 스프링 삼각형과 설정 정보 (0) | 2021.09.24 |
6장. 디자인 패턴 (0) | 2021.09.23 |
5장. 객체 지향 설계 5원칙 (0) | 2021.09.19 |
- Total
- Today
- Yesterday
- https://react.vlpt.us/
- Co
- https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
- https://jwprogramming.tistory.com/52
- ㄴ
- https://react.vlpt.us/basic/11-render-array.html
- https://wikidocs.net/68
- https://velog.io/@juno7803/React%EA%B0%80-%ED%83%9C%EC%96%B4%EB%82%9C-%EB%B0%B0%EA%B2%BD
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |