IntelliJ 인텔리제이

[IntelliJ] 인텔리제이 Spring MVC 프로젝트 설정하기

dev.mk 2020. 12. 9. 16:50
반응형

버전> 

IntelliJ 인텔리제이 얼티메이트 2020.1

자바 1.8

톰캣 8.0

Spring 5.2.3

 

1. 프로젝트 생성하기

Create New Project 클릭

2. Maven 선택 , 자바 버전 확인

Next 클릭

3.프로젝트 정보 입력한다.

Finish 클릭으로 마무리

4. pom.xml 내용 넣기

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.tistory.devmg</groupId>
    <artifactId>devmg</artifactId>
    <packaging>war</packaging>

    <dependencies>
        <!-- spring webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
        <!-- JSTL Dependency -->
        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>javax.servlet.jsp.jstl-api</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>
        <!-- Servlet Dependency -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>utf-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

 

내용을 넣고 오른쪽에 작은 아이콘으로 보이는 maven 리프레시를 누른다. 그럼 의존성을 다운로드한다.

4. 자바단 패키지를 생성한다. (컨트롤러 서비스 다오의 루트가 되는 곳이다.)

File -> Project Structue을 누르고 Modules을 누르고 프로젝트 명을 클릭하고 Sources탭에서 src/main/java 폴더 우클릭하고 기본 Sources영역으로 지정한다. 

java폴더 우클릭 > New > Package를 누르고 com.tistory.devmg.home.controller 패키지를 생성한다.

컨트롤러 자바를 생성하기 위한 경로다.

5. webapp폴더 생성 및 web.xml  파일 생성

File -> Project Structue을 누르고 Modules에서 상단 [+] 버튼을 누르고 Web을 선택한다.

Web탭을 누르면 오른쪽에서

- Deployment Descriptors의 Path의 내용을

프로젝트경로/src/main/webapp/WEB-INF/web.xml로 변경한다.

- Web Resource Directories의 Web Resource Directory의 내용을

프로젝트경로/src/main/webapp로 변경한다.

인텔리제이는 웹루트 경로가 다르기 때문에 이클립스나 sts의 기본 경로로 구성 했다.(편의상)

6. 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_4_0.xsd"
         version="4.0">

    <display-name>Spring MVC</display-name>

    <!-- Root context -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/root-context.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- servlet context -->
    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- encoding filter -->
    <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>/*</url-pattern>
    </filter-mapping>


</web-app>

 

root-context.xmlservlet-context.xml를 만들어야한다.

WEB-INF에 Spring Config파일로 root-context와 servlet-context를 생성한다.

상위폴더 우클릭 > New > Xml Configuration File > Spring Config 선택 

root-context.xml은 그냥 파일만 생성한다. 내용은 없어도 된다. servlet-context.xml의 내용을 넣는다.

servlet-context.xml 

 

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

    <!-- This tag registers the DefaultAnnotationHandlerMapping and
         AnnotationMethodHandlerAdapter beans that are required for Spring MVC  -->
    <mvc:annotation-driven />
    <!-- This tag allows for mapping the DispatcherServlet to "/" -->
    <mvc:default-servlet-handler />

    <!-- Process annotations on registered beans like @Autowired... -->
    <context:annotation-config/>
    <!-- 컴포넌트 스캔 -->
    <!-- src/main/java 폴더를 소스폴더로 지정해야지 컴포넌트 스켄 오류가 사라진다-->
    <context:component-scan base-package="com.tistory.devmg" />

    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

아까 4번 단계에서  com.tistory.devmg.home.controller 자바 패키지를 생성했는데

com.tistory.devmg.home.controller 이 부분이 컴포넌트 스캔의 영역이다.

추후 경로는 com.tistory.devmg.home.service / com.tistory.devmg.home.dao 이런식으로 경로를 지정하기 위해서다.

7. HomeController.java 생성

package com.tistory.devmg.home.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HomeController {

    @RequestMapping("/home")
    public String home(){
        System.out.println("홈 컨트롤러 호출");
        return"home";
    }
}

8. home.jsp 생성

home.jsp를 만들기 전에 views폴더를 먼저 만들어야 한다.

프로젝트 우클릭 > New > Directory를 누르고 views폴더를 생성한다.

home.jsp

<%--
  Created by IntelliJ IDEA.
  User: devmk
  Date: 2020/12/09
  Time: 2:31 오후
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Welcome Home!</title>
</head>
<body>
홈 입니다~
</body>
</html>

 

 

9. 톰캣 서버 연결

File -> Project Structue > Artifacts > [+]를 누르고 >  Web Application: Exploded > From Modules  > [OK] 누른다.

Run -> EditConfigurations > 왼쪽 탭에 Tomcat Server > Local 선택

서버 이름 지정하고 Fix를 누른다

컨텍스트를 지정한다. 디폴트값을 지우고 /로 하면 localhost:8080/ 로 url 이 시작된다. 그리고 [ok]

 

10.  컨틀롤러 요청후 jsp가 호출되는지 확인한다.

 

 

반응형