Spring MVC Dispatcher Servlet & Controller 설정하기

이전 글 – Spring MVC facet 설정 방법에 이어서 Spring MVC Dispatcher Servlet 및 Controller 설정을 진행하겠습니다. 잘 따라오고 계신가요? 😊 궁금하신 점이나 이해가 안 되는 부분은 언제든지 댓글로 달아주세요.

Spring MVC Dispatcher Servlet

  1. dispatcher-servlet.xml 을 열어 아래 내용을 복사 붙여 넣기 합니다.
<?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:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="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
       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    <mvc:annotation-driven />
    <context:component-scan base-package="com.hipcoding.board.controller"/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

그러면 다음과 같이 빨갛게 표시되면서 IDE가 인식하지 못하는 것을 확인할 수 있습니다.

공포의 빨간 글씨입니다.

component-scan 태그 ‘base-package’ property의 value가 빨갛게 표시되는 이유는 해당 패키지가 없기 때문이고, bean 태그 ‘class’ property의 value가 빨갛게 표시되는 이유는 해당 클래스를 찾을 수 없기 때문입니다. 저와 함께 공포의 빨간 글씨를 없애봅시다.

Dependencies

2. 클래스를 찾을 수 있도록 Dependencies를 추가합니다. build.gradle 파일에 아래 코드를 복사 붙여 넣기 하세요.

plugins {
    id 'war'
    id 'java'
}
 
group 'com.hipcoding.board'
version '1.0-SNAPSHOT'
 
repositories {
    mavenCentral()
    mavenCentral()
}
 
dependencies {
    testImplementation group: 'junit', name: 'junit', version: '4.11'
    implementation group: 'org.springframework',name: 'spring-context', version: '5.0.7.RELEASE'
    implementation group: 'org.springframework',name: 'spring-webmvc', version: '5.0.7.RELEASE'
    implementation group: 'org.springframework',name: 'spring-test', version: '5.0.7.RELEASE'
}
 
test {
    useJUnitPlatform()
}

눈여겨 볼 부분은 dependencies 블록 내부입니다. spring-conext, spring-webmvc 두 가지는 필수입니다. 이 부분을 작성함으로써 Spring MVC 환경 구성을 위해 필요한 dependencies를 자동으로 받아옵니다.

Gradle sync

① 우측 상단의 gradle sync 버튼을 클릭해서 변경된 내용을 적용합니다.

gradle sync를 실행하지 않으면 build.gradle 변경 사항이 프로젝트에 적용되지 않으니 주의하세요!

Controller package 및 Controller 생성

3. package와 controller를 생성해주겠습니다. java 폴더 아래에 com.hipcoding.board.controller 패키지를 생성하고 그 아래에 HomeController Class를 하나 생성합니다.

HomeController Class를 생성하고 아래 코드를 복사 붙여 넣기 하세요.

package com.hipcoding.board.controller;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
 
@Controller
public class HomeController {
    @GetMapping("/")
    public String homePage(){
        return "home"; // 응답으로 /WEB-INF/views/home.jsp 를 보냄
    }
}

위 코드에서 주석 처리 되어 있는 곳을 보면 응답으로 /WEB-INF/views/home.jsp를 보낸다고 되어있습니다. return 값으로 “home”만 적어주었는데 말입니다. 이와 관련 있는 부분은 dispatcher-servlet.xml에 있습니다.

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

위 코드를 보면 InternalResourceViewResolver Class Bean의 property 인 ‘prefix’와 ‘serffix’값을 지정해서 컨트롤러의 return 값의 앞 뒤에 문자열을 자동으로 붙여주도록 설정되어 있습니다. 그러지 않으면 매번 컨트롤러의 return 값을 “/WEB-INF/views/home.jsp” 와 같은 식으로 적어주어야 합니다. 위처럼 해줌으로써 “home” → “/WEB-INF/views/home.jsp” 으로 치환되는 것이죠.

공포의 빨간 글씨가 사라졌습니다.

Views

4. 설정된 경로에 home.jsp 파일을 추가합니다.

webapp/WEB-INF/views/ 경로에 home.jsp 파일을 추가해주세요.

아래 코드를 복사 붙여 넣기 하시면 됩니다.

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>TEST</title>
</head>
<body>
IntelliJ, Gradle, Spring MVC 개발 환경 구축 TEST
</body>
</html>

변경 사항 정리

터미널에서 git status 명령어를 입력해보면 이번 커밋에 어떤 변경 사항이 있었는지 간략하게 알 수 있습니다.

git status 결과

총 4개의 파일 변경이 있었네요.

  1. build.gradle 파일에서 필요한 dependencies 설정
    – spring-context, spring-webmvc
  2. dispatcher-servlet.xml 설정
    – annotaion-driven, component-scan, ViewResolver Bean
  3. com.hipcoding.board.controller 패키지에 HomeController 클래스를 생성
  4. /WEB_INF/views/home.jsp 생성

이제 변경된 사항을 commit 해줍시다.

add와 commit

자, 이제 지금까지 준비한 Spring MVC 코드가 WAS에서 동작하도록 Tomcat을 설치하고 IDE에 설정해주는 일만 남았습니다. 이해하기 어려운 부분이 있다면 댓글 남겨주세요. 😁

스스로 경험하며 얻은 깨달음을 공유하기 좋아하며, 세상이 필요로 하는 코드를 작성하기 위해 노력하는 개발자입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다