항상 JSP 로 개발을 했지만 WEB-INF 폴더와 webapp 폴더 구조에 대한 부분을 생각하지 않고있었는데, 기회가 생겨 이참에 공부해보았습니다.
1. webapp 폴더
webapp 폴더는 웹 애플리케이션의 루트 디렉토리입니다.
이 폴더에는 웹 애플리케이션과 관련된 모든 파일(HTML, CSS, JavaScript, JSP 등)이 저장됩니다. 웹 브라우저는 이 폴더 내의 파일들에 접근할 수 있으며, 웹 애플리케이션의 정적 리소스를 저장하는 곳으로 사용됩니다.
2. WEB-INF 폴더
WEB-INF 폴더는 webapp 폴더 내에 위치하며, 웹 애플리케이션의 보안을 위한 목적으로 사용됩니다.
이 폴더에는 웹 애플리케이션과 관련된 중요한 파일들(설정 파일, 클래스 파일, 라이브러리 파일 등)이 저장됩니다. 주요 파일 및 폴더는 다음과 같습니다.
- web.xml: 웹 애플리케이션의 배치 서술자 파일로, 서블릿 매핑, 필터, 리스너 등의 설정을 포함합니다.
- classes: 컴파일된 자바 클래스 파일을 저장하는 폴더입니다.
- lib: 웹 애플리케이션에서 사용되는 라이브러리 파일(JAR)을 저장하는 폴더입니다.
3. 접근
웹 브라우저에서는 WEB-INF 폴더에 있는 파일들(jsp, html, js, css 등)에 직접 접근할 수 없습니다.
이렇게 함으로써 중요한 설정 파일이나 클래스 파일 등이 외부에 노출되는 것을 방지하여 웹 애플리케이션의 보안을 강화합니다.
요약하면, webapp 폴더는 웹 애플리케이션의 루트 디렉토리로서 웹 브라우저가 접근 가능한 파일들을 저장하는 곳이고, WEB-INF 폴더는 웹 애플리케이션의 보안을 위한 목적으로 사용되며, 웹 브라우저로부터 직접 접근할 수 없습니다. 이러
한 폴더 구조를 이해하고 활용하면, 웹 애플리케이션의 안전성과 관리 효율을 높일 수 있습니다.
추가로, JSP 파일이나 Servlet이 WEB-INF 폴더 내부에 위치하는 경우, 클라이언트는 직접 접근할 수 없지만, 서버 내부적으로는 접근이 가능합니다. 이런 경우, 서블릿 매핑을 통해 요청을 처리하도록 설정할 수 있습니다. 이렇게 함으로써 중요한 웹 애플리케이션 로직이 외부에 노출되는 것을 방지할 수 있습니다.
예를 들어, WEB-INF 폴더 내부에 example.jsp 파일이 있다고 가정하면, web.xml 파일에 서블릿 매핑을 추가하여 요청을 처리할 수 있습니다.
<servlet>
<servlet-name>exampleServlet</servlet-name>
<jsp-file>/WEB-INF/example.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>exampleServlet</servlet-name>
<url-pattern>/example</url-pattern>
</servlet-mapping>
위와 같이 설정하면, 클라이언트는 /example 경로를 통해 example.jsp 파일에 접근할 수 있게 됩니다. 이 방식을 사용하여, JSP 파일이나 Servlet이 직접 클라이언트에 노출되지 않도록 설정할 수 있습니다.
JSP 및 Servlet에서 WEB-INF 폴더와 webapp 폴더의 구조와 역할, 그리고 웹 브라우저로의 접근 가능 여부에 대해 공부 끝~~
'Java > JSP😊' 카테고리의 다른 글
[JSP/Servlet] 현재 페이지 URL 조회하는방법 (0) | 2021.12.04 |
---|---|
[JSP] excel파일로 다운받기 (0) | 2020.10.18 |
[error] The JSP specification requires that an attribute name is preceded by whitespace. (0) | 2020.10.18 |