각진 세상에 둥근 춤을 추자

[Spring] 스프링 MVC + 개발환경 수동 설정 + 간단 실습 본문

Spring

[Spring] 스프링 MVC + 개발환경 수동 설정 + 간단 실습

circle.j 2023. 1. 5. 11:11

1. MVC

 

  • MVC(Model-View-Controller)는 소프트웨어 아키텍처 패턴으로 Business logicPresentation 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