Step by Step

Spring 공부 2021-04-07

unboxing 2021. 4. 7. 16:35

뉴렉처 Spring 57강

 

문서 출력방법 4가지

  • 서블릿 객체를 얻어서 문자열 출력하기
  • @ResponseBody 설정을 통한 문자열 출력하기
  • ResourceViewResolver를 이용한 문자열 출력하기
  • TilesViewResolver를 이용한 문서 출력하기

ResourceViewResolver 와 TilesViewResolver 을 이용한 방법은 전 강의에서 배웠고 나머지 두개의 방법또한 알아본다

( 그때그때 선택적으로 출력방법을 골라서 사용하면된다 )

 

 

서블릿 객체를 얻어서 문자열 출력하기 (컨트롤러에서 직접 출력하기)

뉴렉처 Spring 57강 캡처

 

HomeController에서 테스트 해보니 문서가 정상적으로 컨트롤러에서 직접 출력되는것을 볼수있다.

(ViewResolver없이 어떠한 페이지를 출력할 일이있을때 사용)

 


 

@ResponseBody 설정을 통한 문자열 출력하기

 

매핑된 메소드 아래에 @ResponseBody 를 사용하여 ViewResolver를 거치지않고 곧바로 문자열로 출력되길 원할때 사용

(텍스트만 출력할 일이있을때 사용한다 )

 

 


 

 

 

 

@RestController와 한글출력

 

RestController 문서를 만들어 제공해주는것이 아니라 데이터를 제공해주는것이 주된 컨트롤을 만들때 사용

( ResponseBody를 사용한것과 같은효과를 가지게된다 )

( * 사용시 한글출력에 문제가 발생하기때문에 어떤설정을 해주어야하는지 알아본다 )

 

 

Controller패키지에 Class를 하나추가한다 이름은 NoticeController로 만들고 패키지는 api 

(데이터를 제공해주는 컨트롤러)

 

클래스위에 RestController를 어노테이션 적용해주고

현재 다른패키지안에 NoticeController가 존재하기때문에 명시적으로 아이디를 ( ) 안에 부여해주도록한다.

controller.api.NoticeController

 

아이디를 부여하지않았을경우에는 중복되어서 하단의 주석처리 처럼 Ioc 컨테이너에 담기기때문에 오류가 발생한다.

 

 

 

 

앞으로 JavaScript 개발자들에게 데이터를 제공할때는 RestController를 만들어서 전달한다.

 

문제는 반환값안에 한글을 넣었을때 깨지는 현상이 발생한다.

 

 

 

해결하기위해 servlet-context.xml 로 이동해준다.

 

사용자 요청을 수반할수있는 기능을 가진 annotation-driven을 열어서 

Springframework 가 제공해주고있는 converter를 가지고 인코딩 방식을 설정하는 내용을 작성해준다.

 

servlet-context.xml 

이렇게 인코딩방식을 설정해주면 한글이 깨지지 않고 잘 출력되는것을 확인할수있다.


 

JSON 출력하기

 

서버가 클라이언트(javaScript)에게 데이터를 보낸다.

뉴렉처 Spring 59강 캡처

 

JavaScript에 데이터를 포장해서 보내는 방법중 가장 좋은방법 또한 JSON

어떠한 형태의 문자열을 클라이언트에게 보내는방식

 

 

RestController인 NoticeController로 이동해

데이터를 요청하기위해 서비스객체를 가져온다.

가져온 서비스객체는 Autowired를 이용해 객체를 생성해준뒤 

list가 매핑된 메소드안에서 List<Notice> 를 반환값으로 객체의getList 값을 반환값으로 해준다.

 

NoticeController

그후에 pom.xml로 이동해서 객체를 JSON형태로 변환 할 수 있는 jackson 라이브러리를 다운받아준다.

 

pom.xml

서버를 다시 시작한뒤 http://localhost:8080/api/notice/list 주소로 접속했을때 JSON 형태가 보인다.

 

 

마찬가지로 목록을 보여주는것이아닌 Notice만 반환값을 Notice로 바꿔준뒤 Notice의 0번째에있는 값을 반환한다면

Notice에 0번째있는 값을 JSON형태로 반환하는것을 확인할수있다.

 

NoticeController

Spring 을 사용하면 간단하게 객체를 던져주는것만으로 JSON 형태로 반환하는것을 사용할수있다.


 

지금까지 다루었던 내용과 이번에 다루게될 사용자 입력 5가지

 

지금까지 다루었던 내용

뉴렉처 Spring 60강

SpringMVC 를 공부하면서 StringMVC의 FrontController의 매핑방식(xml,annotation)

그리고 ViewResolver와 tiles ViewResolver 또는 Stirng/JSON 으로 출력하는방식


앞으로 나갈 내용은 입력에 관한내용

 

입력을 다룰때 값으로 입력받는것은 크게 5가지로 분류된다.

값의 종류
QuertString URL로 전달되는 문자열
POST 사용자의 입력으로 전달되는 문자열
Path 경로로 전달되는 문자열
Cookie 브라우저에 보관하고 있던 문자열
Header 요청 헤더로 전달되는  문자열

 

뉴렉처 Spring 60 강 완