20240219 Spring 5 - REST, AJAX

Leafy·2024년 2월 19일
1

중앙_자바

목록 보기
41/76

책 p352

REST 방식으로 바꿈

댓글 AJAX로 -> 화면 일부만 바꿈
(실제로 백에서는 여러가지 일을 한다 -> 백조 같은...)

이게 REST 방식

현업에서 진짜 많이 쓰임
API 구현해보면 주소만 가져왔을 때 쓸 수 있다 -> 이것도 REST,,

detail.jsp를 안 쓰고 한 화면에서 다 처리할 것이다.

  • 모달 footer
    모달은 header body footer가 있다.

REST API / RESTFULL

사용하려면 REST controller가 있어야 한다.


sweet alert
https://sweetalert.js.org/


ResponseBody

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

@ResponseBodyreturn detail에다가 prefix /WEB-INF/views/랑 suffix .jsp 안 붙이고(servlet-context.xml 설정) 그냥 화면에 출력하도록 해준다.

서블릿 때 Recomment.java -> PrintWriter 썼던 거.
html 적고 내용물 적고,,,

postman에서 헤더 확인

아래 모양이 detail이 json으로 날아온 모습

AJAX 쓰는법

정리 잘 된 링크
https://scoring.tistory.com/entry/AJAX%EB%9E%80-JQuery%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-AJAX%EC%82%AC%EC%9A%A9%EB%B2%95

SPA

java - spring - spring boot - spa(확!!!)

슬슬,,, 어려워지다가 spa = 팍

SPA 그리고 SSR과 CSR

SPA vs MPA와 SSR vs CSR 장단점 뜻정리



comment 기능

@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 (mapper.xml)

주의! 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>

따로 해볼 것들

  • 댓글 기능 ajax로 바꿀까 한다,,,
  • notice(공지사항) 페이지
  • 보드리스트에서 글번호 누르면 모달창으로 detail이 보이는데 여기도 댓글이 보이는지.

2개의 댓글

comment-user-thumbnail
2024년 2월 19일

제가 몰랐던 부분을 정리해주셔서 너무 많은 도움이돼요!!!!!! 앞으로도 많이 올려주세용 !!!!

1개의 답글