【Spring】—Spring MVC 시작하기

스프링 MVC 시작하기

1. 스프링 MVC 개요

Spring MVC는 Web MVC 디자인 패턴을 구현한 Spring에서 제공하는 경량 웹 프레임워크입니다. Spring MVC는 다른 프레임워크인 Struts2보다 사용법과 성능면에서 우수합니다.

Spring MVC는 다음과 같은 특징을 가진다.

  • Spring 프레임워크의 일부이며 Spring에서 제공하는 다른 기능을 쉽게 활용할 수 있습니다.
  • 유연하고 다른 프레임워크와 쉽게 통합할 수 있습니다.
  • 전면 컨트롤러 DispatcherServlet이 제공되므로 개발자가 추가 컨트롤러 개체를 개발할 필요가 없습니다.
  • 사용자 입력을 자동으로 바인딩하고 데이터 유형을 올바르게 변환할 수 있습니다.
  • 공통 유효성 검사기는 사용자 입력의 유효성을 검사하기 위해 내장되어 있습니다. 유효성 검사가 실패하면 입력 양식으로 재설정됩니다.
  • 국제화를 지원하며 사용자의 지역에 따라 여러 언어를 표시할 수 있습니다.
  • JSP, Velocity, FreeMarker 및 기타 뷰 기술과 같은 다양한 뷰 기술을 지원합니다.
  • XML 기반 구성 파일을 사용하면 편집 후 애플리케이션을 다시 컴파일할 필요가 없습니다.

2. 사례 - 최초의 Spring MVC 애플리케이션

1. 프로젝트 생성 및 JAR 패키지 가져오기

chapter11이라는 웹 프로젝트를 만들고 프로젝트의 lib 디렉터리에 Spring MVC 프로그램을 실행하는 데 필요한 JAR 패키지를 추가하고 클래스 경로에 게시합니다.

여기에 이미지 설명 삽입

4개의 코어 JAR 패키지, commons-logging JAR 패키지 및 2개의 웹 관련 JAR 패키지가 프로젝트에 추가되었으며, 이 두 개의 웹 관련 JAR 패키지는 Spring MVC 프레임워크에서 필요한 JAR 패키지입니다.

2. 전면 컨트롤러 구성

web.xml에서 Spring MVC의 전면 컨트롤러 DispatcherServlet을 구성합니다.

<?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">
    <servlet>
    <!--配置前端过滤器-->
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--初始化时加载配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-config.xml</param-value>
        </init-param>
            <!--表示容器在启动时立即加载Servlet -->
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
 </web-app>

주로 구성 <servlet>및 요소. <servlet- mapping>Spring MVC 프런트 엔드 컨트롤러 DispatcherServlet은 에서 구성되며 Spring MVC 구성 파일의 위치는 <servlet>해당 하위 요소를 통해 구성 됩니다 . Dispatcher서블릿.<init-param><load-on-startup><servlet-mapping><url-pattern>

3. Controller 클래스 생성

src 디렉토리에 com.ssm.controller 패키지를 생성하고 컨트롤러 인터페이스를 구현해야 하는 패키지에 컨트롤러 클래스 ControllerTest를 생성합니다.

package com.ssm.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class ControllerTest implements Controller {
    
    
    @Override
    public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1)throws Exception{
    
    
        //创建ModelAndView对象
        ModelAndView m = new ModelAndView();
        //向模型对象中添加一个名称为msg的字符串对象
        m.addObject("msg","第一个spring MVC程序");
        //设置返回的视图路径
        m.setViewName("/WEB-INF/jsp/welcome.jsp");
        return m;
    }
}

handleRequest()는 컨트롤러 인터페이스의 구현 메서드입니다. ControllerTest 클래스는 이 메서드를 호출하여 요청을 처리하고 보기 이름 또는 보기 이름과 모델을 포함하는 ModelAndview 개체를 반환합니다. 이 경우 msg라는 문자열 객체가 모델 객체에 추가되고 반환된 보기 경로가 WEB-INF/jsp/welcome.jsp로 설정되어 요청이 welcome.jsp 페이지로 전달됩니다.

4. Spring MVC 설정 파일 생성 및 컨트롤러 매핑 정보 설정

src 디렉토리에 springmvc-config.xml 설정 파일을 생성하고, 해당 파일에 컨트롤러 정보를 설정합니다.

springmvc-config.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--  配置处理器Handle,映射"controllerTest"请求  -->
    <bean name="/controllerTest" class="com.ssm.controller.ControllerTest" />
    <!--  处理器映射,将处理器Handle的name作为url进行查找  -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
    <!--  处理器适配器,配置对处理器HandleRequest()方法的调用  -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
    <!--  视图解析器  -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />
</beans>

먼저 컨트롤러 클래스 ControllerTest를 "/ControllerTest" 요청에 매핑하는 "/ControllerTest"라는 이름의 Bean이 정의됩니다. 그런 다음 프로세서 매퍼 BeanNameUrlHandlerMapping 및 프로세서 어댑터 SimpleControllerHandlerAdapter가 구성됩니다. 여기서 프로세서 매퍼는 이름(예: url) 프로세서 빈에서 프로세서를 검색하고 프로세서 어댑터를 사용하여 ControllerTest 프로세서에서 handleRequest() 메서드에 대한 호출을 완료합니다. 결과가 사용자에게 표시됩니다.

알아채다

이전 버전의 Spring에서는 핸들러 매퍼, 핸들러 어댑터 및 뷰 리졸버를 구성 파일에 구성해야 했습니다. 그러나 Spring 4.0 이후에는 프로세서 매퍼, 프로세서 어댑터 및 뷰 리졸버가 구성되지 않은 경우 Spring 내부의 기본 구성을 사용하여 해당 작업을 완료합니다.여기에 표시된 구성 프로세서 매퍼, 프로세서 어댑터 및 뷰 파서는 판독기를 허용합니다 Spring MVC의 작업 흐름을 보다 명확하게 이해하기 위해.

5. 보기 페이지 만들기

WEB-INF 디렉토리 아래에 JSP 폴더를 만들고 폴더에 welcome.jsp 페이지 파일을 만들고 이 페이지에서 EL 표현식을 사용하여 msg에서 정보를 얻습니다.

<%@ page contentType="text/html; charset=UTF-8" language="java"
    pageEncoding="UTF-8" %>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
    "http:www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
    <title>入门程序</title>
</head>
<body>
    ${
    
    msg}
</body>
</html>

6. 프로젝트 시작 및 애플리케이션 테스트

Chapter11 프로젝트를 Tomcat 서버에 게시하고 서버를 시작합니다. 브라우저에서 http://localhost:8080/chapter11/controllerTest에 접속하면 표시된 페이지 효과는 그림과 같습니다. 모델 객체의 문자열 정보가 브라우저에 표시되어 첫 번째 Spring MVC 프로그램이 성공적으로 실행되었음을 알 수 있습니다.

여기에 이미지 설명 삽입

도입 사례 연구를 통해 Spring MVC 프로그램의 실행 과정을 정리할 수 있다.

(1) 사용자는 브라우저를 통해 서버에 요청을 보내고 요청은 Spring MVC의 프런트엔드 컨트롤러인 DispatcherServlet에 의해 차단됩니다.

(2) DispatcherServlet이 요청을 가로챈 후 HandlerMapping 프로세서 매퍼를 호출합니다.

(3) 프로세서 매퍼는 요청 URL에 따라 특정 프로세서를 찾아 프로세서 객체와 프로세서 인터셉터(있는 경우)를 생성하여 DispatcherServlet에 반환합니다.

(4) DispatcherServlet은 정보를 반환하여 적절한 HandlerAdapter(프로세서 어댑터)를 선택합니다.

(5) HandlerAdapter는 Handler(프로세서)를 호출하고 실행합니다. 여기서 프로세서는 백엔드 컨트롤러라고도 하는 프로그램에 작성된 컨트롤러 클래스입니다.

(6) 컨트롤러가 실행된 후 뷰 이름 또는 모델 및 뷰 이름을 포함하는 ModelAndView 개체를 반환합니다.

(7) HandlerAdapter는 ModelAndView 객체를 DispatcherServlet에 반환합니다.

(8) DispatcherServlet은 ModelAndView 객체에 따라 적절한 ViewResolver(뷰 리졸버)를 선택합니다.

(9) ViewResolver가 해결된 후 DispatcherServlet에 특정 보기(보기)를 반환합니다.

(10) DispatcherServlet은 뷰를 렌더링합니다(즉, 모델 데이터를 뷰에 채웁니다).

(11) 뷰 렌더링 결과는 디스플레이를 위해 클라이언트 브라우저로 반환됩니다.

위의 실행 과정에서 DispatcherServlet, HandlerMapping, HandlerAdapter, ViewResolver 객체의 작업은 프레임워크 내에서 실행되며, 개발자는 이러한 객체의 내부 구현 과정에 신경 쓸 필요 없이 전면 컨트롤러(DispatcherServlet)만 구성하면 됩니다. Controller.Business Processing에서 작업을 완료하고 해당 정보를 보기(View)에 표시합니다.

Supongo que te gusta

Origin blog.csdn.net/weixin_45627039/article/details/131233755
Recomendado
Clasificación