Jar 파일에 JSP 파일 넣는 방법

이 방법은 servlet 3.0 을 지원하는 WAS에서만 가능한 방법입니다.

웹 관련 라이브러리를 만들다보면, UI(HTML, JSP, Javascript, css 등) 파일을 함께 배포하고 싶을 때가 있습니다. 즉, 비밀번호 등록 기능 뿐 아니라, 비밀번호 등록 화면까지도 라이브러리에 넣고 싶은 경우가 일 예가 되겠습니다.

그런데, Java 라이브러리는 Jar파일로 만들어야 할 터인데, 화면은 보통 JSP로 만들고…
이것을 어떻게 배포해야 할까요?

META-INF folder를 이용하면 됩니다.
META-INF folder 밑에 resources라는 folder를 만들고, 그 밑에 css, javascript, jsp, html 등을 넣어 jar로 묶어 배포하면 됩니다.
jar 파일의 META-INF/resources folder는  web root로 인식되도록 약속되어 있기 때문입니다.

예를 들어, mylib.jar 파일 안에 “META-INF/resources/jsp/main.jsp”라는 파일이 있다면, 브라우저에서
http://xxxxx.com/jsp/main.jsp ” 라고 입력하면, 브라우저에 jsp 파일 내용이 출력됩니다.
그런데, 요즘에는 Spring을 사용하면서, jsp 파일이 직접 호출되는 것을 막기 위해 “WEB-INF” 밑에 두고 템플릿 엔진을 사용하는 것이 일반화 되었죠. 이것 역시 아래와 같이 jar 파일을 구성하면, jsp 파일을 브라우저에서 직접 호출할 수 없게 됩니다.
<jar 파일>/META-INF/resources/WEB-INF/jsp/main.jsp

정리하자면, jar 파일안에 있는 “META-INF/resources”는 이 파일을 라이브러리로 사용하는 Web project의 web root와 동일하게 인식한다는 것입니다.