Legday
[STS] View Resolver 사용하기 본문
View Resolver란
스프링 백엔드 에서 데이터를 처리하여 View의 영역으로 전달해야 하는데 이때 View Resolver가 데이터파일을 찾아 View에게 전달해 주는 역할을 한다.
1) 초기 설정!
- application.properties 클릭!

- 아래와 같이 쳐줍니다!!!
- prefix 는 나중에 파일경로를 찾을때 앞에 있는 주소이고
- suffix 는 마지막 파일명.확장자를 입력해야 하는데 이 확장자를 미리 저장해주는것
- 아래 두 코드를 통해 사용자는 파일명만 요청하면 ViewResolver가 알아서 찾아준다!
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

2) 필요한 라이브러리 다운!
- 검색창에 tomcat.jasper 검색!
- Tomcat Embed Jasper 클릭!

- 버전이 정말 중요하다
- 현재 자바 11버전을 사용하기 때문에 9.0.22 버전까지 호환이 된다 (나중에는 문서를 봐야 버전을 알 수 있다.)

- Gradle 을 클릭하고 아래 코드를 복사!!

- build.gradle 클릭하여 열어준다

- dependencies 밑에 그대로 붙혀넣기!( 이때 줄맞춤을 반드시 해줘야한다!!) 일단 저장만하고 다시 mvn repository 로 이동!( 최종 설정은 맨마지막에 할겁니다!)
- 그리고 version 을 9.0.65로 바꿔줘야 한다!!

- 검색창에 JSTL 을 검색하고 똑같은 이름이 여러개 나오는데 빨간 밑줄처럼 써진것을 클릭!

- 1.2 버전 클릭!

- 아까와 똑같이 Gradle 클릭후 복사!!

- 줄맞춤은 필수입니다!!

- 다시 mvn repository 로 이동!( 최종 설정은 맨마지막에 할겁니다!)
- 검색창에 gson 입력

- 안정적인 2.9.0 버전을 쓸 것 입니다.

- 아까와 똑같이 복사해서

- build.gradle 에 붙혀넣기

- 최종적용 하기
- 마우스 우클릭 -> Gradle -> Refresh Gradle Project 를 클릭해주고 기다리면 라이브러리 적용 끝!


3) home.html 을 만들어 ViewResolver가 찾아갈 수 있게 생성!
- 첫번째로 ViewResolver는 root파일을 찾아간다 이때 root파일 경로는 /프로젝트명/src/main/webapp 이다.
- 이 root파일 경로는 아까 다운받은 tomcat jasper 라이브러리가 자동으로 설정해준다.
- 아래사진처럼 root파일 경로를 폴더생서을 하여 저렇게 만들어준다
- main/webapp/WEB-INF/views

- 그리고 최하위 폴더 views에 우클릭후 others 클릭

- jsp 검색후 JSP File 클릭 후 next

- 파일명은 home.jsp 로 하고 Finish (jsp에 관한 내용은 깊게 공부해서 글 올리겠습니다)
- JSP(Java Server Pages)로 html파일에 자바 코드가 들어가있는 코드입니다
- BODY안에 간단하게 코드를 구현해봅시다
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>JSP 파일 실행했습니다!</h1>
</body>
</html>

4) FileController 를 생성하여 View Resolver가 파일을 찾아갈 수 있게 구현!
- web 패키지에 새 클래스 생성!

- 클래스명은 FileController
- 이때 클래스 위에는 @RestController 가 아닌 @Controller입니다!(RestController는 직접 데이터를 전달할 때 쓰는 어노테이션)
- 이떄 return값은 파일명을 적어주면됩니다( 확장자는 안적어줘도 댐 이유는 1) 인덱스로 가서 보시면 됩니다)
package site.metacoding.demo.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class FileController {
@GetMapping("/file")
public String file() {
return "home";
}
}
- 저 파일을 연다음

- 최상위 폴더인 demo 우클릭 후 아래와 같이 클릭

- 아래와 같이 콘솔창에 뜨면 제대로 서버가 가동중인 것이다
- 빨간박스를 보면 포트번호가 있다. 이 포트번호를 입력해 서버에 접속한다(8080번)

- 브라우저를 열고 localhost:8080 입력후 엔터!!
- 이렇게 나와야 지극히 정상입니다!

아까 작성한 클래스 파일을 보면 @GetMapping ("/file") 이라고 적었다.
이때 /file을 url뒤에 붙혀서 home.jsp내용을 갖고와서 tomcat이 해석을해 우리(Client)에 동적페이지(jsp)를 html로 응답해주는 원리이다!
- 브라우저에 localhost:8080/file 을 치니 아까 입력했던 home.jsp파일이 잘 실행됐습니다!

5) 정리
- ViewResolver가 찾아가는 root폴더에 home.jsp를 생성하였습니다. 이때 jsp파일은 동적파일이라 서버가 직접 Client에게 응답(전달) 해주지 못합니다. 왜냐하면 Client는 웹통신에서 브라우저와 같은데 브라우저는 html파일만 해석하지 jsp파일같은 동적데이터파일은 인식하지 못합니다
이때 tomcat이 동적파일을 해석을 하여 html로 바꾼후 서버가 이 해석된 html파일을 받아 Client에게 응답해줘서 위와같은 브라우저에 표시가 되는 원리입니다.
- 이때 우리 사용자는 FileController에 @Controller를 선언하여 ViewResolver를 동작시키고 ViewResolver는 file을 찾아갑니다. 맨위에 1번목차를 보면 아래와 같이 설정을 해주었기 때문에 사용자는 파일명만 return 해주면 알아서 경로를 찾아가는 것입니다!

길었지만 만약 틀린부분이 있으면 강한 지적 부탁드립니다
'Spring&Springboot > Spring(개인공부용)' 카테고리의 다른 글
| [Spring]IoC 컨테이너란? (0) | 2022.08.25 |
|---|---|
| [Spring] Controller로 데이터받는방법 (0) | 2022.08.25 |
| [JAVA]메이븐(maven)과 그래들(gradle)이란? (0) | 2022.08.24 |
| [Spring] 로컬호스트로 서버연결해 텍스트 출력하기 (0) | 2022.08.24 |
| 아파치 톰캣(Apache Tomcat) 이란? (0) | 2022.08.24 |