Spring 입문 1주차 (2)

신성훈·2024년 5월 14일

TIL

목록 보기
17/162
post-thumbnail

오늘의 학습 키워드

  • Controller
  • 정적 페이지와 동적 페이지
  • 데이터를 Client에 반환하는 방법

Controller

  • API 마다 파일을 만들 필요 없다.
    -보통 하나의 Contoller 에 모든 API를 넣지는 않는다.
    -유사한 성격의 API 를 하나의 Controller 로 관리

  • @Controller는 해당 클래스가 Controller의 역할을 수행할 수 있도록 등록해줄 수 있다.

  • @GET, @POST, @PUT, @DELETE
    -각각의 HTTP Method에 매핑되는 애너테이션입니다.

  • @RequestMapping -> 중복되는 URL를 단축시켜줄 수 있습니다.

@Controller
@RequestMapping("/api")
public class HelloController {
    @GetMapping("/hello")
    @ResponseBody
    public String hello() {
        return "Hello World";
    }
    @GetMapping("/get")
    @ResponseBody
    public String get() {
        return "GET Method 요청";
    }
    @PostMapping("/post")
    @ResponseBody
    public String post() {
        return "POST Method 요청";
    }
    @PutMapping("/put")
    @ResponseBody
    Spring Master - 1주차 83
    public String put() {
        return "PUT Method 요청";
    }
    @DeleteMapping("/delete")
    @ResponseBody
    public String delete() {
        return "DELETE Method 요청";
    }
}

정적 페이지와 동적 페이지

  • 정적 페이지
    -SpringBoot 서버에 html 파일을 바로 요청하면 해당 html 파일을 static 폴더에서 찾아서 반환해줌
    -템플릿 엔진을 적용한 상태에서 static 폴더의 html 파일을 Controller를 통해서 처리는
    Redirect 요청을 문자열로 반환하면 요청이 재 수행되면서 static 폴더의 파일을 반환할 수 있다.

    -외부 즉, 브라우저에서 바로 접근하지 못하게 하고 싶거나 특정 상황에 Controller를 통해서 제어하고 싶다면 templates 폴더에 해당 정적 html 파일을 추가하고 해당
    html 파일명인 " hello " 문자열을 반환하여 처리할 수 있습니다. ( .html 은 생략가능!)

  • 동적 페이지

    -동적 페이지 처리 과정

  1. Client 의 요청을 Controller에서 Model 로 처리합니다.
    a. DB 조회가 필요하다면 DB 작업 후 처리한 데이터를 Model에 저장합니다.

  2. Template engine(Thymeleaf) 에게 View, Model 전달합니다.
    a. View: 동적 HTML 파일
    b. Model: View 에 적용할 정보들

  3. Template engine
    a. View에 Model을 적용 → 동적 웹페이지 생성
    i. 예) 로그인 성공 시, "로그인된 사용자의 Nickname"을 페이지에 추가
    ii. Template engine 종류: 타임리프(Thymeleaf), Groovy, FreeMarker, Jade, JSP 등

  4. Client(브라우저)에게 View(동적 웹 페이지, HTML)를 전달 해줍니다.

    -Thymeleaf

    • View 정보
      "hello-visit" → resources/templates/hello-visit.html

      <div>
      	(방문자 수: <span th:text="${visits}"></span>)
      </div>
      
    • Model 정보
      visits: 방문 횟수 (visitCount)
      예) 방문 횟수: 1,000,000 번

      <div>
      	(방문자 수: <span>1000000</span>)
      </div>

데이터를 Client에 반환하는 방법

  • JSON 데이터를 요청하는 API를 통해 브라우저에서 html을 조작하여 반영하는 식

  • JSON 데이터 반환하는 방법
    -템플릿 엔진이 적용된 SpringBoot에서는 Controller에서 문자열을 반환하면 templates 폴더에서 해당 문자열의 .html 파일을 찾아서 반환
    -html 파일이 아닌 JSON 데이터를 브라우저에 반환하고 싶다면 해당 메서드에 @ResponseBody 애너테이션을 추가
    -반환값 String : 자바에서는 JSON 타입 지원 안하기 때문에 JSON -> String 변환
    -반환값 객체 : Spring에서는 자바의 객체 -> JSON 자동 변환

  • @RestController = @Controller + @ResponseBody
    -사용 시 해당 클래스의 모든 메서드에 @ResponseBody 애너테이션이 추가되는 효과를 부여

📝오늘의 회고

쉴틈이 없다. 배울껀 많고 시간이 부족하다.
오늘도! 쳐지지 말고 포기하지말고 힘내서 가보자고~~~

profile
조급해하지 말고, 흐름을 만들고, 기록하면서 쌓아가자.

0개의 댓글