Spring
스프링은 서블릿(not POJO)를 사용하지 않고
비동기 처리를 할 수 있음
ViewResolver가 동작할 타이밍
redirect:이 없으니까
./true.jsp 응답할 수 있음
ViewResolver의 개입을 막는 방법
- 메서드 시그니처에 @ResponseBody 추가
- class에 @RestController 추가
@RestController는 부트에서 만들어짐
text 반환
@RequestMapping(value="/checkMID.do", method=RequestMethod.POST)
public @ResponseBody String checkMID(MemberDTO memberDTO) {
System.out.println("CheckController.java checkMID() POST 시작");
memberDTO.setCondition("MEMBER_ID_CHECK");
memberDTO = memberService.selectOne(memberDTO);
String result = "false";
if(memberDTO != null) {
result = "true";
}
return result;
}
Object 반환
@RequestMapping(value="/searchBoard.do", method=RequestMethod.POST)
public @ResponseBody List<BoardDTO> searchBoard(@RequestBody BoardDTO boardDTO) {
System.out.println("SearchBoardController.java searchBoard() POST 요청 시작");
// 데이터 로그
System.out.println("SearchBoardController.java searchBoard() search_keyword : [ "+boardDTO.getSearch_keyword()+" ]");
System.out.println("SearchBoardController.java searchBoard() search_content : [ "+boardDTO.getSearch_content()+" ]");
if(boardDTO.getSearch_content() != null) {
String search_content = boardDTO.getSearch_content();
System.out.println(search_content);
String trim_content = search_content.trim();
System.out.println(trim_content.length());
boardDTO.setSearch_content(trim_content);
System.out.println(boardDTO.getSearch_content());
}
if(boardDTO.getSearch_keyword().equals("WRITER")) {
boardDTO.setBoard_condition("SELECT_BY_WRITER");
if(boardDTO.getSearch_content().length() <= 0) {
boardDTO.setSearch_content("작성자 검색을 공백으로 검색하면 나오는 게시글");
}
}
else if(boardDTO.getSearch_keyword().equals("CONTENT")) {
boardDTO.setBoard_condition("SELECT_BY_CONTENT");
if(boardDTO.getSearch_content().length() <= 0) {
boardDTO.setSearch_content("내용 검색을 공백으로 검색하면 나오는 게시글");
}
}
else if(boardDTO.getSearch_keyword().equals("ALL")) {
boardDTO.setBoard_condition("ALL");
}
List<BoardDTO> datas = this.boardService.selectAll(boardDTO);
System.out.println("안녕하세요");
System.out.println(datas.size());
for (BoardDTO data : datas) {
System.out.println(data);
}
System.out.println("반가오ㅏ요");
System.out.println("SearchBoardController.java searchBoard() POST 요청 끝");
return datas;
}
스프링 특성상 다른 언어와 붙는 경우가 많기 때문에
자바에서 쓰는 ArrayList를 쓰기보다
다른 언어에서도 사용하는 List를 쓰는 것이 좋음
비동기 반환값이 여러 개 일때는 dataType(반환 타입)을 작성해야됨
String 보다 무거운 것이 반환되면 JSON으로 지정하는 것이 안정성에 좋음
js에서 json으로 반환을 받을 시
컨트롤러에서도 json으로 데이터를 받음
요청 타입 contentype : application/json
보낼 데이터 data : JSON.stringify({변수명 : 데이터})
@RequestBody 를 추가함으로써 주고 받는 데이터가
JSON임을 알 수 있음
'javaboiii의 Spring' 카테고리의 다른 글
Spring - 트랜잭션 (0) | 2024.10.17 |
---|---|
Spring - AOP 관점 지향 프로그래밍 (1) | 2024.10.15 |
Spring - 성능개선(Controller맛) (2) | 2024.10.10 |
Spring - ViewResolver와 요청 처리 흐름 (feat.@controller) (0) | 2024.10.08 |
Spring - SpringFramework구조의 흐름 (1) | 2024.10.07 |