관리 메뉴

nalaolla

Intellij spring MVC + maven 환경 구축 본문

기타(개발관련)

Intellij spring MVC + maven 환경 구축

날아올라↗↗ 2016. 7. 14. 16:23
728x90

Intellij maven 환경 구축


New Project에서 좌측 template 유형에서 Maven을 선택합니다.

오른쪽 상단에 Project SDK java SDK가 설치된 폴더를 선택하면 됩니다.

오른쪽에 Create from archetyhpe을 체크하게 되면 하단에 여러유형의 archetype을 선택할 수 있습니다.

Maven 기반의 웹 프로젝트를 생성해야 하므로

org.apache.maven.archetypes:maven-archetype-webapp를 선택한뒤 Next 진행합니다.



 

다음으로 GroupId, ArtifactId, Version을 입력하는 창이 나옵니다.

데모사이트를 만들 목적이기 때문에

GroupId : com.nzin.demos

ArtifactId : demos

Version : 1.0-SNAPSHOT (기본으로 입력된 값 그대로 사용합니다.)



Next로 다음 단계로 넘어갑니다.

 

Maven을 세팅하는 창이 나오는데

기본설정값으로 넘어가도 되고, 별도의 위치에 Maven을 설정하고 싶다면 Maven폴더를 생성하고
위치를 변경해주면 됩니다.

Maven 폴더는 Maven home directory에서 selectbox를 펼쳐보면 기존에 설치된 폴더위치를 알수 있습니다.



해당 폴더에서 maven3폴더를 카피해서 원하는 위치에 복사하시면 됩니다.



예제에서는 C:\intellij 폴더에 복사하도록 하겠습니다.


Maven home directory를 변경된 위치로 선택하게 되면

Local repository도 해당 maven3폴더 아래에 기본으로 설정됩니다. 위치는 변경하여도 상관없습니다.



User setting file의 경우 maven3\conf\settings.xml파일을 선택합니다.

settings.xml파일을 메모장으로 열어 localRepository를 추가해줍니다.


<localRepository>C:\intellij\maven3\repository</localRepository>




그리고 Next로 다음단계로 넘어갑니다.


프로젝트명을 demos라고 적어주고 Finish해줍니다.

 

demos 프로젝트가 생성된 intellJ가 구동됩니다.



pom.xml파일이 기본적으로 보여집니다. 별다른 내용은 없습니다.

 



demos.iml파일을 열어보면 컴퍼넌트들에 대한 경로값들이 들어있습니다.

이 부분은 아래에서 환경설정을 진행하면서 다시 열어보도록 하겠습니다.

프로젝트명에 오른쪽 마우스를 누르고 Add Framework Support를 선택합니다.


 

Framework를 선택하는 창이 뜨는데..우리는 Spring Framework를 사용할 것이므로, Spring MVC를 선택합니다.


 

Ok를 하게되면 필요한 라이브러리를 다운로드 하게 됩니다.



다운로드가 완료되고 demos.iml파일을 열어보게 되면

환경들이 더 추가된 것을 알 수 있습니다.

facet type=”web”이 추가되었고, web.xml파일의 경로도 추가되었습니다.

facet tyhpe=”Spring”도 추가되었네요기타 정보들도 추가된 것을 알 수 있습니다.


Pom.xml에 파일에 spring framework 버전 propertiesdependency를 추가해줍니다.




<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 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nzin.demos</groupId>
<artifactId>demos</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>demos Maven Webapp</name>
<url>http://maven.apache.org</url>

<properties>
<java-version>1.7</java-version>
<spring.version>4.3.1.RELEASE</spring.version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.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>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.lazyluke</groupId>
<artifactId>log4jdbc-remix</artifactId>
<version>0.2.7</version>
</dependency>

<!-- Log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</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>

</dependencies>
<build>
<finalName>demos</finalName>
<plugins>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
<encoding>UTF-8</encoding>
<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>

<!-- JavaDoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.5</version>
</plugin>
</plugins>
</build>
</project>

우측 하단에 maven project need to be imported에서 Enable Auto-import를 클릭해줍니다.

dependency가 추가되면 자동으로 라이브러리를 다운로드 해줍니다.

 

이제 tomcat 서버를 구축하도록 하겠습니다.

상단메뉴의 Run을 선택하고, Edit Configuration을 선택합니다.

아니면 우측상단에서 Edit Configuration을 선택해도 됩니다.

 


 

Run/Debug Configurations창에서 좌측 상단에 있는 +(플러스) 버튼을 선택하게 되면 새로 만들 configuration목록이 나타납니다.

여기서 Tomcat Server를 선택 > Local을 선택합니다.


 



Name은 구분하기 쉽게 Tomcat7이라고 적었습니다.

Server탭에서는 Application Server정보를 등록하도록 되어있습니다.
Configure..
버튼을 선택하면 Tomcat 위치를 선택할 수 있습니다.




 

Open browser는 개인적으로 Chrome을 사용하고 있어서 Chromedefault로 선택합니다.

본인의 PC에 다른 브라우져가 있다면 변경하시면 됩니다.

 

URL경로는 http://localhost:8090으로 변경합니다

8080포트가 오라클에서 사용하고 있어서 8090으로 변경한 것이므로 8080포트를 사용하지 않는다면 변경하지 않아도 됩니다.

Tomcat Server Setting에서 HTTP Port8090으로 변경합니다.

 

Deployment탭으로 이동합니다.




우측에 +(플러스)를 선택하고 Artifact를 선택합니다.

Select Artifacts to deploy창이 뜨고 war를 선택항목이 나타납니다.

demos:war exploded를 선택하고 Ok합니다.




 

아래와 같이 war가 등록된 것을 확인할 수 있습니다.



이제 하단의 Apply를 눌러 환경을 저장합니다. Ok를 눌러 창을 닫습니다.




상단에 server가 등록된 것을 확인할 수 있습니다.

 

server가 정상적으로 구동되는지 테스트해봅니다.

server옆에 화살표를 클릭하면 서버가 구동되고 브라우져를 통해 웹 어플리케이션이 잘 돌아가는지 확인할 수 있습니다.


Hello World가 정상적으로 뜹니다.

 

여기까지는 기본적인 웹 환경을 설정하는 것이고,

이제 Spring MVC환경을 구축하도록 하겠습니다.

 

좌측 Project Exporer에서 src > main폴더에 우측 마우스를 눌러 new > derectory를 통해 java폴더를 만듭니다.



같은 방식으로

src > test > java directory를 만듭니다.

src > test > resources directory를 만듭니다.

 

java폴더와 resources폴더를 우 클릭후 make directory as 를 통해 각 폴더의 Role을 정의해줍니다.

src > main > java -> sources Root
src > main > resource -> resources Root
src > test > java -> test sources Root
src > test > resource -> test resources Root

 

추후 사용을 위해 main > resources폴더에 spring폴더를 생성해줍니다.

jsp파일을 위해 web > WEB-INF > jsp폴더를 생성합니다.



demos.iml파일을 열어보면 sourceFolder가 추가된 것을 확인 할 수 있습니다.

중간중간 server start해서 브라우져가 잘 뜨는지 확인해보시기 바랍니다.

 

이제 Web.xmlservlet, context를 수정하도록 하겠습니다.



web.xml파일을 아래와 같이 수정합니다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
        
version="3.1">
    <context-param>
        <param-name>
contextConfigLocation</param-name>
        <param-value>
classpath:spring/*-context.xml</param-value>
    </context-param>
    <listener>
        <listener-class>
org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>
action</servlet-name>
        <servlet-class>
org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>
contextConfigLocation</param-name>
            <param-value>
classpath:spring/*-servlet.xml</param-value>
        </init-param>
        <load-on-startup>
1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>
action</servlet-name>
        <url-pattern>
*.do</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>
index.jsp</welcome-file>
    </welcome-file-list>

    <filter>
        <filter-name>
encodingFilter</filter-name>
        <filter-class>
            
org.springframework.web.filter.CharacterEncodingFilter
       
</filter-class>
        <init-param>
            <param-name>
encoding</param-name>
            <param-value>
utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>
encodingFilter</filter-name>
        <url-pattern>
*.do</url-pattern>
    </filter-mapping>
</web-app>

 

servlet관련 xml파일을 다음과 같이 만들고 내용을 추가합니다.

dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<
beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
      
xmlns="http://www.springframework.org/schema/mvc"
      
xmlns:context="http://www.springframework.org/schema/context"
      
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      
xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd"
>

    <
context:component-scan base-package="demos" />

   
<!-- Enables the Spring MVC @Controller programming model -->
   
<annotation-driven />

    <
beans:bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <
beans:property name="prefix" value="/jsp/" />
        <
beans:property name="suffix" value=".jsp" />
    </
beans:bean>

</
beans:beans>

 

 

간단히 컨트롤러를 생성하여 servlet적용이 되는지 확인해보자..



java > demos.common.web 패키지를 생성한다.

MainController.java

package demos.common.web;

import
org.apache.log4j.Logger;
import
org.springframework.stereotype.Controller;
import
org.springframework.ui.Model;
import
org.springframework.web.bind.annotation.RequestMapping;

/**
 * Created by palao on 2016-07-14.
 */
@Controller
public class MainController {

   
protected Logger logger = Logger.getLogger(this.getClass());

   
@RequestMapping("/")
   
public String Index(Model model) throws Exception {
       
logger.info("index.....");
       
System.out.println("index");
        return
"home";
   
}

   
@RequestMapping("/main.do")
   
public String Main(Model model) throws Exception {
       
logger.info("main.....");
       
System.out.println("main");
        return
"home";
   
}
}

 

추가 변경된 내용은 pdf 첨부파일로 대체한다..


Intellij maven 환경 구축.pdf


728x90