SampleController.java ( 테스트 )
페이지 정보
본문
package com.pkt.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.pkt.model.SampleVO;
import lombok.extern.log4j.Log4j;
@RestController
@RequestMapping("/sample/")
@Log4j
public class SampleController {
// 문자열 데이터는 기본적으로 브라우저에는 text/html타입으로 처리된다.
// 1.단순 문자열 경우
//@RequestMapping(value = "/hello", produces="text/plain;charset=UTF-8") //한글 깨질경우
@RequestMapping("/hello")
public String sayHello() {
log.info("sayHello()");
return "Hello World.. 안녕";
}
// @RestController의 경우 별도의 처리가 없어도 자동으로 JSON로 처리된다.
// 2. 객체를 JSON 으로 반환하는 경우
// Content-Type: appliation/json;charset=utf-8 (브라우저 Response Headers 부분 확인 가능 )
// HTTP Status 406 - ( 에러가 난다면 pom.xml 에 jackson-databind 라이브러리 디펜던시 추가 )
@RequestMapping("/vo")
public SampleVO sendVO() {
SampleVO vo = new SampleVO();
vo.setFirstName("길동");
vo.setLastName("홍");
vo.setMno(123);
return vo;
}
// 3. 컬렉션 타입의 객체를 반환하는 경우 (List)
// JDK 1.7이상의 경우 new ArrayList<>() 와 같이 클래스에 제네릭 타입을 명시하지 않아도 된다.
// 만일 문제가 있다면 new ArrayList<SampleVO>() 예전 방식으로 작성합니다.
@RequestMapping("/list")
public List<SampleVO> sendList(){
List<SampleVO> list = new ArrayList<>();
for(int i=0; i<=10; i++ ) {
SampleVO vo = new SampleVO();
vo.setFirstName("규태");
vo.setLastName("박");
vo.setMno(i);
list.add(vo);
}
return list;
}
// 4. 컬렉션 타입의 객체를 반환하는 경우 (Map)
@RequestMapping("/map")
public Map<Integer, SampleVO> sendMap(){
Map<Integer, SampleVO> map = new HashMap<Integer, SampleVO>();
for(int i=0; i<=10; i++ ) {
SampleVO vo = new SampleVO();
vo.setFirstName("규태");
vo.setLastName("박");
vo.setMno(i);
map.put(i,vo);
}
return map;
}
// 5. ResponseEntity 타입
// @RestController는 별도의 view를 제공하지 않는 형태로 서비스를 실행하기 때문에, 때로는 결과 데이터가 예외적인 상황에서 문제가 발생할 수 있다.
// 실행시 HTTP ERROR 400 에러가 난다.
@RequestMapping("/sendErrorAuth")
public ResponseEntity<Void> sendListAuth(){
return new ResponseEntity<Void>(HttpStatus.BAD_REQUEST); // 400번대 에러
}
// 3.5 조인
// 스프링에서 제공하는 ResponseEntity 타입은 개발자가 직접 결과 데이터 + HTTP의 상태 코드를 직접 제어할 수 있는 클래스이다.
// 상태코드와 데이터를 함께 전송할 수 있기 때문에 좀 더 세밀한 제어가 필요한 경우에 사용한다.
@RequestMapping("/sendErrorNot")
public ResponseEntity<List<SampleVO>> sendListNot(){
List<SampleVO> list = new ArrayList<SampleVO>();
for(int i=0; i<=10; i++ ) {
SampleVO vo = new SampleVO();
vo.setFirstName("규태");
vo.setLastName("박");
vo.setMno(i);
list.add(vo);
}
return new ResponseEntity<List<SampleVO>>(list, HttpStatus.NOT_FOUND); // 400 or 404 에러
}
}
== 설명 ==
2. 객체를 JSON 으로 반환 실패시 pom.xml 추가
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.4</version>
</dependency>
4. 컬렉션 타입의 객체를 반환하는 경우 (Map)
javaScript의 JSON 형식으로 보여지게 된다.
키(key) 와 값(value) 으로 구성되어 '{ }' 표현된다.
5. ResponseEntity 타입
@RestController는 별도의 뷰를 제공하니 않는 형태로 서비스를 실행하기 때문에,
때로는 결과 데이터가 예외적인 상황에서 문제가 발생할 수 있다.
웹의 경우 HTTP 상태 코드가 이러한 정보를 나타내는데 사용합니다.
주로 많이 사용되는 상태 코드는 아래와 같다.
* 100번대 : 현재 데이터의 처리중인 상태
- 100: 데이터의 일부를 서버가 받은 상태
* 200번대 : 현재 데이터의 처리중인 상태
- 200: 에러 없이 정상처리
- 이전글====== ■ ex03 프로젝트 - 생성 및 설정 - ( Ajax 댓글 처리 ) ■ ====== 24.07.31
- 다음글● 회원수정 - 냉무 24.07.31
댓글목록
등록된 댓글이 없습니다.