日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

5.SpringMVC

發(fā)布時(shí)間:2023/12/15 javascript 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5.SpringMVC 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.SpringMVC概述

概述:

  SpringMVC是基于請求驅(qū)動(dòng),圍繞一個(gè)核心Servlet 轉(zhuǎn)發(fā)請求到對應(yīng)的Controller而設(shè)計(jì)的
優(yōu)點(diǎn):
是一個(gè)典型的教科書式的MVC構(gòu)架,易學(xué)易用
提供了清晰的角色劃分,比如Controller、validator、handler mapping、view resolver等
可重用的業(yè)務(wù)代碼
可定制的數(shù)據(jù)綁定和驗(yàn)證,可定制的視圖解決方案
提供了一套強(qiáng)大又使用簡單的標(biāo)簽庫
支持Restful風(fēng)格

體系結(jié)構(gòu):

1、客戶端發(fā)出請求,交給DispatcherServlet處理
2、DispatcherServlet根據(jù)請求信息及HandlerMapping的配置找到處理請求的處理器(Handler)
3、DispatcherServlet通過HandlerAdapter對Handler進(jìn)行封裝,再以統(tǒng)一的適配器接口調(diào)用Handler
4、處理器完成業(yè)務(wù)邏輯,返回一個(gè)ModelAndVIew給DispatcherServlet,ModelAndView包含視圖邏輯名和模型數(shù)據(jù)信息
5、DispatcherServlet借由ViewResolver完成邏輯視圖名到真實(shí)視圖的解析工作
6、得到View真實(shí)視圖后,DispatcherServlet就使用這個(gè)View對象對ModelAndView中的模型數(shù)據(jù)進(jìn)行渲染
7、最終客戶得到響應(yīng)

?

?2.控制器

DispatcherServlet:

DispatcherServlet繼承自HttpServlet,是整個(gè)SpringMVC中的前端控制器,主要負(fù)責(zé)流程控制

DispatcherServlet使用了專有的Bean來處理請求和渲染視圖,可以在WebApplicationContext中進(jìn)行配置,這些Bean包括:

Bean類型

解釋

HandlerMapping

將傳入請求映射到處理器

HandlerAdapter

將處理器包裝為適配器,從而支持多種類型的處理器

ViewResolver

將邏輯視圖名解析為具體的View

LocaleResolver & LocaleContextResolver

解釋客戶端所在地區(qū)和其時(shí)區(qū)(本地化),以便提供國際化的視圖

ThemeResolver

解釋W(xué)eb程序可用主題,比如提供個(gè)性化布局

MultipartResolver

解釋multi-part請求,比如表單里支持文件上傳

當(dāng)一個(gè)請求傳進(jìn)來后,DispatcherServlet會(huì)按以下順序處理:
尋找 WebApplicationContext,并將 WebApplicationContext作為一個(gè)屬性綁定到請求里,以便控制器或其他原件在后續(xù)中使用。默認(rèn)會(huì)以DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE 鍵綁定到請求里
將本地化解析器綁定到請求里,以便在處理這個(gè)請求時(shí),原件可以解析到客戶端的地區(qū)(為了渲染視圖,準(zhǔn)備日期等)
將主題解析其綁定到請求里,讓原件(如視圖)決定去使用哪一種主題
若指定一個(gè)multipart file解析器,會(huì)檢查這個(gè)請求包含multiparts請求
尋找合適的 handler。如何找到這個(gè) handler,執(zhí)行與這個(gè) handler 關(guān)聯(lián)的執(zhí)行鏈
如果返回一個(gè) model,渲染相對應(yīng)的視圖

?

Controller:

客戶請求經(jīng)由前端控制器DispatcherServlet后,分發(fā)給后續(xù)子控制器Controller
SpringMVC的Controller會(huì)獲取用戶的輸入,訪問由服務(wù)接口定義的業(yè)務(wù)邏輯功能,并通過視圖將模型數(shù)據(jù)再響應(yīng)給用戶
從Spring2.5以后,提供了一組注解用于SpringMVC的編程,比如:@Controller、@RequestMapping、@RequestParam

@RequestMapping中,還可以使用method來限制請求的類型,比如以下例子中映射login的URL,并且是Get方式的請求

?

URI模板模式
URI模版是一個(gè)類似于URI的字符串,其中包含了一個(gè)或多個(gè)變量。當(dāng)你將這些變量替換掉市,就變回了URI
例如:路徑為http://www.example.com/owners/fred,則方法中ownerId的值即為“fred”

路徑模式
@RequestMapping注解處理支持URI模版,也支持使用Ant風(fēng)格模式
/user/regist, 匹配/user/regist
/user/*/regist, 匹配/user/aaa/regist
/user/**/regist, 匹配/user/regist、/user/aaa/bbb/regist等
/user/regist?, 匹配/user/regista等

@RequestMapping還支持組合使用URI模版和Ant風(fēng)格模式
如:/owners/*/pets/{petId}

矩陣變量:

開啟矩陣變量的支持:<mvc:annotation-driven enable-matrix-variables="true"/>

矩陣變量實(shí)例:

?

?

@RequestParam將請求參數(shù)綁定到方法參法:

@CookieValue注解允許將方法參數(shù)與HTTPcookie 值綁定

?

?

@RequestHeader 映射請求頭字段屬性

?

@ResponseBody此注解用在方法上,用來表示直接將返回?cái)?shù)據(jù)寫到HTTP響應(yīng)體里
一般用于響應(yīng)AJAX的請求,返回JSON格式的字符串
注意:不是將數(shù)據(jù)放到Model中,或解析為視圖名稱

3.攔截器

Spring的handler映射機(jī)制包含了handler攔截器
使用handler攔截器,可以在某些的請求中應(yīng)用的特殊的功能,比如說檢查權(quán)限、防止表單重復(fù)提交等等
handler映射的攔截器必須實(shí)現(xiàn)HandlerInterceptor接口,該接口有3個(gè)方法:
preHandle(..) 在handler執(zhí)行前調(diào)用
postHandle(..) 在handler執(zhí)行后調(diào)用
afterCompletion(..) 在整一個(gè)請求完成后調(diào)用

注意:不是將數(shù)據(jù)放到Model中,或解析為視圖名稱

攔截器在SpringMVC配置文件中如下配置:

4.文件上傳

文件上傳在Web項(xiàng)目中使用廣泛,而SpringMVC提供了2種常用的方法來實(shí)現(xiàn)
基于Servlet3.0的文件上傳
基于Commons FileUpload的文件上傳

頁面表單代碼如下:

基于Servlet3.0的實(shí)現(xiàn):

在web.xml中的DispatcherServlet增加“multipart-config”配置

在SpringMVC配置文件中增加

?

編寫Controller類:

Commons Fileupload:

需要導(dǎo)入commons-fileupload.jar和commons-io.jar
在SpringMVC配置文件中增加:

編寫Controller類:

?

轉(zhuǎn)載于:https://www.cnblogs.com/Firesun/p/9921111.html

總結(jié)

以上是生活随笔為你收集整理的5.SpringMVC的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。