package com.smhrd.web;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.omg.CORBA.Request;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.smhrd.domain.Board;
import com.smhrd.mapper.BoardMapper;
// annotation
// pojo임을 알 수 있도록 인지 시켜줌
@Controller
public class BoardController {
// IOC : Inversion Of Controll (제어 역전)
// 우리가 xml에 적어두면, Spring이 알아서 객체 생성, 사용을 한다.
// DI : Dependency Injection (의존성 주입) 지금은 BoardController가 BoardMapper에 의존하고 있음
@Autowired //self service
BoardMapper mapper;
@RequestMapping("/")
public String base() {
return "base";
}
@RequestMapping("/boardList.do")
public @ResponseBody List<Board> boardList() {
// 일반적인 Controller를 만들면 forward 이동 void로 지정을 해주면 그렇게 된다.
// @ResponseBody 라는 Annotation을 붙혀주게 되면 페이지 이동을 하지 않게 된다.
// DB에서 게시글 목록 꺼내오기
List<Board> list = mapper.boardList();
// ajax에서 사용하는 데이터 포맷(xml, csv, json)
// xml : html처럼 태그와 속성을 이용해서 데이터를 저장하는 방식 / 단점은 필요없는 데이터도 가져오기 때문에 파일 크기가 크다. / 다른 파일도 다운로드를 해야 사용이 가능하다.
// csv : 데이터의 크기 자체가 많이 줄어듬 comma(,)로만 데이터 구분 하기 때문이다. 가독성이 많이 떨어짐
// json : xml과 csv의 장점을 섞은 느낌 크기 -> xml > json > csv 가독성 -> json > xml > csv
// javascript의 객체 형식으로 데이터 저장
// java, python, javascript에서 쉽게 사용이 가능 자바에서는 library를 사용해야 되서 조금 귀찮음
// Spring에서의 응답은 @responseBody만 annotation을 붙혀주게 된다면
// return한내용이 out.print처럼 그대로 내용이담긴다.
// jsp/Servlet에서의 응답 --> out.print("응답할 내용");
return list;
}
@RequestMapping("/boardUpdate2.do")
public @ResponseBody void boardUpdate2(Board vo) {
mapper.boardUpdate2(vo);
}
}