스프링데이터 + JPA/웹 애플리케이션 개발

3. 뷰 환경설정

sdafdq 2023. 11. 4. 16:00

스프링은 주로 타임리프를 밀음

 

 타임리프 장점 중 하나는

이런 게 그냥 웹브라우저로 열어도 열림.

 

다른 건 어떤 프로그램에 의해 랜더링을 한번 거쳐야 열리는 데, 이건 그냥 열림.

 

우선 그냥 보기 위해 기본적인 컨트롤러 하나만 만들어 봄

 

@Controller
public class HelloController {

    @GetMapping("hello")
    public String hello(Model model){
        model.addAttribute("data","hello!!!");
        return "hello";
    }
}

컨트롤러 만들고,

 

GetMapping 시켜서 get 메소드로 hello라는 url로 날아오는 요청은 저 메소드를 실행함.

Model은 argumentResolver에 의해 넣어짐.

Model 자체가 이거 호출하기 전의 메소드, 그러니까 디스패쳐 컨트롤러였나? 그러니까 무슨 고속도로 1차선 같은 그런 컨트롤러가 있는데, 거기서 먼저 받고, 모델도 거기에 있음. 근데 객체니 이게 주소를 넘기는 거니까,

저렇게 model을 따로 return 안해도 알아서 값 잘 들어감.

아마 뷰쪽 렌더링? 할 때 뭐 render(model, view) 이렇게 하겠지.

 

그리고, return hello는 뷰템플릿 이름임.

저게 그 String으로 반환하면은, RestAPI가 아닌 상태에서 String으로 반환하면 그게 뷰 이름이었던거 같음.

그러면 저기서 알아서 뷰 찾아줌.

그러니까,

resources/templates에 있는 뷰를 찾아주는 거 같았음.

저렇게 하면 hello.html 이렇게 찾아줬던 걸로 기억함.

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Hello</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>

뷰 템플릿

 

타임리프의 장점이 저 상태로 그냥 열어도 된다. 타임리프 기능만 실행안될뿐.

 

 

 

그냥 순수한 html 띄우고 싶으면

resources/static

여기다가 넣으면 됨. 

 

 

 

근데, 우리가 이렇게 뷰 화면 바꿔야 할 때가 자주 있는데,

조금만 바꿔도 다시 실행해야 적용됨.

 

라이브러리가 하나 있는데,

implementation 'org.springframework.boot:spring-boot-devtools'

이 라이브러리가 하나 있음.

 

이거 한 다음에,

이제 뷰에서 조금 뭐 바꾸고

그 파일만 recompile 해주면 (ctrl + shift + F9)

 

브라우저로 와서 새로고침 해 주면 바뀌어 있음.

 

 

근데 이거 리컴파일도 일일이 하는 거 싫다, 하면

application.properties에 

spring.thymeleaf.cache=false

 

이거 추가하고,

이거 클릭해서

 

edit configurations

들어가서,

 

modify options 해서 추가해 주는데,

 

on Update action 에 update resources를 해 준다.

on Frame deactivation 도 update resources로 설정 해 준다.

 

이러면 뭔가 업데이트 시 resources만 업데이트하고 리빌드 해 준다.

 

저거 설정으로 update classes and resources도 있는데, 컨트롤러에서 값 바꿨을 때 그럴 때 쓰라고 말하는 건가?

만약 템플릿만 자동으로 리빌드 하고 싶으면 resources만 하고, 저런 컨트롤러에서 넘기는 값 까지 리빌드 하고 싶으면 classes도 같이.

 

이러면 이제 그냥 저장하고 브라우저 새로고침만 해주면 됨.

 

아쉽지만 자동 새로고침 해주는 건 못 찾았음.