Challenge, and Growth ! Who am I
                                                                                                             

Welcome to my blog 🫧

Total

Today

Yesterday













Language/JavaScript

[Web] WEB-INF, webapp 차이점 (JavaScript, JSP, WAS)

뽀시라운 2024. 1. 23. 23:43
반응형
SMALL

[목차여기]

 

 

Java 프로젝트의 폴더 구조

Java 프로젝트의 폴더 구조를 살펴보면, webapp과 WEB-INF를 발견할 수 있다.

├── src
├── webapp
│   └── WEB-INF
│       ├── lib
│       └── classes
│       └── web.xml
├── bin

 

webapp

webapp 폴더 아래에 존재하는 파일의 경우는 주소를 입력하여 바로 접근할 수 있다.

Web Application을 만들면 기본으로 생성된다.

 

webapp 아래의 index.jsp 파일은 프로젝트 실행 시 가장 먼저 접근된다.

 

WEB-INF

WEB-INF 폴더 아래에 존재하는 JavaScript 파일은 보안상 바로 접근이 불가능하다.

웹 브라우저에서 직접 접근할 수 없기 때문에 컨테이너가 대신 접근하여 결과를 반환해준다.

 

 

 

이 둘의 차이점을 정확히 이해하기 위해서 WAS와 Web Server에 대한 공부가 선행되어야 한다.

Web Server

 

클라이언트가 웹 브라우저에 페이지 요청을 하면, 웹 서버에서 그 요청을 받아 정적 컨텐츠를 제공하는 서비스이다.

* 정적 컨텐츠 : HTML, CSS, javascript, 이미지, 파일 등

* 웹 서버 예시 : Apache

 

그런데 정적 컨텐츠 만을 제공하면 어떤 일이 발생할까? 

데이터베이스 조회나 서비스 로직과 같은 세부적인 로직 처리가 불가능해진다. 즉, 동적 처리가 불가능하다.

 

그래서 우리는 WAS를 도입한다.

 

WAS(Web Application Server)

 

웹 서버(Web Server)와 웹 컨테이너(Web Container)가 합쳐진 형태로서, 데이터베이스 조회나 서비스 로직과 같은 세부적인 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application Server다.

 

HTTP를 통해 JSP, Servlet 구동환경을 제공해주기 때문에 웹 컨테이너 또는 서블릿 컨테이너라고도 불린다.

* 웹 컨테이너 : 웹 서버가 보낸 JSP, PHP 등의 파일을 수행한 결과를 다시 웹 서버로 보내주는 역할을 함

* WAS 예시 : Tomcat

 

더 자세한 Web의 구조 새로운 게시글에 작성할 것이다. -> (작성중)

 

 

번외

번외로, SpringBoot 프로젝트 구조를 설명하겠다. 

나는 일반 Java 프로젝트SpringBoot 프로젝트의 구조가 헷갈려서 혼란스러웠기 때문이다.

 

SpringBoot의 프로젝트는 src/resources 안에 static, templates 폴더를 생성할 수 있다.

src
├── main
│   └── resources
│       ├── static
│       └── templates

 

static 안에는 정적 컨텐츠를 넣고, templates 안에는 VIEW 컨텐츠를 넣는다.

* 정적 컨텐츠 : HTML, CSS, javascript, 이미지, 파일 등

* VIEW 컨텐츠 : Thymeleaf, Groovy

 

static/index.html 은 view 역할을 한다. 프로그램을 실행했을 때(= 주소에 접속했을 때) 보이는 화면을 말한다.

 

반응형
LIST
loading