Loading...

Spring / / 2022. 2. 27. 14:22

스프링 8강. mustache

반응형

새로운 컨트롤러를 하나 더 만들어보자.

반드시 first 폴더 안에 만들어야

컴포넌트 스캔이 가능하다.

package site.metacoding.first;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

// 파일을 리턴함
// RequestDispatcher dis = request.getRequestDispatcher("파일명");
// dis.forward(request, response);
@Controller
public class PostController {

    @GetMapping("/writeForm")
    public String writeForm() {

        return "writeForm";
        // 글자를 리턴하는게 아닌 파일을 리턴함 -> 템플릿(뷰)이 필요!
    }
}

UserController에는 @RestController를 붙여줬는데

PostController에는 @Controller 어노테이션을 붙여준다.

 

스프링이 컴파일할 때

@RestContoller도 찾고,

@Controller도 찾은 다음

둘 다 new해주는 것은 같지만

return의 기능이 다르다.

 

@RestContoller는 버퍼로 리턴한다.

 

@Controller는 이 리턴 값을 파일명으로 본다.

 

RestContoller는 절대 sendRedirect 하지 않고

requestDispatcher로 forward 하여

버퍼로 데이터를 전송하고,

 

Controller는 리턴시에 파일을 리턴하는 컨트롤러이다.

 


 

html에 자바 코드를 섞을 수 있는게있는 게 jsp만 있는 게 아니다.

jsp와 같은 것을 Template engine이라고 한다.

 

우리는 Mustache 템플릿 엔진을 사용할 것이다.

 

https://mvnrepository.com/ 

 

springboot mustache 검색

 

원래는 처음 프로젝트 설정할 때

라이브러리 체크하면서 같이 받을 수 있다.

 

 

 

 

 

빙글빙글 돌면서 다운로드 되고, buildpath 잡는 거 꼭 기다려야 한다.

 

이걸 다운받으면 html안에 자바 코드 적을 수 있다!!

 

라이브러리를 새로 추가 했으니 서버를 껐다 켜주자.

터미널 창에 Ctrl + C를 누르면 서버가 종료된다.]

 


 

지정해둔 파일이름과 대소문자도 구별해서 잘 적어주자.

@Controller가 붙은 컨트롤러의 리턴 파일은

무조건 templates 폴더 안에서 찾는다.

 

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>글쓰기 페이지입니다.</h1>
</body>
</html>

 

 

 

내가 파일을 리턴하고 싶다?

-> @Controller 사용

 

버퍼 달아서 데이터를 응답하고 싶다?

-> @RestController 사용 

 

 

네이버처럼 페이지(파일)를 주고 싶으면

@Controller를 사용하고,

 

공공 데이터를 받아올 때처럼

데이터를 주고 싶으면

@RestContoller 사용한다.

 


updateForm 추가

 

package site.metacoding.first;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

// 파일을 리턴함
// RequestDispatcher dis = request.getRequestDispatcher("파일명");
// dis.forward(request, response);
@Controller
public class PostController {

    @GetMapping("/writeForm")
    public String writeForm() {

        return "writeForm";
        // 글자를 리턴하는게 아닌 파일을 리턴함 -> 템플릿(뷰)이 필요!
    }

    @GetMapping("/updateForm")
    public String updateForm() {

        return "updateForm";
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>글 수정 페이지입니다.</h1>
</body>
</html>

 

 

 

 

[출처]

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com


메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 

 

반응형