[SPRING] SimpleController (예제)

수경·2025년 3월 22일

SpringFrameWork

목록 보기
7/24
post-thumbnail

SimpleController

한 개의 Controller 당 한 개의 Controller 만 가능하다.

<Controller.java>

package com.test.pro05.ex01; // 패키지 선언: 해당 클래스가 "com.test.pro05.ex01" 패키지에 속함

import javax.servlet.http.HttpServletRequest;  // 클라이언트의 요청 정보를 담고 있는 객체
import javax.servlet.http.HttpServletResponse; // 클라이언트에게 응답을 보내는 객체

import org.springframework.web.servlet.ModelAndView; // 모델과 뷰 정보를 함께 저장하는 객체
import org.springframework.web.servlet.mvc.Controller; // Spring MVC의 기본 컨트롤러 인터페이스

// SimpleUrlController 클래스 선언, Spring MVC의 Controller 인터페이스를 구현함
public class SimpleUrlController implements Controller {

    /* 
     * url-mapping : 특정 URL이 요청되었을 때 이 컨트롤러로 이동하기 위한 설정
     * ModelAndView : 모델(데이터)과 뷰(화면)를 함께 관리하는 객체
     * Model : 뷰에서 사용할 데이터를 저장하는 역할
     * View : 클라이언트에게 보여줄 화면
     * 즉, 데이터를 저장하고, 출력할 화면을 지정하는 역할을 함
     */
    
    // handleRequest() 메서드 오버라이딩: 클라이언트의 요청을 처리하는 역할
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {	
        
        // ModelAndView 객체를 생성하고 "test/index"라는 뷰 이름을 지정하여 반환
        // "test/index"는 실제 JSP 파일의 위치를 의미 (보통 WEB-INF/views/test/index.jsp)
        return new ModelAndView("test/index");  
    }
}

<servler-context.xml>

<?xml version="1.0" encoding="UTF-8"?>
<!-- Spring의 설정 파일로, Spring MVC 애플리케이션의 DispatcherServlet과 관련된 설정을 정의함 -->
<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 https://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

	<!-- DispatcherServlet의 요청을 처리하는 Spring MVC 환경을 구성하는 설정 -->

	<!-- @Controller, @RequestMapping 등의 Spring MVC 어노테이션을 사용할 수 있도록 설정 -->
	<annotation-driven />

	<!-- 
		/resources/** 로 시작하는 URL 요청이 오면, 
		/resources/ 디렉토리에서 정적 파일(css, js, images 등)을 제공하도록 설정 
	-->
	<resources mapping="/resources/**" location="/resources/" />

	<!-- 
		컨트롤러에서 반환하는 View 이름을 실제 JSP 파일의 위치와 연결하는 ViewResolver 설정
		예: "test/index" -> "/WEB-INF/views/test/index.jsp"
	-->
	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- View 파일이 위치하는 기본 경로 설정 -->
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<!-- View 파일의 확장자 설정 -->
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>

	<!-- 
		base-package로 지정한 패키지 및 그 하위 패키지의 클래스에서 
		@Component, @Service, @Repository, @Controller 등의 어노테이션이 붙은 클래스들을 
		Spring이 자동으로 스캔하고 객체(빈)로 등록하도록 설정
	-->
	<context:component-scan base-package="com.test.pro05" />

	<!-- simpleUrlController 빈 생성 (Controller 인터페이스 구현 클래스) -->
	<beans:bean id="simpleUrlController" class="com.test.pro05.ex01.SimpleUrlController" />

	<!-- SimpleUrlHandlerMapping을 이용한 URL 매핑 설정 -->
	<beans:bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<!-- SimpleUrlHandlerMapping에 URL과 컨트롤러를 매핑하는 속성 설정 -->
		<beans:property name="mappings">
			<beans:props>
				<!-- "/test/index.do" 요청이 들어오면 simpleUrlController로 연결 -->
				<beans:prop key="/test/index.do">simpleUrlController</beans:prop>
			</beans:props> 
		</beans:property>
	</beans:bean>
</beans:beans>

📌 한 줄씩 설명

  1. XML 선언 및 네임스페이스 지정
  • xmlns="http://www.springframework.org/schema/mvc" : Spring MVC 관련 설정을 위한 네임스페이스

  • xmlns:beans="http://www.springframework.org/schema/beans" : Spring Bean 관련 설정을 위한 네임스페이스

  • xmlns:context="http://www.springframework.org/schema/context" : 컴포넌트 스캔을 위한 네임스페이스

  1. Spring MVC의 @Controller 를 사용 가능하게 설정
<annotation-driven />
  • @Controller , @RequestMapping 등의 Spring MVC 어노테이션을 사용할 수 있도록 설정
  1. 정적 리소스 매핑 설정
<resources mapping="/resources/**" location="/resources/" />
  • /resources/ 아래의 정적 파일(JS, CSS, 이미지 등)을 제공
  1. ViewResolver 설정 (JSP 파일 위치 지정)
<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>
  • 컨트롤러에서 "test/index" 와 같은 뷰 이름을 반환하면
    /WEB-INF/views/test/index.jsp 를 찾아 화면을 보여준다.
  1. 컴포넌트 스캔 설정
<context:component-scan base-package="com.test.pro05" />
  • com.test.pro05 패키지 이하의 모든 클래스 중 @Controller , @Service , @Repository 가 붙은 클래스를 자동으로 Bean으로 등록한다.
    즉, context:component-scan 가 자동으로 객체를 생성해 준다.
  1. SimpleUrlController Bean 등록
<beans:bean id="simpleUrlController" class="com.test.pro05.ex01.SimpleUrlController" />
  • Bean의 ID를 "simpleUrlController"로 지정하고 Spring 이 대신 SimpleUrlController 이라는 클래스의 객체를 만들어줘서 "simpleUrlController" 라는 ID로 사용할 것이다.
  1. SimpleUrlHandlerMapping을 이용한 URL 매핑
<beans:bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <beans:property name="mappings">
        <beans:props>
            <beans:prop key="/test/index.do">simpleUrlController</beans:prop>
        </beans:props> 
    </beans:property>
</beans:bean>
  • /test/index.do 요청이 들어오면 simpleUrlController(SimpleUrlController) 로 매핑된다.

  • 요청을 처리한 후 "test/index"라는 뷰 이름을 반환하면/WEB-INF/views/test/index.jsp로 이동하여 화면을 보여준다.

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>테스트</title>
</head>
<body>
	<h1>index.jsp 입니다.</h1>
	<p>Hello Springframework</p>
</body>
</html>

profile
개발 공부중•••

0개의 댓글