WHITEPAEK Tech Docs

Total : 521,108 Today : 85 Yesterday : 526

[IntelliJ] Spring MVC, Maven 프로젝트 설정 방법

시작하기에 앞서..

해당 포스트에서는 스프링에 대한 이론적인 설명은 작성하지 않았습니다. 이론적인 부분은 훌륭한 참고 서적이 많기 때문에 해당 서적을 구입하여 반복적으로 학습하는 것을 추천해 드립니다. 저와 마찬가지로 많은 초보자가 스프링 설정에서 많은 어려움을 겪는다고 생각하여 제가 공부하고 설정한 방식을 최대한 자세하게 작성하는 데 집중하였습니다. 개인적으로 이론은 한 번에 익히지 못할뿐더러 직접 코드를 작성해가면서 이해하는 것이 가장 효과적이라고 생각합니다. 하지만, 소스 코드를 작성하기도 전에 설정 부분에서 막혀버리면 생각보다 큰 좌절감이 다가옵니다. 코드 한 줄이라도 작성해볼 수 있도록 프로젝트 생성과 설정 방법에 관해 설명하였습니다.

[포스트에서 사용된 환경]
- 운영체제: macOS Mojave
- 도구: IntelliJ IDEA ULTIMATE
- 프레임워크: Spring MVC + Maven
- 데이터베이스: Oracle
- 서버: Tomcat

인텔리J에서 스프링 프로젝트를 설정하는 방법은 다양합니다. 하지만 설정 순서의 차이와 인텔리J에서 자동으로 설정해주는 부분을 수동으로 직접 설정하는 차이일 뿐입니다.

데이터베이스의 경우 Oracle을 사용하였지만 다른 데이터베이스 또한 설정 방식이 비슷하고 해당 포스트에서는 설명하지 않은 MyBatis와 같은 데이터베이스를 위한 프레임워크 등 다양한 프레임워크와 라이브러리가 존재합니다. 본격적인 프로젝트 개발을 시작하게 된다면 효율적인 다양한 설정 방법과 방식이 존재합니다. 설정 방법을 차근차근 이해하면서 따라 한다면 설명하지 않은 부분도 추가로 설정하여 이용하실 수 있습니다.

 

[1] Maven 프로젝트  생성하기

[그림 1.1] IntelliJ 실행

IntelliJ를 실행 후 Create New Project를 클릭해주세요.

 


 

[그림 1.2] Maven 프로젝트 생성

New Project 목록에서 Maven을 클릭하고 Project SDK에서 자신이 사용할 JDK 버전에 맞게 선택해주세요.

Next를 클릭해주세요.

 


 

[그림 1.3] GroupId, ArtifactId 설정

GroupId는 자신의 프로젝트를 식별해주는 고유 아이디입니다.

프로젝트에서 컨트롤하는 도메인 이름과 동일하게 입력해주세요.

 

ArtifactId는 버전 정보를 생략한 이름(jar)입니다.

프로젝트 이름과 동일하게 입력해주세요.

 

Next를 클릭해주세요.

 


 

[그림 1.4] Project name 설정

앞에서 설정한 ArtifactId와 동일하게 프로젝트 이름을 입력해주세요.

Finish를 클릭해주세요.

 


 

[그림 1.5] Maven 프로젝트

Enable Auto-Import를 클릭하면 메이븐 프로젝트 생성이 완료된거예요.

 

 

[2] Spring Framework 설정하기

[그림 2.1] 스프링 프레임워크 설정하기

루트 디렉토리 SpringMavenProject에서 우측 마우스를 클릭 후 Add Framework Support....를 클릭해주세요.

 


 

[그림 2.2] Spring MVC 선택

Add Frameworks Support 목록에서 Spring MVC (4.3.18.RELEASE)를 선택하고 OK를 클릭해주세요.

IntelliJ에서는 기본값으로 Spring 4.3 버전을 제공하고 있습니다,

 


 

[그림 2.3] web 디렉토리 자동 추가

web 디렉토리와 파일들이 자동으로 생성된 걸 확인할 수 있습니다.

관련 설정 IntelliJ Eclipse
빈(bean) 설정 applicationContext.xml root-context.xml
내부 웹 관련 처리 작업 설정 dispatcher-servlet.xml servlet-context.xml
톰캣(tomcat) 구동 관련 설정 web.xml web.xml

 

 

[3] Tomcat 설정하기

[그림 3.1] Add Configuration... 클릭

우측 상단 툴바에서 Add Configuration...을 클릭해주세요.

 


 

[그림 3.2] 톰캣 설정 화면

Run/Debug Configurations 창에서 좌측 상단 +를 클릭하여 Tomcat Server->Local를 클릭해주세요.

 


 

[그림 3.3] 톰캣 Fix 설정

Fix 버튼을 클릭해주세요.

 


 

[그림 3.4] 톰캣 루트 설정

Deployment 화면으로 이동되면 Application context/로 입력해주세요.

 


 

[그림 3.5] 톰캣 설정 완료

톰캣(tomcat) 설정이 완료되었습니다.

 

 

[4] Lombok Plugin 설치하기

Lombok 라이브러리는 getter/setter, toString(), 생성자 등을 자동으로

생성하여 반복적인 코드를 제거하므로 코드 라인 수를 줄여 가독성을 높여주고

생산성 향상에 큰 도움이 됩니다.

 


 

 

[그림 4.1] Plugins 화면

command + , (Ctrl+Alt+S) 단축키를 이용하여

Preferences(Settings) 창으로 이동 후 Plugins를 클릭해주세요.

 


 

[그림 4.2] Lombok 검색

검색 창에 Lombok을 입력 후 해당 플러그인을 설치해주세요.

[그림 4.2]는 이미 설치되어서 활성화된 상태입니다.

 

 

[5] Database 설정하기

다양한 데이터베이스를 설정할 수 있습니다.

저는 Oracle Database를 이용하여 설정하는 방법을 알려드리도록 하겠습니다.

 

☛ 오라클 데이터베이스 설치 방법

☛ MySQL 데이터베이스 설치 방법

 


 

[그림 5.1] 오라클 홈페이지

JDBC 설치를 위해 오라클 홈페이지로 접속 후 자신의 오라클 데이터베이스 버전에 맞는 드라이버를 클릭해주세요.

저는 Oracle Databases 11g Release 2 (11.2.0.4) drivers를 클릭하도록 하겠습니다.

 


 

[그림 5.2] ojdbc6.jar 다운로드

Accept License Agreement를 클릭 후 ojdbc6.jar를 클릭하여 다운로드해주세요.

다운로드가 완료되었으면 IntelliJ 화면으로 이동해주세요.

 


 

[그림 5.3] ojdbc 라이브러리 설정

command + ; (Ctrl+Alt+Shift+S) 단축키를 이용하여 Project Structure 창으로 이동해주세요.

좌측 상단에 + 버튼을 클릭 후 Java를 클릭해주세요.

 


 

[그림 5.4] ojdbc6.jar 추가

다운로드한 ojdbc6.jar 파일을 선택 후 Open을 클릭해주세요.

 


 

[그림 5.5] 모듈 선택 화면

OK를 클릭해주세요.

 


 

[그림 5.6] ojdbc6 라이브러리 추가 완료

라이브러리에 정상적으로 ojdbc6가 추가되었습니다.

 

 

[6] pom.xml 파일 설정

[그림 6.1] pom.xml 설정

pom.xml 파일에서 프로젝트 설정, 라이브러리 의존성 설정, 빌드 설정을 할 수 있습니다.

기본적인 부분에 대해서만 설정할 것이며 프로젝트를 진행하면서 필요한 라이브러리는 상황에 맞게 추가해주세요.

 


 

[그림 6.2] pom.xml 라이브러리 의존성 설정

아래의 코드를 <project> ... </project> 태그 사이에 입력해주세요.

 

    <properties>
        <java-version>1.8</java-version>
        <org.springframework-version>4.3.18.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>
    </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>

 

 


 

[그림 6.3] pom.xml에 추가한 라이브러리

command + ; (Ctrl+Alt+Shift+S) 단축키를 이용하여 Project Structure 창으로 이동해주세요.

목록에서 Artifacts를 클릭 후 Output Layout->Available Elements의 라이브러리를 전부 더블클릭해주세요.

 


 

[그림 6.4] Artifacts lib 추가

더블클릭한 라이브러리들이 프로젝트 lib 디렉토리에 정상적으로 추가되었습니다.

 

 

[7] log4j.xml 파일 설정하기

[그림 7.1] 로그 파일 설정하기

로그를 남기기 위해 자반 기반 로깅 유틸리티인 Log4j를 사용하겠습니다.

Log4j를 사용하기 위해서는 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>

 

 

[8] Database 연동 테스트

[그림 8.1] JDBC 테스트 코드 작성

오라클 데이터베이스가 정상적으로 연결이 되었는지 확인하는 테스트 코드를 작성해보도록 하겠습니다.

데이터베이스 서버가 실행되어 있어야 하고, jdbc 라이브러리가 프로젝트에 추가되어있어야 합니다.

src/test/java 디렉토리에 JDBCTest.class 파일을 생성 후 아래 코드를 입력해주세요.

 

import lombok.extern.log4j.Log4j;
import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;

import static org.junit.Assert.fail;

@Log4j
public class JDBCTest {
    static {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void connection() {
        try(Connection conn = DriverManager.getConnection(
                "jdbc:oracle:thin:@localhost:1521:XE", "system", "oracle")) {
            log.info(conn);
        } catch (Exception e) {
            fail(e.getMessage());
        }
    }
}

 


 

[그림 8.2] JDBC 테스트 코드 실행

control+shift+R (Ctrl+Shift+F10) 단축키를 이용하여 테스트 코드를 실행해주세요.

그림처럼 결과창에 log가 출력되었다면 정상적으로 데이터베이스가 연결된 거예요.

 

 

[9] Spring MVC - Controller 테스트

[그림 9.1] web.xml 파일 설정

MVC2 방식의 Controller가 정상적으로 실행되는지 확인하기 위해서 관련 파일을 설정하도록 하겠습니다.

먼저 web.xml 파일에서 <url-pattern> ... </url-pattern> 태그 사이를 /로 수정해주세요.

 


 

[그림 9.2] HelloController.class 생성

src/main/java 디렉토리에 com.whitepaek.controller 패키지를 생성해주세요.

그리고 해당 패키지에 HomeController.class 파일을 생성하고 아래 코드를 입력해주세요.

 

package com.whitepaek.controller;

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

@Controller
@RequestMapping("/home/*")
public class HomeController {

    @GetMapping("test")
    public @ResponseBody String homeTest() {
        return "Spring + Maven";
    }
}

 


 

[그림 9.3] dispatcher-servlet.xml

dispatcher-servlet.xml 파일에 아래 코드를 추가해주세요.

 

<context:component-scan base-package="com.whitepaek.controller" />

 


 

[그림 9.4] 프로젝트 실행

모든 설정이 끝났습니다.

위에서 테스트 코드를 실행하였기 때문에 프로젝트 실행 전 톰캣으로 설정을 확인하고

control + R (Shift+F10) 단축키를 이용하여 프로젝트를 실행해주세요.

 


 

 

[그림 9.5] 브라우저 확인

브라우저에 URL을 localhost:8080/home/test로 입력하여 정상적으로 결과가 나오는 걸 확인할 수 있습니다.

이것으로 Spring MVC + Maven + Tomcat + OracleDB 프로젝트 생성 및 설정에 대한 설명이 끝났습니다.

 

 

[10] Tomcat, OracleDB 포트번호 충돌 해결

[그림 10.1] 포트 충돌로 인한 브라우저 접속 화면

Tomcat과 OracleDB는 기본값으로 8080 포트를 사용합니다.

그렇기 때문에 충돌이 되면 결과창에 에러 메시지와 함께 브라우저에 Sign in 모달 창이 나오는 것을 확인할 수 있습니다.

 


 

[그림 10.2] 톰캣 포트번호 수정

[그림 3.3]에서 설명했던 톰캣 설정 창으로 이동 후 HTTP port 번호를 8080을 제외한 다른 포트번호로 수정해주세요.

설명에서는 8081 포트로 수정하겠습니다.

 

포트번호를 수정하였으면 다시 톰캣을 실행 후 브라우저 URL에 localhost:8081/home/test와 같이

수정한 포트로 다시 접속하면 정상적으로 결과가 출력되는 것을 확인할 수 있습니다.

 

다른 방법으로는 Oracle 데이터베이스 포트 번호를 바꿔줘도 됩니다.

 

 

 

Reference

 

댓글(30)

  • 엄지영
    2019.09.30 23:32

    인텔리제이로 자바 입문해서 인텔리제이로 웹개발 공부를 하고 있습니다~
    스프링의 경우 책에서는 거의 이클립스로 설정하는 내용이 대부분이라
    인텔리제이로 메이븐 + 스프링 MVC 세팅이 여간 어려운 것이 아니었습니다
    위의 글을 차근차근 따라하니 Spring MVC + Maven + Tomcat + OracleDB 프로젝트 생성 및 설정이 완료 되었습니다!!!

    그런데 한 가지 궁금한 점이 있습니다
    이클립스 같은 경우는 메이븐을 다운 받아서 설치하고 환경변수를 설정 후 진행을 하던데요
    인텔리제이의 경우도 메이븐을 설치 후 환경변수 설정을 해야 하나요?
    메이븐 설치 후 환경변수 설정 하고 프로젝트를 생성하는 것과
    그렇지 않은 경우의 차이가 무엇인지 궁금합니다~~~

    • 2019.10.01 09:18 신고

      IntelliJ IDEA에서는 Ultimate와 Community 버전에 따라서 지원하는 부분이 다르기에 설정 부분이 다를 수는 있지만, 젯브레인에서 제공하는 스프링 라이브러리를 사용할 경우 IntelliJ IDEA 버전에 의존하므로 환경변수 설정 부분은 따로 필요하지 않은 걸로 알고 있습니다.

      이클립스를 파악하고 있지 않기에 정확한 설명은 어렵지만, 이클립스와 IntelliJ IDEA 환경변수를 하는 차이는 아마 IDE 성격에 따라서 설정 방법이 다른게 아닐까라는 생각이 듭니다.

      보통 메이븐을 설치해서 사용하는 이유는 사용하고자 하는 버전이 있을 경우 해당 버전을 다운로드 후 사용합니다.

  • 엄지영
    2019.10.01 11:39

    답변 감사합니다~~~^^ IntelliJ IDEA Ultimate 2019.3 EAP 사용중입니다.

    제가 본 건 아니고 같이 공부하는 친구가 말하기를 인텔리제이를 이용한 스프링 인강에서 메이븐을 따로 설치 후 환경변수 경로 설정하고 Spring MVC + Maven 프로젝트를 생성했다고 하더라고요... 그래서 꼭 설치를 해야 하는 건가 했거든요.

    그리고 나름대로의 검색 결과 빌드툴이라서 설치 후 환경변수를 설정하는 것이 접근하기 좋다는 말이 있던데...

    그러면 보통 인텔리제이에서 메이븐을 따로 설치 하지 않고 프로젝트를 생성해도 Spring MVC + Maven을 이용한 개발이 가능하다는 거죠?

    • 2019.10.01 20:37 신고

      버전이 크게 상관없다면 직접 메이븐을 설치 안 하셔도 공부하시는데는 크게 문제가 될 거라고는 생각이 들지 않습니다.
      설정 방법은 다양해서 상황에 맞게 설정하면 되는 걸로 알고 있습니다. 저도 추후에 직접 설정하는 방법을 시도해보아야겠네요^^

  • 234234
    2019.11.05 15:18

    다른 intellij로 스프링MVC 프로젝트 만드는 강좌들의 경우는 1,2년된거라서 그런건지 아니면 몇몇 당연한 설명들 (제가 잘모르는..)이 생략된건지
    3,4군데꺼를 시도했지만 실패했는데 드디어 성공했네요
    감사합니다

    • 2019.11.05 21:36 신고

      저도 처음 할 때 설정 부분에서 많이 고생했었습니다. 몇 가지 방법이 있기도 하고 스프링에 대해 잘 알지 못해서 생기는 문제이니, 여러 번 반복하시다 보면 이해되실 거예요~^^

  • 초보개발자
    2019.12.30 11:57

    똑같이 했는데
    404에러가 나는경우는 어떤경우인가요? 페이지를 못찾아서 그러는것같은데 ㅜㅜ
    ------------- 에러 메시지 ---------------
    타입 상태 보고
    메시지 Not found
    설명 Origin 서버가 대상 리소스를 위한 현재의 representation을 찾지 못했거나, 그것이 존재하는지를 밝히려 하지 않습니다.

    • 2019.12.31 20:58 신고

      컨트롤러 관련 설정을 확인해보셔야 할 거 같습니다.

    • vanilla
      2020.05.14 19:40

      혹시 문제 해결하셨나요?ㅠㅠ

  • 초보개발자
    2019.12.30 11:59

    톰캣 application context: /
    로 변경하면되는거 맞죵?

  • 초보개발자
    2019.12.30 12:04

    whitepaek님하고 다른부분이 [그림 3-3] 부분에서 fix 부분이 없어서 직접 context 했는데 그부분에서 에러가 난것같아요

    • 2019.12.31 20:57 신고

      톰캣 설정하실 때 "Add New Configuration"으로 추가 안 하시고 "Templates"으로 추가하신 거 아닌가요?

  • 2020.01.26 15:49 신고

    안녕안녕하세요!! 저는 spring 5.2.3 버전으로 실습중입니다.
    <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>
    </dependencies>
    두개의 디펜던시에서 버전이 빨간색으로 표시되면서 'dependecy ~ not found'에러가 발생합니다. 왜 그런걸까요 ^^

    • 2020.01.28 00:11 신고

      현재 질문만 갖고는 정확한 문제점을 파악하기 힘들 거 같습니다 ㅠ

  • 2020.02.10 21:51 신고

    여기저기 많이 헤매다가 제시해주신 방법으로 도움이 많이되었습니다..!!
    혹시 괜찮다면 제 개인블로그에 내용을 인용해서 정리해도 괜찮을까요?

  • 2020.04.25 23:55 신고

    이클립스에서 하는
    <beans:bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
    </beans:bean>
    이 설정 안 해도 되나요??

    • 2020.04.26 00:30 신고

      필요한 설정이 있으면 해주셔야 합니다. 본문은 그냥 간단하게 프로젝트 생성만 해서 동작하게 한 것입니다.
      자세한 내용은 추후에 한번 더 포스팅 하도록 하겠습니다.

  • vanilla
    2020.05.14 19:34

    안녕하세요 게시물 잘 보고 따라하다가 마지막 부분에 문제가 발생하여 질문하게되었습니다ㅜㅜ
    그림 9.3 부분에서 <context:component-scan base-package="com.whitepaek.controller" />를 추가하면 com.패키지명 부분에 빨간 밑줄이 쳐지는데.. 이 상태에서 그냥 톰캣실행하면 500 내부서버오류 페이지가 뜨면서 javax.servlet.ServletException: 서블릿 [dispatcher]을(를) 위한 Servlet.init() 호출이 예외를 발생시켰습니다. 라는 설명이뜹니다.. 그래서 구글에 찾아보고 <bean> 부분을

    Add the context namespace declaration to the beans tag definition in the application context file

    <beans xmlns="http://www.springframework.org/schema/beans"
    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-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    이렇게 바꾸었더니 내부서버오류는 안뜨는데 404페이지에러가 뜨네용 ㅜㅠㅠ 혹시 이부분에 대해서 아실까요..? 답장주시면 정말 감사하겠습니다..!!!!! 항상 게시물 잘보고있습니다 ㅎㅎㅎ!

    • 2020.05.15 11:41 신고

      controller 코드와 jsp 파일명 또는 위치가 정상적으로 설정되어 있나요?

  • 2020.07.04 18:37 신고

    너무친절한 설명 감사드려요 덕분에 인텔리제이로 메이픈 프로젝트 만들었네요 감사합니다!

  • 스프링ㅠㅠ
    2020.07.12 21:33

    안녕하세요! 저도 localhost:8080/home/test로 이동하면 'HTTP 상태 500 – 내부 서버 오류'가 발생해 질문드립니다ㅠㅠ

    마지막에 <context:component-scan base-package="com.whitepaek.controller" />를 추가하면, context관련해서 빨간줄이 뜨더라구요.
    whitebaek님의 화면과 비교해보니, dispatcher-servlet.xml의 4번째 줄( xmlns:context="http://www.springframework.org/schema/context")이 없어서 추가했더니 관련 오류가 해결되었습니다.

    그리고 실행을 했더니 500 오류가 발생했는데 혹시 위의 부분이 원인이었던 걸까요?

    cf. 저는 oracle이 아니라 mysql로 해서 whitepaek님의 mysql jdbc연동 글을 보며 참고해서 작성하였습니다.
    db 연동 테스트는 성공했어서 이 부분이 원인은 아닌 것 같지만 그 외의 다른 부분이 이것 밖에 없어서 적어 놓습니다..

    • 2020.07.13 16:20

      혹시, spring버전이 다른 것이 문제가 될까요?

      현재 intelliJ가 기본으로 제공하는 SpringMVC 버전은 5.2.3.RELEASE라서

      pom.xml에 properties코드를 추가할 때 <org.springframework-version>의 값을 5.2.3으로 바꿔서 시도해봐도 여전히 400 오류가 뜨네요ㅠㅠ

    • 2020.07.13 21:53 신고

      간략하게 말씀드리자면,

      첫 번째 댓글에서는 컨텍스트 파일에서는 자신이 사용하려는 네임스페이스(namespace)가 추가되어야 합니다. 이클립스의 경우 네임스페이스를 추가해 주는 기능이 있고, 인텔리제이는 오토 임포트(Auto import) 기능으로 추가시킬 수 있습니다. (인텔리제이 단축키 ‣ Alt+Enter / Option+Enter)

      두 번째 질문에서는 인텔리제이에서 기본으로 제공하는 스프링 프로젝트를 이용했다면 lib 디렉토리에 jar 파일을 일괄로 생성합니다. 그렇기 때문에 라이브러리가 충돌이 일어나는 상황이 생길 수 있습니다.

      해당 포스팅의 경우에는 일괄적으로 설정하는 방법에 대해서만 작성했지만, 현재 작성 중인 포스트 중에 좀 더 자세하게 스텝 형식으로 내용을 정리해서 작성하고 있습니다. 필요하시다면 아래 포스트와 새롭게 작성 예정인 포스트를 참고해보세요 :)
      [참고] https://whitepaek.tistory.com/56

    • 2020.07.15 16:27

      알려주신대로, auto import로 context를 해결하고 해도 여전히 안되네요ㅠㅠ 오류를 구글링해도 너무 광범위한 오류인지 정확히 해결방법을 모르겠어서 슬프네요ㅠㅠ
      새로 작성중인 글을 추후에 참고해보도록 하겠습니다. 감사합니다:)

      auto import 관련해서 추가로 팁을 남기자면,
      1) alt+enter해도 안된다면
      -> Setting에서 auto import가 활성화 되어있는지 확인해보세요. 아래 링크의 Automatically add import statements 부분을 따라하면 됩니다.
      https://www.jetbrains.com/help/idea/creating-and-optimizing-imports.html#automatically-add-import-statements

      2) 그래도 안된다면
      -> alt+enter를 context에 커서를 두고 해야하더라구요.. 저는 다른 곳에 커서를 뒀더니 안되서 좀 헤맸네요ㅠㅠ

    • 2020.07.16 12:47 신고

      auto import가 필요한 부분에 포커를 맞춰야 한다는 설명을 생략하고 말씀드렸네요.. ^^;
      다른 분들이 참고할 수 있는 팁 감사합니다 :)

  • 코린이
    2020.07.28 20:12

    보다가 궁금한점이 생겨서 남겨봅니다.
    Maven 플러그인과 의존성을 이용하면 굳이 jdbc와 Tomcat을 로컬에 설치하지 않고 서버를 돌리는게 가능하지 않나요???
    제가 아직 개념이 제대로 잡히지 않아서 그런데 jdbc와 tomcat을 로컬에 설치해서 연동하는 방식으로 개발하는 것이 더 좋은 방법인가요??

    + 추가로 현재 Intellij에서 기본값으로 Spring 5.3 버전을 제공하고 있습니다. 해당 프레임워크로 설정하면 applicationContext.xml
    dispatcher-servlet.xml
    이 두 파일이 없는 상태로 생성되게 되는데 이유가 뭘까요..?? 기존의 두 파일이 했던 기능이 다른 방식으로 변경된 것 같은데 알 수 있을까요??

    • 2020.07.29 12:31 신고

      jdbc의 경우 Maven Repository에서 확인 후 의존성을 추가하여 사용해도 무방합니다.
      하지만 서버는 스프링 부트를 이용하면 내장 톰캣을 지원하기 때문에 별도로 설치를 하지 않아도 되지만 스프링의 경우는 설치해서 돌려야 합니다.

      정상적으로 두 개의 파일이 생성되는 걸 확인했습니다. IntelliJ 2020.02 버전에서 Maven + Spring MVC로 프로젝트를 구성했습니다.
      기존의 두 파일이 했던 기능이 다른 방식으로 변경된 것 같다는 질문은 무슨 말씀인지 잘 이해가 되질 않네요^^;

      -----
      제가 작성하고자 정한 스프링 내용을 전부 포스팅하지는 못했지만 한 번 참고해보시기 바랍니다.
      >> https://whitepaek.tistory.com/55