본문 바로가기
스프링 공부/스프링 mvc

Spring MVC 생성 maven 프로젝트 설정법

반응형

intellj 2022.02.02 버전을 사용하고 있는데 maven 프로젝트 생성법이 이전과 달라진 것 같아서 글을 작성하게 됐습니다. 

 

기존 방법 

new project -> 왼쪽에 있는 maven 클릭 -> jdk 설정 -> 프로젝트 네임 설정해서 생성할 수 있었습니다. 

바뀐 방법

new project -> java 선택 -> maven -> jdk 버전 클릭 -> Name 설정 -> create 버튼을 누르면 생성됩니다.

Spring - MVC 설정

원래는 New 바로 밑에 Add Framework support 가 있었는데 아래로 내려가 있습니다.

 

Add Framework Supprot 를 클릭 한 후  아래에 있는 Spring MVC 를 추가해줍니다.

 

인텔리제이의 lib를 사용하지 않고 pom.xml에서 설정한 것을 이용하기 때문에 프레임워크를 통해 받아진 라이브를 삭제합니다.

 

 

pom.xml 설정

기본설정에서 dependencies 를 추가해 사용하는 라이브러리들을 등록해줍니다.

<?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>org.example</groupId>
    <artifactId>spring-mvc</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.23</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
        </dependency>
    </dependencies>

</project>

 

command + ; 를 눌러 project structure 열어줍니다. 

그 다음 라이브러리에서 두 가지를 삭제해줍니다.

 

아티팩트에서 설정 라이브러리를 넣어줍니다.

 

web.xml 설정

- 수정 전

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.form</url-pattern>
    </servlet-mapping>

- 수정 후

*.from 부분을 / 로 바꿔주면 됩니다.

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

dispatcher-servlet 설정

컨트롤러에 어노테이션을 찾기 위해 mvc:annotation-driven을 설정해주고 컨트롤러 패키지 위치를 base-package에 등록해 줍니다.

prefix 와 suffix로 위치와 확정자를 지정해줍니다.

prefix에서는 컨트롤러에서 받은 파일 명을 찾고 suffix를 통해 확정자를 붙여주는 역할을 합니다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/cache"
       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/cache http://www.springframework.org/schema/cache/spring-cache.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <mvc:annotation-driven/>
    <context:component-scan base-package="Controller"/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

Controller 생성하기

src/main/java 에 Controller 패기지를 생성한 후 안에 간단한 IndexController 를 생성해줍니다.

package Controller;

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

@Controller
public class IndexController {
    @RequestMapping("/")
    public String index(){
        return "index";
    }
}

톰켓 설정

아래 사이트에서 톰켓을 다운받아줍니다.

https://tomcat.apache.org/download-90.cgi

 

Apache Tomcat® - Apache Tomcat 9 Software Downloads

Welcome to the Apache Tomcat® 9.x software download page. This page provides download links for obtaining the latest version of Tomcat 9.0.x software, as well as links to the archives of older releases. Unsure which version you need? Specification version

tomcat.apache.org

톰켓을 로컬로 추가합니다.

경로 설정 후 fix 버튼을 눌러줍니다.

Application Context 를 / <- 로 바꿔줍니다.

톰켓을 실행하면 정상적으로 실행되는 것을 확인할 수 있습니다.

 

 

팁과 오류

프로세스 실행 중일 경우 

정상적으로 톰켓서버가 종료되지 않으면 프로세스가 존재해  포트 충돌이 나타날 수 있습니다. 

맥일 경우 lsof -i 8080 으로 프로세스 아이디(PID) 를 찾은 후 kill -9 프로세스아이디(PID) 로 프로세스를 종료 할 수 있습니다.

 

톰켓 권한

error=13 permission denied 가 나타날 경우 권한과 관련된 오류 입니다. 설치된 톰켓위치/bin/catalina.sh 의 권한을 확인해 본 후 실행권한이 없으면 실행권한을 설정해주면 간단히 해결됩니다.

실행권한은 해당폴더에서 chmod 744 catalina.sh 으로 간단히 설정할 수 있습니다.