SampleController.java ( 테스트 ) > SPRING1

본문 바로가기
사이트 내 전체검색

SPRING1

SampleController.java ( 테스트 )

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 96회 작성일 24-07-31 15:55

본문


fbef5f08118f362b42fb97f979c45caf_1698029420_909.png 




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: 에러 없이 정상처리 

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

공지사항
자유게시판
질문답변
1:1문의

 

별명 : 터푸가위
주소 : 부산시 동래구 명장로20번길 90
대표 : 박규태
메일 : dancepkt@******.com

접속자집계

오늘
57
어제
371
최대
10,760
전체
268,430
Copyright © dancePKT . All rights reserved.