본 게시물에서는
IntelliJ IDE,
JAVA8, Spring 5.x 를 기준으로 세팅하였습니다.
먼저, Maven 프로젝트로 생성해 줍니다
WebApplication 을 만들 것이기 때문에,
Archetype은 webapp으로 지정해 줍니다. (푸른 테두리)
++ 해당창의 하단에 Advanced Settings 라고 되어있는 부분을 클릭하여
groupId 및 패키지시에 보일 version을 지정 할 수 있습니다.

SpringMVC + JSP 를 구현하기 위해서는 src의 하위 디렉토리가
아래와 같은 구조로 존재하여야 합니다.
webapp 이나 java 파일이 빠져서 생성되는 경우가 있으니
해당 경우에는 수동으로 생성해 주시기 바랍니다.
++ java의 하위 디렉토리의 경우는 pom.xml의 groupId라는 요소의 값으로
맞추어 주셔야 합니다.

위 방법으로 프로젝트를 생성하면 pom.xml에 테스트를 위한 위존성인
junit 하나만 dependency로 등록되어 있습니다.(또는 아무것도 없을 수 있습니다.)
프로젝트에 필요한 의존성들을 추가 해 줍니다.
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>co.kr</groupId>
<artifactId>tset_springmvc_jsp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>tset_springmvc_jsp Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- Spring MVC (Spring MVC의 핵심 라이브러리) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.32</version>
</dependency>
<!-- Spring Context (빈 관리, DI, AOP 등) -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.32</version>
</dependency>
<!-- Servlet API 4.0 (Servlet 관련 클래스 사용) -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>test_mvc_jsp</finalName>
<plugins>
<!-- JSP 컴파일과 Java 8 이상의 명확한 버전 설정 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
web.xml은 서블릿 설정, 필터, JSP 처리, 보안, 인코딩 등
웹 애플리케이션의 필수 환경을 정의하는 설정 파일이다.
※ web.xml은 webapp/WEB-INF 바로하위에 존재하는것이 정상입니다.
Spring MVC의 DispatcherServlet 등록 및 매핑,
JSP 설정 (EL 활성화, UTF-8 인코딩, 공백 제거 등),
UTF-8 인코딩 필터 적용 설정을 추가합니다.
++
<?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_3_1.xsd"
version="3.1">
<display-name>Spring MVC JSP Project</display-name>
<!-- <welcome-file-list>-->
<!-- <welcome-file>index.jsp</welcome-file>-->
<!-- </welcome-file-list>-->
<!-- Spring MVC의 핵심 컨트롤러 DispatcherServlet 등록 -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
<!-- 설정 파일 위치 -->
/WEB-INF/springConfig/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 모든 요청(/*)을 Spring MVC의 DispatcherServlet이 처리하도록 설정 -->
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- JSP 설정-->
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>false</el-ignored>
<page-encoding>UTF-8</page-encoding>
<scripting-invalid>false</scripting-invalid>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>
<!-- UTF-8 인코딩 필터 적용(한글 깨짐 방지) -->
<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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
해당 파일에서는 스프링 빈 활성화 및 등록할 파일들의 위치,
JSP의 경로를 지정합니다.++해당 파일의 위치는 web.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
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- Component Scan (Spring Bean 자동 등록) -->
<context:component-scan base-package="co.kr"/>
<!-- Spring MVC 활성화 -->
<mvc:annotation-driven/>
<!-- View Resolver (JSP 경로 설정) -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
<property name="cache" value="false" />
<property name="exposeContextBeansAsAttributes" value="true"/>
</bean>
</beans>
servlet-context.xml에 설정해 놓았던 Component Scan이 설정된 파일 내에
(여기서는 src/java/co/kr) Controller 클래스를 작성합니다.
해당 컨드롤러는 "/" http 요청이 왔을 떄에 "index" 페이지를
사용자에게 반환하도록 설정해 놓았습니다.
해당 페이지는 servlet-context.xml의 View Resolver에서 설정된
/WEB-INF/views/ 내에 존재해야 합니다.
package co.kr;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HomeController {
@GetMapping("/")
public ModelAndView home() {
ModelAndView mv = new ModelAndView();
mv.setViewName("index");
return mv;
}
}
본 글에서는 TomCat 서버의 설정을 아직 하지 않았다고 가정합니다.










3번 화면에서 Tomcat Server Settings의 HTTP port의 값을 수정하면 됩니다.
7번의 화면에서 Application Context 설정을 수정하면 됩니다.