스프링 MVC controller를 이용한 html리턴, 응답과 요청 방식

송은혜·2022년 3월 24일
1

spring

목록 보기
2/5

서버와 클라이언트 간의 요청(Request)과 응답(Response)는 HTTP메세지 규약을 따르고 있고,

HTTP 메세지는 마우스 우클릭 개발자 도구에서 확인이 가능하다 (검사 → network)

HTTP메세지의 구조는 시작줄, 헤더, 바디로 크게 3가지로 나눌 수 있다.

Request와 Response 실행시 HTTP의 각 구조에 입력되는 사항들이 다르다.

Controller 에서 HTML을 내려주는 방식.정보리턴방식

💡html을 내려주는 과정은 되도록 최소화 시키는게 좋다고 함! 그래서 요즘은 html은 그대로고 Json 데이터만 교체되는 방식을 많이 쓴다고함

⇒ 싱글페이지 어플리케이션**

static 폴더 안에 있는 html 꺼내기

URL 주소 뒤에 파일명.html 을 붙여주면 별도의 컨트롤러 없이도 html을 꺼낼 수 있다.

static 폴더안에 내가 적은 파일명을 가진 html이 있는지 찾아보고 있다면 꺼내서 보여준다.

Redirect 이용하기

return 값에 “redirect:/파일명.html”; 이렇게 해주게되면 , HTTP메세지의 헤더부분에 Location 정보가 등록이 되면서 리턴값으로 입력한 곳으로 redirect 시킨다.

→ API 에서 uri를 입력할텐데, 해당 uri를 입력하면 redirect에 적은 곳으로 이동하게 된다.

타임리프 이용

타임리프는 기본 설정이 templates 폴더에서 html 파일을 찾도록 되어있어서,

templates 폴더에 html파일을 넣고 파일명을 리턴 값으로 주면 , 해당 파일을 꺼내준다.

리턴형 : String

return : “파일명”; (.html은 빼고)

이렇게 하면 파일명에 맞는 html을 알아서 찾아준다.

@ResponseBody 이용

ResponseBody는 HTTP메세지의 바디로 문자열을 바로 쏴준다.

⇒ @ResponseBody 를 하면 view 를 거치지 않고, client화면에 바로 출력된다.

리턴형이 String 일 경우, HTTP의 contentType이 text/html로 적용이 된다.

⇒ return 되는 내용이 , html 시트와 동일하게 된다.

태그를 사용하면 태그들이 적용이 되서 화면에 출력이 되고, 그 외에는 뭘 입력해도 문자열로 출력이 된다.(html에서도 그냥 입력하면 문자열이 나오는 것처럼.)

리턴형이 String이 아닌 모든 경우, Json 형태로 전달이 된다.

HTTP contentType이 application/json 이 된다. (스프링이 json형으로 알아서 변환해준다. 만약 servlet으로 코드를 짠다면 프로그래머가 다 변환해줘야한다.)

Controller 에서 client 요청 정보 받아 올때,

  • @PathVariable
    url 에 입력된 정보를 가져와준다. 필요한 정보를 url에 {name} 이런식으로 표기해주면 해당 정보를 받아옴.
  • @RequestParam html에서 form 태그를 사용하여 정보가 전달 되었을 경우 사용한다. url에서 물음표 뒤에 오는 변수명과 변수값을 받아온다. (GET 요청일경우.) POST 요청일경우는 RequestParam 를 사용해도 url에 변수 정보가 나오지 않는다.
    → 그래도 get요청과 동일하게 값이 출력된다.
    →GET요청은 url에 정보가 입력이 되고 , POST는 HTTP 바디로 정보가 들어간다.

  • @ModelAttribute (모달 어트리뷰트) 객체를 매개변수로 받을 때 사용. 단, 매개변수로 사용할 객체에 Setter가 꼭 있어야한다. 객체를 매개변수로 받아주었으니, 당연 해당 객체의 변수도 사용할 수 있다.
  • @RequestBody RequestBody를 사용하면 JSON 형식으로 정보를 받을 수 있다. HTTP contentType 도 json 으로 저장된다. 페이지는 변하지 않고 json 값만 변화된다.

0개의 댓글