Java
클래스,매퍼(xml이지만 interface랑 바인딩을 위하여)
resources (프로그램에 필요한 값들을 저장하기 위한 폴더)
xml,propertes
webapp
다양한 웹자원을 만듬(저장)
Java
클래스,매퍼(xml이지만 interface랑 바인딩을 위하여)
resources
xml,propertes
JRE 자바가 제공해주는 라이브러리
(11버전이지만 1.6으로 보여짐 바꿔야함)
homeController.java >> model
home.jsp >> view
controller는 따로 제공
원하는 버전을 입력하면 알아서 버전이 바뀐다.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
<!-- Maven : 빌드 툴 - 프로젝트의 라이브러리를 관리하는 프로그램 -->
<!-- porm.xml : Maven 빌드 툴을 이용하여 프로젝트에 라이브러리를 빌드하기 위한 정보를
제공하는 환경설정 파일 -->
<!-- => 로컬 저장소의 라이브러리 파일을 프로젝트에 빌드되도록 처리 -->
<!-- => 로컬 저장소에 라이브러리 파일이 없는 경우 메이븐 저장소에서 다운로드 받아 로컬 저장소에 저장 -->
<!-- 로컬 저장소(Local Repository) : 프로젝트에 빌드될 라이브러리 파일을 저장하기 위한 폴더 -->
<!-- => 사용자 폴더의 .m2 폴더를 로컬 저장소로 사용 -->
<!-- => 라이브러리 파일에 문제가 있는가 있는 경우 이클립스 종료 후 .m2 폴더의 라이브러리
파일을 삭제하고 이클립스 재실행 -->
<!-- 메이븐 저장소(Maven Repository) : 라이브러리 파일이 저장된 인터넷상의 저장소 -->
<!-- => https://mvnrepository.com 사이트 참조 -->
<modelVersion>4.0.0</modelVersion>
<groupId>xyz.itwill</groupId>
<artifactId>controller</artifactId>
<name>spring</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<!-- properties : porm.xml 파일에서 자주 사용하는 값을 이름(식별자)을 이용하여 등록하기 위한 엘리먼트 -->
<!-- => 하위 엘리먼트 이름을 값을 구분하기 식별자로 사용하며 엘리먼트 내용이 제공되는 값을 표현 -->
<!-- => porm.xml 파일에서 ${이름} 형식으로 값을 제공받아 사용 가능 -->
<!-- => 라이브러리의 버전을 효율적으로 관리하기 위해 properties 엘리먼트 사용 -->
<properties>
<org.springframework-version>5.3.25</org.springframework-version>
<org.aspectj-version>1.9.19</org.aspectj-version>
<org.slf4j-version>2.0.6</org.slf4j-version>
</properties>
<!-- dependencies : dependency 엘리먼트 목록을 설정하기 위한 엘리먼트 -->
<dependencies>
<!-- Spring -->
<!-- dependency : 라이브러리 파일을 프로젝트 빌드 처리하기 위한 엘리먼트 -->
<!-- => 의존관계로 설정된 라이브러리 파일도 자동으로 빌드 처리 -->
<dependency>
<!-- groupId : 라이브러리 파일을 제공하는 그룹의 식별자(도메인)를 설정하기 위한 엘리먼트 -->
<groupId>org.springframework</groupId>
<!-- artifactId : 라이브러리의 이름(식별자)을 설정하기 위한 엘리먼트 -->
<artifactId>spring-context</artifactId>
<!-- version : 라이브러리 버전을 설정하기 위한 엘리먼트 -->
<version>${org.springframework-version}</version>
<!-- exclusions : exclusion 목록을 설정하기 위한 엘리먼트 -->
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<!-- exclusion : 의존관계의 라이브러리 중 제외 라이브러리를 설정하기 위한 엘리먼트 -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
<!-- scope : 라이브러리 파일이 빌드되어지는 범위를 설정하기 위한 엘리먼트 -->
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<exclusions>
<exclusion>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
</exclusions>
<scope>runtime</scope>
</dependency>
<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<!-- Servlet -->
<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>
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/xerces/xercesImpl -->
<!-- => 로그 구현체를 이용한 로깅 정보 처리시 경로에 문제가 있는 경우 해결방법을
제공하는 라이브러리 -->
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.12.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-resources-plugin -->
<!-- => Maven Plugin 문제의 porm.xml 파일에서 에러가 발생된 경우 빌리 처리에 대한
해결방법을 제공하는 라이브러리 -->
<!--
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.0</version>
</dependency>
-->
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.9</version>
<configuration>
<additionalProjectnatures>
<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
</additionalProjectnatures>
<additionalBuildcommands>
<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
</additionalBuildcommands>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>org.test.int1.Main</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
로그 구현체에 대한 클래스를 설정
<?xml version="1.0" encoding="UTF-8"?> <!-- log4.xml : 로그 구현체에 대한 환경설정 파일 --> <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- Appenders --> <!-- appender : 로그 구현체를 구성하는 클래스를 설정하기 위한 엘리먼트 --> <!-- name 속성 : appender 엘리먼트를 구분하기 위한 식별자를 속성값으로 설정 --> <!-- class 속성 : 로그 구현체로 사용하기 위한 클래스를 속성값으로 설정 --> <!-- => class 속성값으로 설정된 클래스에 따라 로깅정보를 기록하는 방식이 다르게 설정 --> <!-- => class 속성값으로 설정된 클래스는 반드시 Appender 인터페이스를 상속받아 작성 --> <!-- => ConsoleAppender 클래스 : 로깅정보를 서버 콘솔에 기록하기 위한 클래스 --> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <!-- param : Appender 클래스에 필요한 값을 제공하기 위한 엘리먼트 --> <param name="Target" value="System.out" /> <!-- layout : 로깅정보를 제공받아 로그 형식을 설정하기 위한 엘리먼트 --> <!-- class 속성 : 로그 형식 관련 정보를 제공하기 위한 클래스를 속성값으로 설정 --> <!-- => PatternLayout 클래스 : 로그 형식을 작성하기 위한 변환 문자를 제공하는 클래스 --> <!-- # 변환문자(Conversion Character) - 변환문자는 일반문자와 구분하기 위해 % 기호로 시작 --> <!-- %c : 패키지가 포함된 클래스의 이름을 기록 - {정수값}을 이용하여 원하는 형식으로 기록 가능 --> <!-- => %c{1} : 패키지를 제외한 클래스의 이름만 기록 --> <!-- %d : 날짜와 시간을 기록 - {SimpleDateFormat}을 이용하여 원하는 형식으로 기록 --> <!-- => %d{yyyy-MM-dd} : [년-월-일] 형식으로 로그시간 기록 --> <!-- %m : 로그 이벤트에 의해 생성된 로그 메세지를 기록 --> <!-- %n : 엔터(Enter)를 기록 - 로그 줄바꿈 --> <!-- %M : 로그 이벤트가 발생된 메소드의 이름을 기록 --> <!-- %p : 로그 메세지가 발생된 로그 이벤트를 기록 --> <!-- => 로그 이벤트 : TRACE > DEBUG > INFO > WARN > ERROR > FATAL --> <!-- # 변환문자 자릿수 설정 - %p 변환문자를 이용하여 예제 설정 --> <!-- %p : 로그 이벤트의 길이만큼 자릿수를 제공받아 기록 --> <!-- %5p : 로그 이벤트를 5자리(최대 자릿수)를 제공받아 기록 - 오른쪽 정렬 --> <!-- => 자릿수가 부족하면 기록이 잘리고 남으면 공백으로 처리되어 기록 --> <!-- %-5p : 로그 이벤트를 5자리(최대 자릿수)를 제공받아 기록 - 왼쪽 정렬 --> <!-- %.5p : 로그 이벤트를 5자리(최소 자릿수)를 제공받아 기록 - 오른쪽 정렬 --> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p: %c - %m%n" /> </layout> </appender> <!-- Application Loggers --> <!-- logger : 특정 패키지의 클래스에서 발생되는 로그 이벤트를 기록하기 위한 엘리먼트 --> <!-- name 속성 : 패키지 경로를 속성값으로 설정 --> <logger name="xyz.itwill.controller"> <!-- level : 패키지에 작성된 클래스에서 발생되는 로그 이벤트를 설정하기 위한 엘리먼트 --> <level value="info" /> </logger> <!-- 3rdparty Loggers --> <logger name="org.springframework.core"> <level value="info" /> </logger> <logger name="org.springframework.beans"> <level value="info" /> </logger> <logger name="org.springframework.context"> <level value="info" /> </logger> <logger name="org.springframework.web"> <level value="info" /> </logger> <!-- Root Logger --> <!-- root : 모든 클래스에서 발생되는 로그 이벤트를 기록하기 위한 엘리먼트 --> <!-- => 모든 logger 엘리먼트는 root 엘리먼트의 정보를 상속받아 사용 --> <root> <!-- priority : 모든 클래스에서 발생되는 기본 로그 이벤트를 설정하기 위한 엘리먼트 --> <!-- value 속성 : 로그 이벤트를 속성값으로 설정 --> <!-- => 속성값으로 설정된 로그 이벤트보다 상위의 이벤트가 발생된 경우 로그 구현체로 기록 --> <priority value="warn" /> <!-- appender-ref : 로그 구현체를 참조하기 위한 엘리먼트 --> <!-- ref 속성 : appender 엘리먼트의 식별자를 속성값으로 설정 --> <appender-ref ref="console" /> </root> </log4j:configuration>