Spring MVC 시작하기 : 첫 번째 Spring MVC 프로그램

Spring MVC 개요

      Spring MVC는 Web MVC 디자인 패턴을 구현 한 경량 웹 프레임 워크를 제공합니다 .Struts 프레임 워크와 동일합니다. MVC 프레임 워크에 속하지만 사용 및 성능이 Struts보다 우수합니다.
Spring MVC는 다음과 같은 특성이 있습니다.
(1) Spring입니다. 프레임 워크의 일부로 Spring에서 제공하는 다른 기능을 쉽게 사용할 수 있습니다.
(2) 유연하고 다른 프레임 워크와 쉽게 통합 할 수 있습니다.
(3) 프론트 컨트롤러 DispatcherServlet을 제공하여 개발자가 추가적인 컨트롤러 객체를 개발할 필요가 없습니다.
(4) 사용자 입력을 자동으로 바인딩하고 데이터 유형을 올바르게 변환 할 수 있습니다.
(5) 내장 된 공통 유효성 검사기, 확인 실패시 사용자 입력을 확인할 수 있으며 입력 양식으로 리디렉션됩니다.
(6) 국제화 지원 사용자 영역에 따라 다국어 표시
(7), 다중 뷰 기술 지원. JSP Velocity FreeMarker
(8) 와 같은 뷰 기술 지원 기본 XML 구성 파일 사용, 편집 후 애플리케이션 재 컴파일 필요 없음

Spring MVC 워크 플로우

그림의 출처 : Java ee Enterprise Application Development Tutorial

Spring MVC 프로그램의 전체 실행 프로세스는 다음과 같습니다.
(1) 사용자가 브라우저를 통해 서버에 요청을 보내고 요청은 Spring MVC 프론트 컨트롤러 DispatcherServlet에 의해 차단됩니다.
(2) DispatcherServlet 차단됨 요청 후 HandlerMapping 프로세서 매퍼를 호출합니다.
(3) 프로세서 매퍼는 요청 URL에 따라 특정 프로세서를 찾고 프로세서 객체와 프로세서 인터셉터 (있는 경우)를 생성하고 DispatcherServlet에 반환합니다.
(4) DispatcherServlet 정보를 리턴함으로써 적절한 HandlerAdapter (프로세서 어댑터)을 선택할 것이다
(5) HandlerAdapter 호출되며, 상기 프로세서는 또한, 후단의 제어기로 알려진 프로그램에 기재된 컨트롤러 클래스를 지칭 처리기 (프로세서), 실행
( 6) Controller가 실행 된 후 View 이름 또는 모델과 뷰 이름을 포함하는
ModelAndView 개체를 반환합니다. (7) DispatcherServlet에 반환 된 HandlerAdapter ModelAndView 개체
(8) DispatcherServlet이 ModelAndView 개체를 기반으로 적절한 ViewReslover (보기)를 선택합니다. Parser)
(9) ViewReslover 구문 분석 후 특정 View (뷰)를 DispatcherServlet에 반환합니다.
(10) DispatcherServlet View를 렌더링 (즉, 모델 데이터를 뷰에 채우기)
(11) 뷰 렌더링 결과는 디스플레이를 위해 클라이언트 브라우저로 반환됩니다.

첫 번째 Spring MVC 프로그램

다음과 같이 프로젝트 구조도이다
주 :
1. web.xml 파일은 WEB-INF 디렉토리에 배치해야합니다
2 . springMVC-config.xml 파일은 src 디렉토리에 배치해야합니다
일반적으로 같은 이름의 그림은 다른 구성을 구별하는 것입니다
여기에 사진 설명 삽입
web.xml 파일을

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>spirngmvc_01</display-name>
  
  <!-- 配置前端过滤器 -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<!--servlet-class中的值是spring-webmvc包提供的类,即前端控制器,用于控制所有请求 -->
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	
  	<!-- 初始化时加载文件(springmvc-anno.xml) -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springmvc-anno.xml</param-value>
  	</init-param>
  	<!--  表示容器在启动时立即加载 Servlet,数值越小,加载越快 -->
  	<load-on-startup>1</load-on-startup>
  	
  </servlet>
  
  <!-- 配置servlet映射  servlet-name取值与servlet的servlet-name一致-->
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

springmvc-anno.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"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans
	   http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
	   http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-4.3.xsd">
	<!-- 指定需要扫描的包 -->
	<context:component-scan base-package="com.controller" >
	 
	       <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>  
	       
	</context:component-scan>
	<!-- 定义视图解析器 -->
	<bean id="viewResolver" class=
    "org.springframework.web.servlet.view.InternalResourceViewResolver">
	     <!-- 设置前缀 -->
	     <property name="prefix" value="/WEB-INF/jsp/" />
	     <!-- 设置后缀 -->
	     <property name="suffix" value=".jsp" />
	</bean>
</beans>  

springmvc-xml.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">
        <!-- 配置Handel,映射"/hello"请求 -->
        
        <bean name="/hello" class="com.controller.FirstController"/>
        <!-- 处理映射器将bean的name作为url进行查找,需要在配置Handel时指定name(即url) -->
        
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
        
        <!-- SimpleControllerHandlerAdapter是一个处理器适配器,所有处理器适配器都要实现HandlerAdapter接口,-->
        <!--通过适配器实现对handlReqeust的调用 -->
        
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
        
        <!-- 视图解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>

컨트롤러 클래스

package com.controller;

import java.lang.annotation.Annotation;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
//import org.springframework.web.servlet.mvc.Controller;


//1、基于注解
@Controller
@RequestMapping(value="/hello")
public class FirstController {
	
	@RequestMapping(value="/firstController")
	public String handleRequest(HttpServletRequest request,
			HttpServletResponse response, Model model) throws Exception {
		// 向模型对象中添加数据
		model.addAttribute("msg", "hello,这是我的第一个Spring MVC程序,基于annotation");
		// 返回视图页面
		return "first";
	}

}

//1、继承Controller类
//public class FirstController implements Controller{
//
//	@Override
//	public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
//		
//		ModelAndView mav = new ModelAndView();
//		
//		mav.addObject("msg", "hello,这是我的第一个Spring MVC程序,基于xml");
//		mav.setViewName("/WEB-INF/jsp/first.jsp");
//		return mav;
//	}
//}

보기 (jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
     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>

프로젝트를 Tomcat에 게시하고 Tomcat 서버를 시작한 다음 브라우저에 http : // localhost : 8080 / project name / hello / firstController를 입력합니다 (주석 기반).

어노테이션 사용 또는 컨트롤러 클래스 상속
1. springMVC.xml 파일이 다릅니다
. 2. web.xml 파일의 클래스 경로가 이에 따라 변경되어야합니다.
3. 브라우저에 입력 된 URL도 이에 따라 변경되어야합니다.

추천

출처blog.csdn.net/m0_46267375/article/details/106670294