inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

MVC와 템플릿 엔진

인텔리제이에서 실행과 jar파일 배포해서의 실행 차이에 대해 궁금합니다.

762

pimang

작성한 질문수 1

0

@Controller

@RequestMapping("/test")

public class TestController {

    @GetMapping("/test")

    public void test1(){

        System.out.println("test1");

    }

    @GetMapping("/test2")

    public String test2(){

        System.out.println("test2");

        return "test/test";

    }

    @GetMapping("/test3")

    public String test3(){

        System.out.println("test3");

        return "/test/test";

    }

}

위와 같이 컨트롤러 작성하고 

resources/templates/test/test.html 파일을 생성해 두었습니다.

인텔리제이에서는 아무런 문제없이 test, test2, test3 모두 정상적으로 실행되는데

jar파일 생성후 java -jar로 실행하면 test, test2는 실행되는데 test3를 호출하면

http://localhost:8080/test/test3

ERROR 3380 --- [nio-8080-exec-3] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-3] Exception processing template "/test/test": Error resolving template [/test/test], template might not exist or might not be accessible by any of the configured Template Resolvers

위와 같이 오류가 발생됩니다.

test3의 리턴값에 "/" 을 붙여 절대경로로 설정되어 있는것인데. 왜 인텔리제이에서는 정상적으로 실행되는반면 jar배포 파일로 실행하면 오류가 발생되는지 모르겠네요.

1. 위의 상황에서 리턴값에 "/" 이 포함안된 상대경로로 하는게 맞는것인지? "/" 포함된 절대경로로 하는게 맞는것인지? 또는 둘다 맞는것인지 궁금합니다.

2. 인텔리제이와 jar파일 배포시 왜 다른 결과가 나오는지 궁급합니다.

인텔리제이 2020.0.4 버전

스프링부트 2.5.0

자바 11

spring-boot MVC spring java

답변 2

2

김영한

안녕하세요. pimang님

결론부터 말씀드리면 test3과 같은 방식은 사용하시면 안됩니다. test2와 같은 방식을 사용하셔야 합니다.

기본으로 다음 두가지를 함께 조합하는데요.

prefix = "classpath:/templates/"

suffix = ".html"

test/test

classpath:/templates/test/test.html

/test/test

classpath:/templates//test/test.html

조합된 결과를 보시면 결과적으로 // 슬래시 2개가 들어가게 됩니다.

여기에서 IntelliJ에서 동작하는 이유는 저도 잘 모르겠지만, 결국 다른 환경에서 잘 동작하지 않을 가능성이 높습니다.

1번의 경우 return이 void이면 요청 URL을 맞추어서 뷰의 경로를 찾아줍니다. 그런데 이때도 2번과 같이 앞의 슬래시는 제거된다고 이해하시면 됩니다.

감사합니다.

1

pimang

아. 답변 너무 감사합니다.

인텔리제이 오류

0

50

1

..

0

113

2

Unused property.....

0

121

2

project JDK is misconfigured

0

166

2

외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석

0

102

2

단위/통합 테스트 버전충돌 문제

0

103

2

❗️springboot 4.0.2 버전 aspectj dependency 설정❗️

0

256

1

왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?

0

125

2

윈도우 build test오류 질문

1

123

2

테스트 관련 공부에 대한 조언을 얻고 싶습니다

0

113

2

테스트 실행 시 에러 질문

0

316

1

name을 통한 비교와 객체를 통한 비교

0

82

1

빌드 후 libs 없음

1

149

1

윈도우 gradlew.bat 에러

0

186

1

@PostMapping("/members/new")가 동작하지 않습니다

0

98

1

java static class와 kotlin class

0

89

1

스프링 DB연결

0

145

1

소요 시간

0

96

2

ddl.sql에 빨간 밑줄

1

118

2

welcome page 에러

0

201

3

잘 모르겠습니다.

0

173

2

fail을 똑같이 쳤는데 오류가 발생해요

0

173

2

index.html Welcome page

0

137

1

프로젝트 gradle-groovy ?

0

403

1