각진 세상에 둥근 춤을 추자
[Spring] 스프링 MVC + 개발환경 수동 설정 + 간단 실습 본문
1. MVC
- MVC(Model-View-Controller)는 소프트웨어 아키텍처 패턴으로 Business logic과 Presentation logic을 분리하여 효율적인 엔터프라이즈(대규모) 애플리케이션 개발을 지원
- Controller : 사용자의 요청과 Model과 View 사이에서 상호 작용을 관리하는 컴포넌트
- Model : 애플리케이션의 데이터를 가공 처리하기 위한 컴포넌트(예: Dao, Service)
- View : 모델이 처리한 결과를 사용자에게 출력할 화면을 처리하는 컴포넌트(예: HTML, Jsp)
2. Spring MVC
- Front Controller는 클라이언트가 보낸 요청을 받아서 공통적인 작업을 먼저 수행
- Front Controller는 적절한 세부 Controller에게 작업을 위임
- 각각의 애플리케이션 Controller는 클라이언트에게 보낼 뷰를 선택해서 최종 결과를 생성하는 작업
- Spring 은 Dispatcher Servlet을 Front Controller로 사용
3. Spring MVC 개발환경 수동 설정
[Help] - [Eclipse Marketplace] - Spring Tool 3을 이용하여 편리하게 스프링 프레임워크 개발환경을 구축할 수 있으나,
수동으로 개발환경을 직접 설정해 본다.
(1) 프로젝트 생성 (마우스 우클릭 - New - Dynamic Web Project)
Context root: Cho4
Content directory: src/main/webapp
(체크) Generate web.xml deployment descriptor
(2) 기본 프로젝트 ➔ Maven 프로젝트 변환
(해당 프로젝트 마우스 우클릭 - Configure - Convert to Maven Project)
Group Id: kr.co.ch04
Artifact Id: Ch04
(3) 메이븐 프로젝트 설정 파일 작성 (pom.xml)
- Spring Context
https://mvnrepository.com/artifact/org.springframework/spring-context/5.3.24
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.24</version>
</dependency>
- Spring Web MVC
https://mvnrepository.com/artifact/org.springframework/spring-webmvc/5.3.24
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.24</version>
</dependency>
- JSTL
https://mvnrepository.com/artifact/javax.servlet/jstl/1.2
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
(4) DispatcherServlet 설정 + (인코딩 필터)
(src - main - webapp - WEB-INF - web.xml)
<web-app>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/application.xml</param-value>
</context-param>
<servlet>
<servlet-name>app</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
<!-- 인코딩 필터 -->
<filter>
<filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
(5) application.xml
(src - main - webapp - WEB-INF - application.xml 생성)
- 컴포넌트를 스프링 컨테이로 등록하기 위한 태그 선언
<context:component-scan base-package="kr.co.ch04"/>
- 스프링 MVC 처리를 위한 어노테이션 태그 선언
<mvc:annotation-driven></mvc:annotation-driven>
- View Resolver
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
3. Spring MVC 간단 실습
기능 구현을 위해 작성할 코드는 다음과 같다.
- 클라이언트의 요청을 알맞게 처리할 컨트롤러
- 처리 결과를 보여줄 JSP
- 클라이언트의 요청을 알맞게 처리할 컨트롤러
(Java Resources - src/main/java - kr.co.ch04.Controller.java 생성 - MainController.java 생성)
package kr.co.ch04.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class MainController {
// 요청함수 메소드 -> 요청 주소 매핑
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() {
return "/hello";
}
// 요약
@GetMapping("/welcome")
public String welcome() {
return "/welcome";
}
@GetMapping("/greeting")
public String greeting() {
return "/greeting";
}
}
- 처리 결과를 보여줄 JSP
(src - main - webapp - WEB-INF - hello.jsp, welcome.jsp, greeting.jsp 생성)
[hello.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>hello</title>
</head>
<body>
<h3>Spring MVC</h3>
<h1>hello</h1>
<a href="/Ch04/hello">hello</a>
<a href="/Ch04/greeting">greeting</a>
<a href="/Ch04/welcome">welcome</a>
</body>
</html>
[welcome.jsp]
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>welcome</title>
</head>
<body>
<h3>Spring MVC</h3>
<h1>welcome</h1>
<a href="/Ch04/hello">hello</a>
<a href="/Ch04/greeting">greeting</a>
<a href="/Ch04/welcome">welcome</a>
</body>
</html>
[greeting.jsp]
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>greeting</title>
</head>
<body>
<h3>Spring MVC</h3>
<h1>greeting</h1>
<a href="/Ch04/hello">hello</a>
<a href="/Ch04/greeting">greeting</a>
<a href="/Ch04/welcome">welcome</a>
</body>
</html>
[실행결과]
'Spring' 카테고리의 다른 글
[Spring] MyBatis 설정 + DB 연결 (0) | 2023.01.05 |
---|---|
[Spring] 스프링 MVC 회원 정보 입력 결과 출력하기 (0) | 2023.01.05 |
[Spring] AOP (0) | 2023.01.03 |
[Spring] IoC&DI (0) | 2023.01.03 |
[Spring] 개발환경 구축 (0) | 2023.01.03 |