728x90

인프런의 김영한님 Spring 강의 복습 및 정리

 

웹개발의 3가지 방법

1.정적 컨텐츠 : 서버의 동작 없이 요청한 HTML 파일을 그대로 내려주는것

2.MVC와 템플릿 엔진 : 서버에서 일부 동작을 통해 HTML을 가공하여 파일을 내려주는것 (JSP, PHP)

3.API : HTML로 파일을 내리는 것이아니라 JSON 형태의 데이터를 반환하는 방법

 

정적컨텐츠

스프링에서도 정적컨텐츠(Static Content) 기능을 제공한다.

 

서버 실행후 해당 파일 url 연결

해당 html 파일의 내용이 그대로 출력된다.

정적컨텐츠의 경우 요청한 html파일을 가공없이 그대로 출력해준다. 또한 동적 프로그래밍이 불가능하다.

 

MVC와 템플릿 엔진

MVC : Model, View, Controller

MVC 모델이 도입되기 이전에는 View에서 데이터가공까지 모두 처리하였다. ex) JSP, PHP

View는 화면과 관련된 일, 비즈니스 로직이나 서버 뒷단에 관련된 동작들은 Controller나 Back-end 비즈니스 로직에서 , View와 Controller, Back-end 에서 주고받는 데이터를 Model이라고 하는 데이터에 담아서 주고받는 구조로 동작한다.

 

Hello-mvc로 Parameter name을 가지고 GET 요청을 통해 서버에 요청하면 model객체에 addAttribute를 통해 파라미터로 받은 name값을 담아서 hello-template으로 전송한다. return의 목적지로 model 객체가 전송된다.

 

데이터를 전송할 때 사용하는 Model 객체의 경우 메소드의 파라미터로 선언만 해주면 Spring에서 만들어준다. Model 객체를 사용하기 위해 따로 메모리를 할당할 필요가 없으며 Spring에서 만들어준것을 사용하기만 하면된다.

addAttribute를 통해 저장된 값은 JSON형태이며 "name"이 key이고 파라미터로 전달받은 name이 value가 된다.

 

spring코드에서 반환되는 데이터가 전달되는 hello-template.html 이다.

Model 객체로 전달된 데이터의 key가 name인 value를 출력한다.

붉은색 선으로 밑줄 쳐져있는 name이 넘겨주는 파라미터 이름이고 푸른색 선이 가리키는 spring은 해당 파라미터의 값이된다.

전달받은 값을 addAttribute("name", name) 으로 Model 객체에 넣어주는데, key가 "name"이 되고 파라미터로 전달받은 값이 name에 들어가게된다. 즉 key : name, value : spring이 된다.

@RequestParam 어노테이션에 require=false를 넣어주는것은 해당 파라미터에 값이 없어도 실행되게 하는것이다.

파라미터 값을 채우지 않을 경우 default text인 hello! empty가 출력된다.

 

API

@ResponseBody 어노테이션을 사용할 경우 return에 의한 반환값이 그대로 HTTP response의 body에 삽입되어 HTML에 출력된다.

return "hello "+name 에 의해 name파라미터로 전송된 pw4ngc0가 삽입되어 출력됨을 알 수 있다.

 

API를 통한 객체 반환

Hello 객체에 name값을 넣어 반환한다.

객체를 반환할 경우 해당 객체의 데이터를 JSON형태로 출력해준다.

프론트에서 해당 객체를 가공하여 사용하는 것 같다.

 

@ResponseBody 어노테이션의 메소드가 객체를 반환할 경우 해당 객체를 JSON형태로 변환하여 HTTP 응답으로 넘겨준다.

728x90

'Programming > Spring' 카테고리의 다른 글

웹 MVC 개발  (0) 2022.01.08
스프링 빈과 의존관계  (0) 2022.01.06
회원 관리 예제  (0) 2021.12.30

+ Recent posts