自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

老師問我 Spring MVC 的工作流程

開發(fā) 架構(gòu)
Spring MVC是Spring提供的一個實現(xiàn)了Web MVC設(shè)計模式的輕量級Web框架。它與Struts2框架一樣,都屬于MVC框架,但其使用和性能等方面比Struts2更加優(yōu)異。

[[432210]]

GitHub:https://github.com/nateshao/ssm/tree/master/106-springmvc-hello

1. Spring MVC概述

什么是Spring MVC?

Spring MVC是Spring提供的一個實現(xiàn)了Web MVC設(shè)計模式的輕量級Web框架。它與Struts2框架一樣,都屬于MVC框架,但其使用和性能等方面比Struts2更加優(yōu)異。

Spring MVC具有以下特點:

  1. 是Spring框架的一部分,可以方便的利用Spring所提供的其他功能。
  2. 靈活性強,易于與其他框架集成。
  3. 提供了一個前端控制器DispatcherServlet,使開發(fā)人員無需額外開發(fā)控制器對象。
  4. 可自動綁定用戶輸入,并能正確的轉(zhuǎn)換數(shù)據(jù)類型。
  5. 內(nèi)置了常見的校驗器,可以校驗用戶輸入。如果校驗不能通過,那么就會重定向到輸入表單。
  6. 支持國際化。可以根據(jù)用戶區(qū)域顯示多國語言。
  7. 支持多種視圖技術(shù)。它支持JSP、Velocity和FreeMarker等視圖技術(shù)。
  8. 使用基于XML的配置文件,在編輯后,不需要重新編譯應(yīng)用程序。

2. 第一個Spring MVC應(yīng)用

在IDEA中,創(chuàng)建一個名稱為106-springmvc-hello的Web項目,具體參考:https://github.com/nateshao/ssm/tree/master/106-springmvc-hello

在web.xml中,配置Spring MVC的前端控制器DispatcherServlet。

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
  3.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4.          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 
  5.          version="4.0"
  6.     <context-param> 
  7.         <param-name>contextConfigLocation</param-name
  8.         <param-value>/WEB-INF/applicationContext.xml</param-value> 
  9.     </context-param> 
  10.     <listener> 
  11.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
  12.     </listener> 
  13.     <servlet> 
  14.         <servlet-name>dispatcher</servlet-name
  15.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
  16.         <load-on-startup>1</load-on-startup> 
  17.     </servlet> 
  18.     <servlet-mapping> 
  19.         <servlet-name>dispatcher</servlet-name
  20. <!--        <url-pattern>*.form</url-pattern>--> 
  21.         <url-pattern>/</url-pattern> 
  22.     </servlet-mapping> 
  23. </web-app> 

 

 

dispatcher-servlet.xml

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <beans xmlns="http://www.springframework.org/schema/beans" 
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  4.        xmlns:context="http://www.springframework.org/schema/context" 
  5.        xmlns:mvc="http://www.springframework.org/schema/mvc" 
  6.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"
  7.  
  8.     <context:component-scan base-package="com.nateshao"/> 
  9.     <mvc:default-servlet-handler/> 
  10.     <mvc:annotation-driven/> 
  11.     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
  12.           id="internalResourceViewResolver"
  13.         <property name="prefix" value="/WEB-INF/jsp/"/> 
  14.         <property name="suffix" value=".jsp"/> 
  15.     </bean> 
  16. </beans> 

 

 

hello.jsp

  1. <%-- 
  2.   Created by IntelliJ IDEA. 
  3.   User: 邵桐杰 
  4.   Date: 2021/10/16 
  5.   Time: 16:13 
  6.   To change this template use File | Settings | File Templates. 
  7. --%> 
  8. <%@ page contentType="text/html;charset=UTF-8" language="java" %> 
  9. <html> 
  10. <head> 
  11.     <title>Title</title> 
  12. </head> 
  13. <body> 
  14.  <h2>hello springmvc</h2> 
  15. </body> 
  16. </html> 
  1. <%-- 用EL表達(dá)式獲取后臺處理器封裝的信息 --%> 
  2.   $END

控制臺輸出:

瀏覽器訪問:http://localhost:8080/106_springmvc_hello_war_exploded/hello

3. Spring MVC的工作流程(重點!!!)

Spring MVC是如何工作的呢?(面試高頻)

“通過入門案例的學(xué)習(xí),相信讀者對Spring MVC的使用已經(jīng)有了一個初步的了解。在實際開發(fā)中,我們的實際工作主要集中在控制器和視圖頁面上,但Spring MVC內(nèi)部完成了很多工作,這些程序在項目中具體是怎么執(zhí)行的呢?接下來,將通過一張圖來展示Spring MVC程序的執(zhí)行情況。

  • 用戶通過瀏覽器向服務(wù)器發(fā)送請求,請求會被Spring MVC的前端控制器DispatcherServlet所攔截
  • DispatcherServlet攔截到請求后,會調(diào)用HandlerMapping處理器映射器;
  • 處理器映射器根據(jù)請求URL找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet;
  • DispatcherServlet會通過返回信息選擇合適的HandlerAdapter(處理器適配器);
  • HandlerAdapter會調(diào)用并執(zhí)行Handler(處理器),這里的處理器指的就是程序中編寫的Controller類,也被稱之為后端控制器;
  • Controller執(zhí)行完成后,會返回一個ModelAndView對象,該對象中會包含視圖名或包含模型和視圖名;
  • HandlerAdapter將ModelAndView對象返回給DispatcherServlet;
  • DispatcherServlet會根據(jù)ModelAndView對象選擇一個 合適的ViewReslover(視圖解析器) ;
  • ViewReslover解析后,會向DispatcherServlet中返回具體的View(視圖) ;
  • DispatcherServlet對View進(jìn)行渲染( 即將模型數(shù)據(jù)填充至視圖中) ;

總結(jié)

本章首先對Spring MVC框架進(jìn)行了簡單的介紹,

然后講解了一個Spring MVC入門程序的編寫,

最后通過入門案例對Spring MVC的工作流程進(jìn)行了詳細(xì)講解。

 

通過本章的學(xué)習(xí),我們能夠了解什么是Spring MVC,以及Spring MVC的優(yōu)點,掌握Spring MVC入門程序的編寫,并能夠熟悉Spring MVC框架的工作流程。

 

責(zé)任編輯:武曉燕 來源: 程序員千羽
相關(guān)推薦

2023-05-05 08:29:15

Spring后臺服務(wù)器

2011-03-31 10:54:01

Cacti工作流程

2024-03-26 08:08:08

SpringBPMN模型

2010-07-13 16:21:22

FIX協(xié)議

2010-06-12 17:44:19

ARP協(xié)議

2009-06-05 10:26:05

struts工作流程

2010-09-27 10:19:09

DHCP工作流程

2022-11-02 15:11:44

LightHouseChrome插件

2010-06-23 14:46:54

DHCP協(xié)議

2010-06-24 16:40:16

Bittorrent協(xié)

2010-07-28 17:19:28

ICMP協(xié)議

2009-07-27 14:13:15

2011-03-29 09:30:12

Cacti

2011-08-08 15:14:11

PPPOE

2012-02-01 14:02:00

蘋果產(chǎn)品開發(fā)

2020-10-13 21:25:15

DevOps核心

2010-07-26 14:55:56

Telnet服務(wù)器

2021-11-05 11:10:13

MyBatisSQL查詢

2010-08-30 09:07:12

DHCP工作流程

2023-06-05 08:14:17

RabbitMQ兔子MQ開源
點贊
收藏

51CTO技術(shù)棧公眾號