1. 程式人生 > >Spring MVC學習筆記1——Spring MVC 簡介

Spring MVC學習筆記1——Spring MVC 簡介

什麼是Spring MVC

Spring MVCSpring框架的一個模組,Spring MVCSpring無需通過中間整合層進行整合

Spring MVC是一個基於MVCweb框架。

Spring MVC框架原理

在這裡插入圖片描述

  1. 發起請求到前端控制器(DispatcherServlet)。
  2. 前端控制器請求HandlerMapping查詢Handler(可以根據xml配置、註解進行查詢)。
  3. 處理器對映器HandlerMapping向前端控制器返回Handler
  4. 前端控制器呼叫處理器介面卡去執行Handler
  5. 處理器介面卡去執行Handler
  6. Handler執行完成給介面卡返回ModelAndView
  7. 處理器介面卡向前端控制器返回ModelAndViewModelAndViewSpring MVC框架的一個底層物件,包括ModelView
  8. 前端控制器請求檢視解析器去進行檢視解析,根據邏輯檢視名解析成真正的檢視(jsp)。
  9. 檢視解析器向前端控制器返回View
  10. 前端控制器進行檢視渲染,檢視渲染將模型資料(在ModelAndView物件中)填充到request域 。
  11. 前端控制器向用戶響應結果。

元件

前端控制器DispatcherServlet(不需要程式設計師開發)

作用:接收請求,響應結果,相當於轉發器,中央處理器。 有了DispatcherServlet,減少了其他元件之間的耦合度。

處理器對映器HandlerMapping(不需要程式設計師開發)

作用:根據請求的url查詢Handler

處理器Handler(需要程式設計師開發)

注意:編寫Handler時按照HandlerAdapter的要求去做,這樣介面卡才可以去正確執行Handler

處理器介面卡HandlerAdapter

作用:按照特定規則(HandlerAdapter要求的規則)執行Handler

檢視解析器ViewResolver(不需要程式設計師開發)

作用:進行檢視解析,根據邏輯檢視名解析成真正的檢視(View)。

檢視View(需要程式設計師開發jsp

View是一個介面,實現類支援不同的View

型別(jspfreemarkerpdf…)。

開發步驟

  1. 加入jar包。
  2. web.xml中配置DispatcherServlet
<?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">
  
  	<!-- 配置DispatcherServlet -->
	<servlet>
		<servlet-name>springDispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		
		<!-- 配置DispatcherServlet的一個初始化引數:配置SpringMVC配置檔案的位置和名稱 -->
		<!-- 
			實際上也可以不通過contextConfigLocation來配置SpringMVC的配置檔案,而使用預設的
			預設的配置檔案為:/WEB-INF/<servlet-name>-servlet.xml
			即:此例中配置檔案springmvc.xml重新命名為springmvc-servlet.xml,並放到/WEB-INF下
		-->
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
		
		<!-- 這個servlet在當前應用被載入時就建立 -->
		<load-on-startup>1</load-on-startup>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
  
</web-app>
  1. 加入Spring MVC的配置檔案。
<?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-4.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

	<!-- 配置自動掃描的包 -->
	<context:component-scan base-package="com.springmvc"></context:component-scan>
	
	<!-- 配置檢視解析器:如何把handler方法返回值解析為實際的物理檢視 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
	
</beans>
  1. 編寫處理請求的處理器,並標識為處理器。
@Controller
public class HelloWorld {

	/*
	 * 1.使用@RequestMapping註解來對映請求的URL
	 * 2.返回值會通過檢視解析器解析為實際的物理檢視,對於InternaResourceViewlResolver檢視解析器,會做如下的解析:
	 * 	通過  prefix + returnVal + suffix 這樣的方式得到實際的物理檢視,然後做轉發操作
	 * 	/WEB-INF/views/success.jsp
	 */
	@RequestMapping("/helloworld")
	public String hello() {
		
		System.out.println("hello world");
		return "success";
		
	}
	
}
  1. 編寫檢視。