SpringMvc + JSP + TomCat 기본세팅

이건우·2025년 2월 27일

웹 프로그래밍

목록 보기
8/43
post-thumbnail

본 게시물에서는
IntelliJ IDE,
JAVA8, Spring 5.x 를 기준으로 세팅하였습니다.

1. 프로젝트 생성

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

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

2. 의존성 추가

위 방법으로 프로젝트를 생성하면 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(서블릿 설정파일) 설정

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>

servlet-context 설정 (빈 및 JSP 위치)

해당 파일에서는 스프링 빈 활성화 및 등록할 파일들의 위치,
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>

3. Controller 작성

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

4. 서버 실행 (TomCat)

본 글에서는 TomCat 서버의 설정을 아직 하지 않았다고 가정합니다.

1. 먼저 IntelliJ 우측 상단에서 Current File -> Edit Configurations... 를 클릭합니다.

2. 좌측 메뉴인 Add New Configuration 에서 Tomcat Server를 찾아, Local 을 선택(클릭) 합니다.

3. Server 탭에서 Application server 옵션부에서 Configure...을 클릭 합니다.

4. 프로젝트에 맞는 Tomcat버전을 설치한 폴더를 선택합니다.

5. 동일창에서 Deployment 탭에서 Deploy at the server startup 내의 + 버튼을 누르고 Artifact...를 클릭합니다.

6. 개발에 편리한 :war exploded를 선택합니다. (배포 방식 차이 있음)

7. Deploy at the server startup 내에 추가된 것을확인하고, 우측 하단의 Apply와 OK를 누릅니다.

8. 아까의 IntelliJ 우측 상단의 Current File 탭이 TomCat으로 변한 것을 확인 할 수 있습니다.

9. 초록색 버튼 중 왼쪽의 run 버튼을 누르면 실행되는것을 볼 수 있습니다.

무사히 JSP 페이지를 불러 왔습니다!

++ 포트 번호를 바꾸려면...
(localhost 뒤의 숫자)

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


++ Application Context를 바꾸려면...(localhost8080: 뒤의 문자)

7번의 화면에서 Application Context 설정을 수정하면 됩니다.

profile
새싹개발자

0개의 댓글