본문 바로가기

플밍 is 뭔들/SPRING

IntelliJ에서 Spring MVC 프로젝트 생성 및 세팅 (Maven)

※ 목표

IntelliJ를 이용하여 Spring MVC 프로젝트를 생성하고 내 입맛에 맞게 프로젝트 환경을 구성하여 index.jsp 파일을 웹브라우저로 띄운다.

 

※ 개발 환경

  • Java8
  • InteliJ IDEA
  • Spring 5.2.3
  • Maven

 

※ 프로젝트  생성하기

새 프로잭트 생성 버튼을 눌러주세요

 

Maven을 선택 한 후 create from archetype 체크가 해제된 상태로 Next 버튼을 클릭해주세요.

 

프로젝트 이름을 지정해주세요.

 

그러면 이렇게 프로젝트 생성이 완료됩니다.

 

※ 프레임워크 추가

프로젝트 우클릭 > Add Framework Support 버튼 클릭

 

Spring MVC 체크 한 후 OK 버튼을 클릭해주세요.

 

※ Tomcat Server 추가

프로젝트 우측 상단에 Add Configuration을 눌러주시면 다음과 같은 창이 뜹니다.

Tocat Server > Local 선택 후 Create configuration을 눌러주세요.

 

서버 이름을 지정하고 다운받아 놓은 Tomcat의 경로를 선택해 준다음에 Fix를 눌러줍니다.

 

Deployment 탭에 들어가서 Application context를 /로 바꿔주세요.

 

※ pom.xml 설정 추가

pom.xml에 라이브러리 의존성 설정, 빌드 설정등을 해줍니다.

기본적인 것만 설정하였으며 프로젝트를 진행하면서 필요한 라이브러리는 상황에 맞게 추가하시면 됩니다.

참고로 JDBC 드라이버는 사용하실 DB에 맞춰 추가해줘야 합니다.

(아래 코드 추가)

    <properties>
        <java-version>1.8</java-version>
        <org.springframework-version>5.2.3.RELEASE</org.springframework-version>
        <org.aspectj-version>1.6.10</org.aspectj-version>
        <org.slf4j-version>1.6.6</org.slf4j-version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${org.springframework-version}</version>
            <exclusions>
                <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>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${org.aspectj-version}</version>
        </dependency>

        <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>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>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.4</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArgument>-Xlint:all</compilerArgument>
                    <showWarnings>true</showWarnings>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>
        </plugins>
    </build>

 

※ 프로젝트에 라이브러리 추가

Ctrl + Alt + Shift + S를 눌러 Project Structure 창을 띄워줍니다.

Artifacts를 클릭한 후 pom.xml에 추가하여 생성된 라이브러리들을 더블클릭하여 lib폴더에 옮겨줍니다.

 

※ log4j.xml 파일 설정

로그를 남기기 위해 log4j.xml 파일을 생성해서 설정해 줍니다. 

src/main/resources 디렉토리에 log4j.xml 파일을 생성하고 아래 코드를 복사해 주세요.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p: %c - %m%n" />
        </layout>
    </appender>

    <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>
        <priority value="info" />
        <appender-ref ref="console" />
    </root>

</log4j:configuration>

 

※ Spring MVC - Controller 추가 및 테스트

web.xml에서 dispatcher의 url pattern을 /로 변경해 줍니다.

 

src/main/java 아래에 패키지를 하나 추가하고 컨트롤러를 생성해줍니다.

생성한 패키지 명을 dispatcher-servlet.xml의 component-scan에 추가해줍니다.

그리고 Annotation 활성화를 위해 annotation-driven을 추가해 줍니다.

마지막으로 저는 WEB-INF/jsp/ 디렉토리 에서 jsp파일을 관리할 예정이기 때문에 위와 같이 ViewResolver를 설정해 줍니다.

 

위에서 말한것 처럼 디렉토리를 생성하고 index.jsp 파일을 jsp폴더 아래로 이동시켜 줍니다.

 

기존에 생성된 index.jsp 파일의 내용을 변경해 줍니다.

 

생성한 컨트롤러에서 프로젝트 실행 시 처음으로 진입하는 화면을 index.jsp파일이 되도록 테스트 코드를 짭니다.

그리고 프로젝트를 실행하여 주세요.

 

프로젝트 실행 시 정상적으로 작동하는것을 확인 합니다.

 

지금까지 IntelliJ로 Spring MVC 프로젝트 생성 및 설정에 대해 알아보았습니다.

도움이 되었다면 좋겠습니다.

 

감사합니다 :)