본문 바로가기
웹개발/Springboot

ViewResolver - @Controller

by HoPpangg 2021. 6. 24.
SMALL

response 응답에는 

MessageConverter와 ViewResolver가 있습니다.

MessageConverter는 데이터를 리턴할 때 쓰이는 것으로 JSON을 default 값으로 리턴합니다.

@RestController annotation이 붙어있으면 리턴 시 MessageConverter가 작동합니다.

 

ViewResolver는 뷰를 리턴할 때 쓰이는 것으로 HTML을 리턴합니다.

@Controller annotation이 붙어있으면 리턴 시 ViewResolver가 작동합니다.

 

ViewResolver 응답을 봅시다.

우선 Maven Repository에서 Tomcat Jasper라는 외부 라이브러리를 다운받아 줍니다.

MVN Repository에서 jasper를 검색해서 제일 첫번째 뜨는 Tomcat Jasper를 선택해줍니다.

톰캣 서버에 알맞는 버전을 다운받아줍니다. 

(tomcat.jdk version check 검색하면 찾을 수 있음)

Maven 코드를 복사해줍니다.

pom.xml에서 <dependencies> 태그 안에 넣어줍니다.

 

 

이제 JSP 파일을 만들기 위해 src-main 안에 webapp, WEB-INF, views 폴더를 만들어줍니다.

webapp, WEB-INF 폴더들은 jsp에서 볼 수 있는 폴더들입니다. webapp은 공유되는 폴더인데 공유되는 폴더 속 필요하지만 공유되면 안되는 것들을 WEB-INF폴더에 넣어둡니다.

우리가 생성할 jsp 파일들을 왜 공유되지 않는 WEB-INF 폴더에 만드는 걸까요?

이유는 직접접근을 막기 위해서 입니다. URL접근을 막고 URI접근으로만 접근할 수 있도록 하는 것입니다.(MVC 패턴)

 

한번에 폴더를 여러개 생성하려면 main폴더를 누르고 new-folder를 선택해주고 생성할 폴더명을 /해서 한번에 써주고 Finish 해줍니다.

src-main-webapp-WEB-INF-views 폴더구조가 되었습니다.

jsp 파일을 하나 만들어줍니다.

home.jsp파일이 실행됐을 때 확인할 수 있는 코드를 입력해줍니다.

 

spring은 jsp를 버려서 jsp에 대한 설정은 직접 해줘야합니다. 

prefix와 suffix는 return value를 돌려줄 때 실행됩니다. prefix는 return value의 앞에, suffix는 return value의 뒤에

com.cos.example 패키지에 ViewController이름의 자바 클래스를 생성해줍니다.

@Controller가 붙은 클래스에서 메서드 실행 시 view를 리턴해주기 때문에 @Controller annotation을 붙여줍니다.

간단히 접근할 @GetMapping annotation을 달아주고 return 값은 아까 생성한 jsp 파일과 같은 이름이 되도록 해줍니다.

그리고 @GetMapping에 입력한 주소로 접근하면 jsp 파일이 실행되어 나타납니다.

localhost:8082/home으로 접근을 했지만 실제적으로는 localhost:8082/WEB-INF/views/home.jsp로 접근한 것과 같은 결과를 보여줍니다.

이는 ViewResolver 응답을 했기 때문에 jsp(view)를 리턴해준것 입니다.

728x90
LIST

댓글