책 p352
댓글 AJAX로 -> 화면 일부만 바꿈
(실제로 백에서는 여러가지 일을 한다 -> 백조 같은...)
이게 REST 방식
현업에서 진짜 많이 쓰임
API 구현해보면 주소만 가져왔을 때 쓸 수 있다 -> 이것도 REST,,
detail.jsp를 안 쓰고 한 화면에서 다 처리할 것이다.
- 모달 footer
모달은 header body footer가 있다.
REST API / RESTFULL
사용하려면 REST controller가 있어야 한다.
sweet alert
https://sweetalert.js.org/
RestController.java
@PostMapping("/restDetail")
public @ResponseBody BoardDTO restDetail(@Param("no") int no) {
//System.out.println("restDetail : " + no);
BoardDTO detail = boardService.detail(no); //dto는 autowired 안씀(어노테이션 없어서 그런가)
System.out.println(detail.getBoard_title());
//System.out.println(detail.getBoard_content());
return detail;
}
@ResponseBody
는 return detail
에다가 prefix /WEB-INF/views/
랑 suffix .jsp
안 붙이고(servlet-context.xml 설정) 그냥 화면에 출력하도록 해준다.
서블릿 때 Recomment.java -> PrintWriter 썼던 거.
html 적고 내용물 적고,,,
postman에서 헤더 확인
아래 모양이 detail이 json으로 날아온 모습
AJAX 쓰는법
java - spring - spring boot - spa(확!!!)
슬슬,,, 어려워지다가 spa = 팍
SPA vs MPA와 SSR vs CSR 장단점 뜻정리
@PostMapping("/commentWrite")
public String commentWrite(CommentDTO comment) {
int result = boardService.commentWrite(comment);
System.out.println("댓글쓰기 결과 : " + result);
return "redirect:/detail";
}
commentWrite return값 때문에 /detail
맵핑 함수에 @Param
대신 @RequestParam
을 써줬다.
public String detail(@RequestParam(value = "no", defaultValue = "10", required = true) String no, Model model) {
required = true
는 필수라는 뜻!
그런데 참이니까 생략해도 된다
@RequestParam(value = "no", defaultValue = "10")
디폴트값도 없애고 아예 다 생략할거면
@RequestParam("no")
주의! resultMap 안쓰면
CommentDTO 에서 mid는 컬럼명과 일치하지만
comment는 컬럼명 ccomment이기 때문에 값이 담기지 않는다...
resultMap의 map은 mapping의 map
자바의 map이 아니다.
mapper 태그 안 최상단에 적어줬다. (하단에 적어도 되긴 된다. )
<resultMap type="commentDTO" id="commentDTOmap">
<result column="컬럼명" property="DTO필드명" jdbcType="" javaType=""/>
</resultMap>
jdbcType="" javaType=""
은 일치해서 생략해도 된다.
컬럼명과 필드명 다른 것만(여기서는 cno, ccomment) 써줘도 들어오지만,
이왕이면 다 써주자.
<resultMap type="commentDTO" id="commentDTOmap">
<result column="컬럼명" property="DTO필드명"/>
</resultMap>
제가 몰랐던 부분을 정리해주셔서 너무 많은 도움이돼요!!!!!! 앞으로도 많이 올려주세용 !!!!