WEB-INF란 외부에서는 접근 불가능한 document 들만 보관하는 곳이다.
Document Root/WEB-INF/web.xml
(1) 배포 설명자(Deployment Desciptor) 라고 부른다.
(2) 웹 어플리케이션을 WAS에 배포할 때, XXX.war 파일로 배포
가. XXX.war(.war: Web Archive) ==> jar파일과 역할이 같다
나. XXX.ear(.ear: Enterprise Archive) ==> jar 파일


선택보다는 필수로 있는 것이 하위호환성과 유지보수에 좋다
* 위에서 언급된 "Document"가 무엇인가!? (2가지) (1) 정적인 문서 - XXX.html, XXX.css, XXX.js, XXX.jpg, XXX.mp3/mp4 등등 변하지 않는 파일 (Static Document) (2) 동적인 문서 - 매번 브라우저 요청시 마다, 그 내용이 변하는 문서 (Servlet/JSP) * 그럼 위에서 언급된 "Document Root"란 무엇인가!? 바로, (1) 정적인 문서 + (2) 동적인 문서 파일들을 저장하는 top-level 디렉토리를 의미


root는 가장 기본이 되고 다른 경로를 참조 하고싶으면 해당 경로를 명시해주며 시작해야함

이런식으로 루트에 examples 동일명의 파일을 만들어놓고 해당 경로를 입력하면

ROOT쪽 examples가 아닌 기존에 정의된 examples경로로 이동

tomcat 매니저에서 정의된 경로가 있으면 정의된 경로로 배정된다.

얘는 정의된 경로가 아니라 잘 찾아간다.
이제부터 메이븐 기반 webapp 프로젝트 설정에 대해서 들어간다.
- Maven 기반의 웹어플리케이션 개발을 위한 프로젝트의 설정파일들:
(1) pom.xml - Apache Maven Configuration
- (대전제) 이 파일의 단 한자라도 수정하면, 반드시 Maven Update
Project를 수행하라!!!!
(2) web.xml - Deployment Descriptor by Web Application Spec.
- (대전제) 이 파일이 수정되면, WAS를 restart 해야한다!!!!
더불어서, Maven Update Project 겸해서 수행하라!!!
(3) log4j2.xml - Configuration of log4j2
for DataSource, Spring Framework, JUnit Test framework,
Driver Spy, JDBC, and so forth ....
- 이미 잘 만들어진 다른 프로젝트의 파일을 가져다 쓰면 됨
- 수정할 것이 없음!!!!
(4) 같은 WAS에 배포되는 각 웹어플리케이션의 Context Root 는 반드시
고유해야 함(Unique)


프로젝트 생성
pom.xml에 대한 정보 (라이브러리 어떤것을 어떤버젼으로 사용하는지 / context root는 어떻게 되는지 등)
pom.xml에 대한 정보<modelVersion>4.0.0</modelVersion>
<groupId>org.zerock</groupId>
<artifactId>studyweb02</artifactId>
<version>1.0.0-BUILD-SNAPSHOT</version>
<packaging>jar</packaging>
<name>studyweb02</name>
<url>http://studyweb02.example.com</url>
<description>Servlet MVC project</description>
<properties>
<java-version>11</java-version>
<!-- <java-home>${env.JAVA_HOME}</java-home> -->
<!-- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target> -->
<org.apache.logging.log4j-version>2.17.2</org.apache.logging.log4j-version>
</properties>
<dependencies>
<!-- =============== Logging =============== -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${org.apache.logging.log4j-version}</version>
</dependency>
<!-- For Spring framework, HikariCP, DriverSpy logging -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${org.apache.logging.log4j-version}</version>
</dependency>
<!-- ============= Servlet/JSP ============= -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- =============== JDBC =============== -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8-production</artifactId>
<version>21.5.0.0</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>com.oracle.database.ha</groupId>
<artifactId>simplefan</artifactId>
</exclusion>
<exclusion>
<groupId>com.oracle.database.ha</groupId>
<artifactId>ons</artifactId>
</exclusion>
<exclusion>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>rsi</artifactId>
</exclusion>
<exclusion>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ucp</artifactId>
</exclusion>
<exclusion>
<groupId>com.oracle.database.xml</groupId>
<artifactId>xdb</artifactId>
</exclusion>
<exclusion>
<groupId>com.oracle.database.xml</groupId>
<artifactId>xmlparserv2</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- =============== Testing =============== -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<!-- ================ Misc ================= -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>/</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.10</version>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>false</downloadJavadocs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.0</version>
<configuration>
<release>${java-version}</release>
</configuration>
</plugin>
</plugins>
</build>

root 경로 요놈 잘확인하자
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
id="WebApp_ID" version="4.0">
<display-name>mweb03</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
</web-app>
src > ~~ > webapp> WEB-INF >web.xml
<welcome-file-list>태그는 디렉토리의 기본 웹 페이지 리스트를 넣어준다.
사용자가 루트 경로로 접근할 때 welcome-file에 있는 파일을 찾아감
JUnit과 롬복 JDBC같은 경우는 전 수업시간에 한 거 정리 했으니까 참고
이제 프로젝트 properties 들어가서 세부설정

웹 콘텐츠 세팅을 어떤 버젼으로 할 것인지 위에처럼 설정해준다.

runtime 환경을 WAS인 Tomcat9.0으로 지정

프로젝트에 사용하는 버전에 맞게끔 개발환경에 맞춤 세팅

JSP를 어떤 언어로 무슨 타입의 콘텐츠를 생성할지 정하는 과정



build path에 test 디렉토리랑 넣어서 순서 맞춰 주기

해당 프로젝트를 어떻게 조합해서 War파일로 만들것인가 Maven이 빠지면 라이브러리 관리가 안되니까 넣어줘야함
메이븐 업데이트하고 Servers 탭에서 서버를 추가해준다. host name은 터미널에서 hostname으로 검색해서 사용 Server 이름은 tomcat9.0

tomcat9.0 더블 클릭하면 해당 창이 나오는데 서버의 배포 경로를 어떻게 가져갈지 정한다.
톰캣의 웹앱폴더의 원본은 훼손하지 않고 별도로 관리폴더를 지정하겠다 설정이 끝난 후에 경로를 다시 설정은 다 삭제하고 다시 다운받을 수 밖에 없다


이제 실행

지금껏 지정해온 경로로 웹에서 동작한다.
환경설정 끝
+추가적인 말씀
https://www.naver.com/ ==> 웹 서버(파일서비스 서버): NginX
웹서버: 정적인 문서들만 서비스(파일읽어다가 응답으로 보내줌) 해주는 서버
Apache Tomcat : 2가지 역할을 동시에 수행
(1) 웹서버 (Web Server) : 파일서비스(정적인 문서 서비스)
(2) WAS (Web Application Server) : 동적인 문서 생성(***)
잘보고있습니다 화이팅