정적 / 동적 페이지

김나영·2023년 6월 27일
0

Spring

목록 보기
9/38

정적 페이지 처리하기

1) 일반적

@GetMapping("/static-hello")
public String hello() {
    return "hello.html";
}
  • SpringBoot 서버에 html 파일을 바로 요청하면 해당 html 파일을 static 폴더에서 찾아서 반환해줌

  • Controller를 거쳐서 html을 반환할 수도 있지만 이미 완성된 정적인 html 파일을 Controller를 통해서 반환할 필요는 없음

  • Controller를 통해서 반환하는 것을 테스트 하려면 implementation 'org.springframework.boot:spring-boot-starter-thymeleaf’ 해당 dependency를 주석 처리해야 테스트가 가능

2) Redirect

@GetMapping("/html/redirect")
public String htmlStatic() {
    return "redirect:/hello.html";
}
  • static 폴더의 html 파일을 Controller를 통해서 처리하고 싶다면

  • "redirect:/hello.html" redirect 요청을 문자열로 반환하면 http://localhost:8080/hello.html 요청이 재 수행되면서 static 폴더의 파일을 반환 가능

3) Template engine 에 View 전달

@GetMapping("/html/templates")
public String htmlTemplates() {
    return "hello";
}
  • 타임리프 default 설정

    • prefix: classpath:/templates/

    • suffix: .html

      /resources/templates/hello.html

  • 브라우저에서 바로 접근하지 못하게 하고 싶거나 특정 상황에 Controller를 통해서 제어하고 싶다면

  • templates 폴더에 해당 정적 html 파일을 추가하고 해당 html 파일명인 "hello" 문자열을 반환하여 처리 가능 (.html은 생략가능!)


동적 페이지 처리하기

private static long visitCount = 0;
...
@GetMapping("/html/dynamic")
public String htmlDynamic(Model model) {
    visitCount++;
    model.addAttribute("visits", visitCount);
    return "hello-visit";
}
  • Client 의 요청을 Controller에서 Model 로 처리

    • DB 조회가 필요하다면 DB 작업 후 처리한 데이터를 Model에 저장
  • Template engine(Thymeleaf) 에게 View, Model 전달

    • View: 동적 HTML 파일
    • Model: View 에 적용할 정보들
  • Template engine

    • ViewModel을 적용 → 동적 웹페이지 생성

      • 예) 로그인 성공 시, "로그인된 사용자의 Nickname"을 페이지에 추가
      • Template engine 종류: 타임리프(Thymeleaf), Groovy, FreeMarker, Jade, JSP 등
  • Client(브라우저)에게 View(동적 웹 페이지, HTML)를 전달


Thymeleaf

  • 동적 페이지 처리를 위한 템플릿 엔진

  • 추가하면 자동으로 Controller에서 html 파일 찾는 경로를/resources/templates 로 설정

<div>
  (방문자 수: <span th:text="${visits}"></span>)
</div>
  • visits : 방문 횟수 (visitCount)

0개의 댓글