- .txt 파일 응답하기
- 스프링부트가 지원하는 .mustache 파일 응답.
- 스프링부트가 버린 .jsp 파일 응답
jsp 파일 동작 과정
.jsp 파일의 동작 과정은 위 그림과 같다.
우리가 사용하는 톰켓이 템플릿엔진(.mustache, .jsp)에 포함된 java코드를 해석해서 HTMl 페이지로 응답한다.
1. .txt파일 응답하기.
HttpRespController.java를 생성하여 아래 코드를 작성한다.
이 때 @Contorller를 써야하는데 그 이유는 파일을 리턴할 것이기 때문이다.
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller // 파일을 리턴해줄 것이기 때문.
public class HttpRespController {
@GetMapping("/txt")
public String txt() {
return "a.txt";
}
}
src/main/resources/static에 a.txt를 만들어준다. 그리고 마음대로 글을 작성해준다.
위 경로에 작성하는 이유는 우리가 프레임워크를 사용중이기 때문이다. 프레임워크는 틀이 정해져 있다.
- 일반 정적 파일들은 resources/static 폴더 내부가 default 경로이다.
This is a.txt
그 후 서버를 실행해 크롬에서 페이지를 호출해본다. (Get방식이기 때문에 웹에서 확인 가능)
text 파일의 내용을 그대로 불러오는 것을 확인할 수 있다.
2. .mustache 파일 응답.
https://mvnrepository.com/ 접속 (java 관련된 라이브러리가 다 모여있다.)
mustache 검색 후 Spring Boot Starter Mustache 클릭.
제일 최신 버전 (현재 2.5.0) 들어가서 Maven 안에 코드 복사.
복사한 코드를 pom.xml의 dependencies 아래 복사해준다.
이 때, 버전부분은 지우고 정령해준 후 저장하여 적용해준다.(저장하면 자동 적용.)
그 후 서버를 껐다가 다시 켜준다.
그리고 static에 b.mustache 파일을 만들어 준다.
이 때, .mustache 형식은 따로 존재하지 않으므로, 먼저 html파일로 만든 후, 그 파일을 .mustache로 만든다.
그리고 아래와 같이 테스트 코드를 작성.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>This is mustache</h1>
</body>
</html>
Controller로 가서 mustache를 불러오는 코드를 작성해주자.
@GetMapping("/mus")
public String mus() {
return "b.mustache";
}
그리고 크롬에서 확인해보면 이번엔 페이지가 뜨지 않고 파일이 다운로드 되는 화면을 볼 수 있다.
이는 웹 브라우저가 해석을 하지 못했기 때문이다. 즉, 톰캣 쪽에서 해석이 작동하지 않았다는 말이다.
그러면 어떻게 해결해야할까?
먼저, b.mustache 파일의 경로를 static에 templates로 옮겨준다
그리고 controller 코드에서 b.mustache의 확장자인 .mustache를 지운다.
@GetMapping("/mus")
public String mus() {
return "b";
}
그리고 다시 웹에서 결과 확인하면 아래와 같다.
3. .jsp 응답하기.
jasper 검색 → Tomcat Jasper » 9.0.41 dependency 추가 → 기존 mustache dependency 주석처리(두 개 동시에 의존성 주입하면 충돌.)
src/main/ 아래 webapp/WEB-INF/views 폴더 생성해서 c.jsp 파일 만들어서 아래 코드를 작성해준다.
<%@ 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>This is c.jsp</h1>
</body>
</html>
그리고 Controller 단에서 c.jsp를 불러오는 파일을 작성해준다. 근데 jsp은 기본적으로 스프링 부트에서 제공하지 않으므로 읽어오지 못한다. .mustache처럼 불러오기 위해서는 다른 설정을 해줘야한다.
먼저, application.properites 파일을 이름 변경해서 application.yml로 바꿔준다.
그리고 아래 코드를 작성해준다.
spring:
mvc:
view:
prefix: WEB-INF/views/
suffix: .jsp
jsp엔진 사용. src/main/webapp 폴더가 디폴트 경로!
prefix와 suffix를 통해 경로를 만들어줌.(view resolver가 이 역할을 수행)
이제 .jsp 파일도 정상적으로 읽어올 수 있다. 웹 브라우저를 통해 결과를 보면
.jsp 파일도 잘 읽어오는 것을 확인할 수 있다.
'Programming > Spring' 카테고리의 다른 글
YML/YAML 파일이란 무엇인가? (0) | 2021.08.11 |
---|---|
SPRING과 SPRING BOOT의 차이점 (0) | 2021.08.01 |
[spring boot] json 응답하기 (0) | 2021.06.08 |
[spring boot] http body 데이터 전송 (0) | 2021.06.08 |
[spring boot] controller - 쿼리스트링, 주소변수매핑 (0) | 2021.06.07 |