Spring 공부 2021-04-07
뉴렉처 Spring 57강
문서 출력방법 4가지
- 서블릿 객체를 얻어서 문자열 출력하기
- @ResponseBody 설정을 통한 문자열 출력하기
- ResourceViewResolver를 이용한 문자열 출력하기
- TilesViewResolver를 이용한 문서 출력하기
ResourceViewResolver 와 TilesViewResolver 을 이용한 방법은 전 강의에서 배웠고 나머지 두개의 방법또한 알아본다
( 그때그때 선택적으로 출력방법을 골라서 사용하면된다 )
서블릿 객체를 얻어서 문자열 출력하기 (컨트롤러에서 직접 출력하기)

HomeController에서 테스트 해보니 문서가 정상적으로 컨트롤러에서 직접 출력되는것을 볼수있다.
(ViewResolver없이 어떠한 페이지를 출력할 일이있을때 사용)


@ResponseBody 설정을 통한 문자열 출력하기
매핑된 메소드 아래에 @ResponseBody 를 사용하여 ViewResolver를 거치지않고 곧바로 문자열로 출력되길 원할때 사용
(텍스트만 출력할 일이있을때 사용한다 )

@RestController와 한글출력
RestController 문서를 만들어 제공해주는것이 아니라 데이터를 제공해주는것이 주된 컨트롤을 만들때 사용
( ResponseBody를 사용한것과 같은효과를 가지게된다 )
( * 사용시 한글출력에 문제가 발생하기때문에 어떤설정을 해주어야하는지 알아본다 )
Controller패키지에 Class를 하나추가한다 이름은 NoticeController로 만들고 패키지는 api
(데이터를 제공해주는 컨트롤러)

클래스위에 RestController를 어노테이션 적용해주고
현재 다른패키지안에 NoticeController가 존재하기때문에 명시적으로 아이디를 ( ) 안에 부여해주도록한다.
controller.api.NoticeController


앞으로 JavaScript 개발자들에게 데이터를 제공할때는 RestController를 만들어서 전달한다.
문제는 반환값안에 한글을 넣었을때 깨지는 현상이 발생한다.


해결하기위해 servlet-context.xml 로 이동해준다.
사용자 요청을 수반할수있는 기능을 가진 annotation-driven을 열어서
Springframework 가 제공해주고있는 converter를 가지고 인코딩 방식을 설정하는 내용을 작성해준다.
servlet-context.xml

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

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

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가지
지금까지 다루었던 내용

SpringMVC 를 공부하면서 StringMVC의 FrontController의 매핑방식(xml,annotation)
그리고 ViewResolver와 tiles ViewResolver 또는 Stirng/JSON 으로 출력하는방식
앞으로 나갈 내용은 입력에 관한내용
입력을 다룰때 값으로 입력받는것은 크게 5가지로 분류된다.
값의 종류 | |
QuertString | URL로 전달되는 문자열 |
POST | 사용자의 입력으로 전달되는 문자열 |
Path | 경로로 전달되는 문자열 |
Cookie | 브라우저에 보관하고 있던 문자열 |
Header | 요청 헤더로 전달되는 문자열 |
뉴렉처 Spring 60 강 완