[Spring] intelliJ Spring MVC 프로젝트 생성

Hayden·2024년 9월 10일
0

Spring Framwork

목록 보기
1/1

intelliJ에서 Spring MVC 프로젝트 생성을 해봅니다.

프로젝트 생성

Maven 원형을 선택합니다.

프로젝트 이름을 입력하고 자신이 사용할 JDK버전을 선택합니다.

Archetype에 maven-archetype-webapp을 선택합니다.

고급 설정을 눌러 그룹 아이디를 수정하고 생성을 한다.

dependency 추가

Spring MVC에 추가해야 하는 dependency를 추가합니다.

<properties>
    <java-version>11</java-version>
    <org.springframework-version>5.3.39</org.springframework-version>
    <org.aspectj-version>1.9.19</org.aspectj-version>
    <org.slf4j-version>2.0.13</org.slf4j-version>
  </properties>


 <!--  Spring MVC  -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${org.springframework-version}</version>
    </dependency>
    <!-- Spring MVC END -->

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

MVC 프로젝트 구조 만들기

src/mainjava 디렉토리를 생성하고 pom.xml에서 groupId / artifactId을 확인해서 /groupId/artifactId 순으로 디렉토리를 생성합니다.

servlet-context.xml, root-context.xml 생성

/webapp/WEB-INF/spring 경로에 root-context.xml과 servlet-context.xml 파일을 생성합니다.

servlet-context.xml

servlet-context.xml에서는 Spring Mvc를 설정합니다.

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:beans="http://www.springframework.org/schema/beans"
             xmlns:context="http://www.springframework.org/schema/context"
             xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  
	<!-- @Controller, @Service 등 Spring MVC 어노테이션 활성화 -->
    <annotation-driven />

	<!-- 정적 리소스 경로 설정 ( /resources/js/**, /resources/css/** 등) -->
    <resources mapping="/resources/**" location="/resources/"/>

	<!--  BeanNameViewResolver: View 이름이 Bean 이름과 일치하면 해당 View Bean을 사용  -->
    <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>

	<!-- Controller가 위치한 패키지를 스캔하여 자동으로 Bean 등록 -->
    <context:component-scan base-package="[groupId].[artifactId].example.controller,
                                          [groupId].[artifactId].example.service" />
	
  	<!-- @Transactional 어노테이션을 사용한 트랜젝션 처리 활성화 -->
	<tx:annotation-driven proxy-target-class="true"/>

</beans:beans>

** context:component-scan @Controller, @Service가 있는 디렉토리를 등록합니다.

root-context.xml

root-context.xml은 Spring 애플리케이션의 전역 설정 파일로, 주로 웹 계층과 직접적인 관련 없는 Bean들을 정의합니다.

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         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>
      /WEB-INF/spring/root-context.xml
    </param-value>
  </context-param>

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

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

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

Tomcat 설정

실행 -> 구성편집에 들어가서 Tomcat을 설정합니다.

일단 Tomcat 9버전을 다운 받습니다. (10버전부터는 jakarta EE를 지원하기 때문에 다운받으면 안된다.)

https://tomcat.apache.org/
다운받으면 압축해제를 합니다.

구성편집에서 Tomcat 로컬을 선택합니다.

애플리케이션 서버에서 구성을 눌러 압축 해제한 톰캣을 선택해줍니다.

배포 탭을 선택해서 아티팩트 -> www:war exploded를 추가합니다.

애플리케이션 컨텍스트에 /만 입력합니다.

테스트

Controller와 jsp를 생성해서 테스트를 해봅니다.

// Controller

@Controller
public class MemberController {

    @GetMapping("/test")
    public String getTest() {
        return "/member/test";
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<div>test success</div>
</body>
</html>

profile
백엔드 공부

0개의 댓글