English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Spring MVC 튜토리얼

Spring MVC는 Web 애플리케이션을 구축하는 데 사용되는 Java 프레임워크입니다. 이는 Model-뷰-컨트롤러 디자인 패턴을 통해. 이는 컨트롤 인버셔, 의존성 주입과 같은 핵심 Spring 프레임워크의 모든 기본 기능을 구현합니다.

Spring MVC는 DispatcherServlet Spring 프레임워크에서 MVC를 사용할 수 있는 우아한 솔루션을 제공합니다. 여기서 DispatcherServlet 이는 입력된 요청을 받아들이고 올바른 자원, 예를 들어 컨트롤러, 모델, 뷰에 매핑하는 클래스입니다.

Spring Web 모델-뷰-컨트롤러

모델-모델은 애플리케이션의 데이터를 포함합니다. 데이터는 단일 객체나 객체의 집합일 수 있습니다. 컨트롤러-컨트롤러는 애플리케이션의 비즈니스 로직을 포함합니다. 여기서 @Controller 애노테이션은 클래스를 컨트롤러로 표시합니다. -뷰는 제공된 정보를 특정 형식으로 표현합니다. 일반적으로 JSP + JSTL은 뷰 페이지를 생성하는 데 사용됩니다. 그러나 Spring은 Apache Velocity, Thymeleaf, FreeMarker와 같은 다른 뷰 기술도 지원합니다. 프론트 컨트롤러-Spring Web MVC에서 DispatcherServlet 클래스는 프론트엔드 컨트롤러로 사용됩니다. 이 클래스는 Spring MVC 애플리케이션의 프로세스를 관리합니다.


Spring Web MVC의 프로세스를 이해하세요

그림에 나타난 것처럼 모든 입력된 요청이 프론트엔드 컨트롤러의 DispatcherServlet에拦截됩니다. DispatcherServlet는 XML 파일에서 처리 프로그램 맵핑 항목을 가져와 요청을 컨트롤러로 전달합니다. 控制器返回ModelAndView对象。 DispatcherServlet检查XML文件中的视图解析器条目,并调用指定的视图组件。


Spring MVC Framework的优点

让我们看看Spring MVC Framework的一些优点: -

分离角色-Spring MVC分离每个角色,其中可以由专门的对象来实现模型对象,控制器,命令对象,视图解析器,DispatcherServlet,验证器等。 轻量-它使用轻巧的servlet容器来开发和部署您的应用程序。 强大的配置-它为框架和应用程序类提供了可靠的配置,其中包括跨上下文的轻松引用,例如从Web控制器到业务对象和验证器。 快速开发-Spring MVC促进了快速并行的开发。 可重复使用的业务代码-无需创建新对象,它使我们可以使用现有业务对象。 易于测试-在Spring中,通常我们创建JavaBeans类,使您可以使用setter方法注入测试数据。 灵活的映射-它提供了可轻松重定向页面的特定注释。


Spring Web MVC框架示例

让我们看一下Spring Web MVC框架的简单示例。步骤如下:

在Maven中加载spring jar文件或添加依赖项 创建控制器类 在web.xml文件中提供控制器的条目 在单独的XML文件中定义bean 在JSP页面中显示消息 启动服务器并部署项目


Spring MVC的目录结构

使用Maven的Spring MVC的目录结构


必需的Jar文件或Maven依赖项

要运行此示例,您需要加载:

Spring Core jar文件 Spring Web jar文件 JSP + JSTL jar文件(如果使用其他视图技术,则加载相应的jar文件)。

下载spring的所有jar文件,包括JSP和JSTL 。

如果您使用的是Maven,则无需添加jar文件。现在,您需要将maven依赖项添加到pom.xml文件。

1、在pom.xml文件中提供项目信息和配置。

pom.xml

<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.apache.org-maven4v
  _0_0.xsd">4<modelVersion>/.0.0
  modelVersion>3<groupId>com.w/<groupId>javax.servlet
  codebox/artifactId>
  <artifactId>SpringMVC/<packaging>war
  packaging>1-<version>0.0./version>
  SNAPSHOT/name>
  <name>SpringMVC Maven Webapp//<url>http:/maven.apache.org
  url>
    api
      <dependencies>/<groupId>javax.servlet
      <groupId>junit/artifactId>
      <version>3webmvc<8webmvc<1</version>
      <artifactId>junit/<scope>test
    </dependency>
    
    <!-- .RELEASE<//https:/mvnrepository.com/scope>/spring-org.springframework -->
api
    webmvc/<groupId>javax.servlet
    <groupId>org.springframework-<artifactId>spring/artifactId>
    <version>5webmvc<1webmvc<1./version>
</dependency>
<!-- .RELEASE<//https:/mvnrepository.com/artifact/artifact-javax.servlet -->
api  
    <dependency>/<groupId>javax.servlet  
    groupId>-<artifactId>servlet/artifactId>  
    <version>3.0-alpha-1</version>  
</dependency>
  </dependencies>
  <build>
    <finalName>SpringMVC</finalName>
  </build>
</project>

2컨트롤러 클래스 생성

컨트롤러 클래스를 생성하려면 @Controller와 @RequestMapping 두 가지 주석을 사용합니다。

@Controller 주석은 이 클래스를 Controller로 표시합니다。

@Requestmapping 주석은 지정된 URL 이름을 가진 클래스에 매핑하는 데 사용됩니다。

HelloController.java

package com.w3codebox;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {
@RequestMapping("/)
  public String display()
  {
    return "index";
  } 
}

3web.xml 파일에서 제어자의 항목을 제공합니다.

이 xml 파일에서는 Servlet 클래스 DispatcherServlet를 Spring Web MVC의 프론트엔드 컨트롤러로 지정합니다. 모든 입력 요청은 DispatcherServlet로 전달됩니다.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SpringMVC</display-name>
   <servlet>  
    <servlet-name>spring</servlet-name>  
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>    
</servlet>  
<servlet-mapping>  
    <servlet-name>spring</servlet-name>  
    <url-pattern>/</url-pattern>  
</servlet-mapping>  
</web-app>

4xml 파일에서 bean을 정의합니다.

이는 중요한 구성 파일로, View 컴포넌트를 지정해야 합니다.

context: component-scan 요소는 DispatcherServlet의 기본 패키지를 정의합니다. 제어자 클래스를 검색합니다.

이 xml 파일은 WEB-INF 디렉토리 내.

spring-servlet.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
      http://www.springframework.org/schema/context/spring-context.xsd
      http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  <!-- 컴포넌트 스캔 지원 제공 -->
  <context:component-scan base-package="com.w3codebox" />
  <!--변환, 포맷 및 검증 지원 제공 -->
  <mvc:annotation-driven/>
</beans>

5JSP 페이지에서 메시지 표시

이것은 간단한 JSP 페이지입니다. Controller가 반환한 메시지를 표시합니다.

index.jsp

<html>
<body>
<p>Welcome to Spring MVC Tutorial</p>
</body>
</html>

출력:



Spring MVC 인덱스