월루를 꿈꾸는 대학생

[Spring Boot 입문] 스프링 웹 개발 기초 본문

Programing/Spring Boot

[Spring Boot 입문] 스프링 웹 개발 기초

하즈시 2023. 1. 8. 01:35
728x90

1. 정적 컨텐츠 

- 그냥 파일 그대로 웹브라우저 보여줌 

- /resources/static 폴더 안에 html 넣어주면 됨 

- url에 html파일 넣어주면 정적으로 웹에서 보여줌 

 

흐름

1. hello-static.html 치고 들어감 

2. 내장 톰캣에서 요청 받음

3. 스프링 컨테이너에 해당 컨트롤러가 있나 확인 !! 우선순위 

4. 컨트롤러가 없으면 /static 폴더 안에서 매칭되는 html 파일이 있나 확인 

5. 있으면 반환

 


 

2. MVC와 템플릿 엔진 

- html을 그냥 주는게 아닌 서버단에서 동적으로 변경하고 줌 

- 모델, 뷰 , 컨트롤러 

- 첨에는 jsp로 뷰에다가 다 했다가 mvc 스타일로 관심사를 나눠서 코딩을 한다 ! 

 

 

 

ctrl + p : 옵션을 확인할 수 있다 

@GetMapping("hello-mvc")
// url에서 파라미터 name을 받음
// value : 값
// required : 디폴트가 true이지만 false로 하면 굳이 value를 안 넣어도 됨 
public String helloMvc(@RequestParam(value= "name" , required = false) String name , Model model){

 

흐름

1. 웹브라우저로 이동 

2. 내장톰캣 거침 톰캣이 스프링 컨테이너로 던짐 

3. 컨트롤러가 우선순위가 높으니 먼저 확인 

4. 컨트톨러랑 url 매칭이 된 게 있고 확인 

5. 메서드 호출 

6. 리턴할 때 해당 html 호출하고 model에 값 넣어서 넘겨줌 

7. 뷰리졸버가 받음 ( 화면 관련 해결자 - 뷰 찾고 템플릿 연결 ) 

8. 변환한 html을 웹브라우저로 넘김 


 

3. API

- html로 내리는가 api로 데이터 보내는가! 

// http에서 헤더부분과 바디부분이 있는데 바디쪽에 리턴값을 직접 넣어주겠다!!
// name이 kim이면 리턴값이 hello kim 이게 그대로 감 .. 뷰 이런 거 없음 문자 그대로 감 
@ResponseBody

- 리턴값에 있는 문자 그대로 감 ! 

@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name){
    Hello hello = new Hello();
    hello.setName(name);
    // 리턴을 객체로 함
    return hello;
}

- 객체를 리턴하는 경우 객체의 변수가 키 , 해당 변수가 가지고 있는 값이 value로 변환되어 리턴됨 

 

@ResponseBody 원리 

 

흐름

1. url로 검색 

2. 내장 톰켓 서버에서 url 요청을 받고 스프링 컨테이너에 던짐 

3. 컨트롤러에서 확인 

4. 해당 메서드 호출함 다만 @ResponseBody가 있음 이 경우 view resolver가 동작 안 하고 httpMessageConverter가 동작 

5. http 응답 body부분에 리턴값을 넣어서 반환 

6. 반환이 String이면 그대로 넣어서 반환 . 객체가 반환인 경우 기본으로 Json으로 데이터 만들어서 http body 부분에 넣어서 반환 

 

 

출처

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard

 

 

728x90

'Programing > Spring Boot' 카테고리의 다른 글

[Spring 입문] 웹 mvc개발  (0) 2023.01.20
[Spring Boot 입문] 회원 관리  (0) 2023.01.11
[SpringBoot 입문] 환경세팅  (0) 2023.01.07
[Spring Boot] 템플릿 상속  (0) 2023.01.01
[Spring Boot] static 디렉토리  (0) 2023.01.01