国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringMVC相關(guān)知識點(diǎn)

這篇具有很好參考價值的文章主要介紹了SpringMVC相關(guān)知識點(diǎn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

概述

傳統(tǒng)開發(fā)中的控制層:
接收請求參數(shù) request.getParameter
封裝實(shí)體 new 實(shí)體類調(diào)用其set方法
訪問業(yè)務(wù)層
接收訪問結(jié)果
指派頁面 通過request和response對象進(jìn)行頁面跳轉(zhuǎn)
將共有行為進(jìn)行抽取成DispatcherServlet【SpringMVC內(nèi)部集成】,通過Spring-MVC.xml配置文件去配置。
Spring:
獲取請求參數(shù):形參與請求名一致或?qū)ο蟮膶傩耘c請求名一致即可自動獲取封裝,不一致時可用@RequestParam(“請求名”)獲取請求的參數(shù)
指派頁面:內(nèi)部可通過配置視圖解析器中前后綴的方式,簡化視圖名,可以直接返回字符串或者M(jìn)odelAndView對象
SpringMVC可以讓一個簡單的Java類成為處理請求的控制器,無需實(shí)現(xiàn)任何借口,支持RESTful編程風(fēng)格

執(zhí)行原理

?DispatcherServlet不執(zhí)行具體操作,負(fù)責(zé)的是相應(yīng)調(diào)度
1DispatcherServlet接收到請求后,調(diào)用HandlerMapping執(zhí)行請求解析,返回給DS一個處理器執(zhí)行鏈
2.拿到處理器執(zhí)行鏈后,DS本身并不執(zhí)行,找HandlerAdaptor幫助進(jìn)行執(zhí)行,由HandlerAdaptor調(diào)用執(zhí)行Handler,返回給DS一個ModelAndView
3.解析視圖時,會去調(diào)用ViewResolve進(jìn)行解析,返回一個View,最后進(jìn)行渲染視圖?
注意:ModelAndView中的View是一個字符串類型的視圖名,經(jīng)過ViewResolver解析后,返回真正的View對象

SpirngMVC中容器加載存在的兩個問題

存在問題1;
每個servlet中,都需要加載相應(yīng)的配置文件
弊端:配置文件加載多次,容器創(chuàng)建多個
解決辦法:將其放在filter中,將創(chuàng)建容器的代碼放在filter中。將容器對象存放在最大的域中【ServletContext域】
直接找對象拿,不通過屬性名更省心?
ServletContextLinstener中監(jiān)測到web應(yīng)用程序啟動
Spring【SpringMVC內(nèi)部集成】提供了ContextLoaderListener 導(dǎo)入其對應(yīng)的坐標(biāo)即可
存在問題2:應(yīng)用配置文件名寫死,解決方法:
1.使用全局初始化參數(shù)
<context-param>
??<param-mame>xxx </param>
???<param-value>classpath: xxx.xml <param-value>
</context-param>
獲取app時,通過WebAppliacationContextUtils的靜態(tài)方法,獲取應(yīng)用上下文對象

數(shù)據(jù)注入思想

方法誰調(diào)用誰負(fù)責(zé)傳入實(shí)參(MVC框架調(diào)用)常用的對象都進(jìn)行了封裝

靜態(tài)資源匹配

1.DispatcherServlet內(nèi)部是缺省的,所有的web請求都會通過DispatcherServlet,會將靜態(tài)資源當(dāng)作,requesmapping中去匹配,找不到時,便會報錯
解決辦法:開啟靜態(tài)資源訪問權(quán)限
<mvc:resources mapping = "/js/** ?location = "/js/">
可以有多個

解決辦法2:交由默認(rèn)的處理器進(jìn)行處理
<mvc: default-servlet-handler>

中文亂碼問題

1.tomcat8.5 get請求亂碼問題已解決(之前需要再tomcat目錄下修改相關(guān)配置)
2.post亂碼問題
post亂碼問題的兩個解決辦法:
辦法1:request對象設(shè)置
辦法2:配置全局過濾filter,內(nèi)部設(shè)置編碼格式
Spring框架已提供:CharacterEncodingFilter
映射地址改為 /*

@RequestMapping

請求url和請求的方法之間建立映射關(guān)系 ?可以用在類和方法上
注意:可以改變請求的方法類型,和限制必須攜代哪些請求參數(shù),內(nèi)部可以設(shè)置輸出字符串的編碼方式

@ResponseBody

告知SpringMVC框架進(jìn)行的是字符串的會寫,而不是進(jìn)行頁面的跳轉(zhuǎn)

注解補(bǔ)充

@RequestBody主要*用來接收前端傳遞給后端的json字符串中的數(shù)據(jù)的(請求體中的數(shù)據(jù))。由于GET方式?jīng)]有請求體,所以使用@RequestBody接受數(shù)據(jù)的時候,前端不能用GET方式提交數(shù)據(jù),而是用POST方式提交。

? 2、在后端的同一個接口中,@RequestBody和@ResquestParam()可以同時使用,@RequestBody最多只能有一個,而@ResquestParam()可以有多個。

? 3、@RequestBody 接收的是***請求體***里面的數(shù)據(jù);而@RequestParam接收的是***key-value***里面的參數(shù)。

4.用法 @RequestBody? 或@ResponseParanm("name名")
?

頁面跳轉(zhuǎn)

1.直接返回字符串 【和內(nèi)部資源視圖解析器拼接時,進(jìn)行返回,拼接是字符串內(nèi)部進(jìn)行拼接】
2.通過ModelAndView對象返回
通過ModelAndView的方法設(shè)置屬性名,里面同直接返回字符串一樣,會進(jìn)行拼接

數(shù)據(jù)響應(yīng)

1.直接返回字符串
需要添加@ResponseBody告知框架,不要進(jìn)行頁面跳轉(zhuǎn),進(jìn)行字符串的輸出 重點(diǎn)?。。。?!
需要指定格式
用到j(luò)son轉(zhuǎn)換工具
導(dǎo)包
jackson-core
jackson-databind
jackson-annnotations
new ObjectMapper
調(diào)用其write
默認(rèn)屬性
value屬性是默認(rèn)屬性,只有這一個可以省略不寫?

注解驅(qū)動

內(nèi)部集成了jackson json轉(zhuǎn)換工具
導(dǎo)入mvc命名空間后添加注解驅(qū)動如下
<mvc:annotation-driven>

監(jiān)聽器、過濾器、攔截器

監(jiān)聽器:當(dāng)事件發(fā)生時,執(zhí)行相關(guān)操作,比如服務(wù)器一啟動,加載Spring核心容器
過濾器:訪問目標(biāo)資源前,做干預(yù)操作,如post請求中文亂碼問題,配置在web.xml中的filter
攔截器:類似于Servlet開發(fā)中的Filter,用于對處理器進(jìn)行預(yù)處理和后處理
攔截器決定是否進(jìn)行放行操作,攔截器是AOP思想的體現(xiàn)
filter和Interceptor區(qū)別:
1.Filter是Servlet規(guī)范中的一部分,任何Java Web工程都可以使用 ?在url-pattern配置/* 后,對所有要訪問的資源攔截
2.Inteceptor:是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才可以使用,配置/** 后,可以對所有資源進(jìn)行攔截

使用方法

過濾器:實(shí)現(xiàn)filter接口,將實(shí)現(xiàn)類配置在web.xml中即可

攔截器:實(shí)現(xiàn)HandlerInteceptor接口,將實(shí)現(xiàn)類配置在Spring-mvc中

攔截器中的內(nèi)部方法

preHandler :返回false,后續(xù)Controller不再執(zhí)行
postHandler 目標(biāo)方法執(zhí)行完畢之后執(zhí)行,在視圖對象返回前進(jìn)行
afterCompletion : ?視圖對象返回之后,在流程執(zhí)行完畢后執(zhí)行,做收尾工作

異常處理

傳統(tǒng)開發(fā):

使用try-catch的方式,補(bǔ)獲和處理異常

異常處理和業(yè)務(wù)之間的代碼耦合度高

catch中的代碼相似度高

解決方法:

抽取,將異常向上拋出,由調(diào)用者負(fù)責(zé)相關(guān)處理,最終的調(diào)用者為DispatcherServlet

相關(guān)注意事項(xiàng)

return返回的資源加/ 表示從根目錄訪問
只有在一個Sevlet請求中才可以獲取ServletContext對象
所有的url請求到web端都是字符串
?

Resutful風(fēng)格

架構(gòu)風(fēng)格、設(shè)計風(fēng)格
url+請求方式
GET 獲取資源
POST 新建資源
PUT 更新資源
DELETE 刪除

前端請求在項(xiàng)目中的執(zhí)行鏈路

url請求-》tomcat服務(wù)器-》應(yīng)用程序->tomcat調(diào)用SpringMVC的service方法——》獲取到業(yè)務(wù)方法后,利用反射執(zhí)行方法文章來源地址http://www.zghlxwxcb.cn/news/detail-602566.html

到了這里,關(guān)于SpringMVC相關(guān)知識點(diǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JVM相關(guān)知識點(diǎn)

    Java可以跨平臺的原因是因?yàn)樗褂昧薐ava虛擬機(jī)(JVM)作為中間層。Java源代碼首先被編譯成字節(jié)碼,然后由JVM解釋執(zhí)行或即時編譯成本地機(jī)器代碼。這樣,在不同的操作系統(tǒng)上,只需要安裝適合該操作系統(tǒng)的JVM,就可以運(yùn)行相同的Java程序。JVM提供了一個抽象的執(zhí)行環(huán)境,使得

    2024年02月08日
    瀏覽(19)
  • Hadoop相關(guān)知識點(diǎn)

    Hadoop相關(guān)知識點(diǎn)

    開啟防火墻 sudo ufw enable 關(guān)閉防火墻 sudo ufw disable 查看防火墻狀態(tài) sudo ufw status 修改主機(jī)名 sudo vi /etc/hostname 修改映射 sudo vi /etc/hosts (考題) 建立文件夾 mkdir 文件夾名字 刪除文件夾 rm -rf 遞歸刪除文件夾向下穿透,其下所有文件、文件夾都會被刪除 rm -f 強(qiáng)制刪除文件 rm -r 遞歸

    2024年02月06日
    瀏覽(20)
  • ThreadLocal相關(guān)知識點(diǎn)

    ThreadLocal是Java中的一個類,它提供了一種線程局部變量的機(jī)制。它的作用是,為每個線程創(chuàng)建一個獨(dú)立的變量副本,各個線程之間互不干擾。簡單來說,ThreadLocal為多線程環(huán)境下的線程提供了一種線程私有的數(shù)據(jù)存儲方式。 使用ThreadLocal可以避免多線程中的數(shù)據(jù)共享和競爭條

    2024年02月11日
    瀏覽(26)
  • http相關(guān)知識點(diǎn)

    http相關(guān)知識點(diǎn)

    一張網(wǎng)頁實(shí)際上可能會有多種元素組成,這也就說明了網(wǎng)頁需要多次的http請求。 可由于http是基于TCP的,而TCP創(chuàng)建鏈接是有代價的,因此頻繁的創(chuàng)建鏈接會導(dǎo)致效率降低 為了防止這種情況,就需要兩端主機(jī)都具備支持長連接的功能,將大份的資源使用一條鏈接就包含,也就是

    2024年02月13日
    瀏覽(23)
  • Linux相關(guān)知識點(diǎn)

    Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。 Linux內(nèi)核 是一個Linux系統(tǒng)的內(nèi)核,而不是一個操作系統(tǒng) Linux操作系統(tǒng) 紅帽操

    2024年02月11日
    瀏覽(22)
  • MicroBlaZe 相關(guān)知識點(diǎn)

    1.DDR3——存儲.c的應(yīng)用程序。需要兩個時鐘(200MHZ輸入,還有一個是特權(quán)同學(xué)的166.6m) 2.QSPI FLASH——對flash進(jìn)行固化(1.需要50M外部時鐘輸入2.在SDK里面需要修改值為5)。 3.MicroBlaZe的輸入時鐘(mig輸出的時鐘頻率一般小于200MHZ)。 5.SDK里面會有個串口terminal可以顯示打印信息。

    2024年02月13日
    瀏覽(27)
  • DAC相關(guān)知識點(diǎn)

    1.回放數(shù)據(jù)64bit的數(shù)據(jù)來源有兩個地方: A——ROM波形數(shù)據(jù)表(數(shù)據(jù)來源可由dds產(chǎn)生或者matlab產(chǎn)生,本實(shí)際項(xiàng)目選擇由dds產(chǎn)生的數(shù)據(jù):通過寫地址出來相應(yīng)頻率的波形)。 B——預(yù)留的接口給客戶用來回訪他們的I/Q數(shù)據(jù) (64bit數(shù)據(jù)一般是4組16bit的IQ拼接的{i0,q0,i1,q1})。 2.6

    2024年02月12日
    瀏覽(17)
  • java相關(guān)知識點(diǎn)

    1.String和StringBuffer如何互相轉(zhuǎn)化 StringBuffer buffer = new StringBuffer(string); String string = buffer.toString(); ?2.如何實(shí)現(xiàn)兩個數(shù)組內(nèi)容的拷貝 ?3.如何去除字符串首尾空格 str.trim() ?4.字符串和字符數(shù)組如何相互轉(zhuǎn)換 字符串轉(zhuǎn)字符數(shù)組:str.toCharArray(); 字符數(shù)組轉(zhuǎn)字符串:strs.valueOf(char[] ch) ?

    2023年04月23日
    瀏覽(32)
  • Redis相關(guān)知識點(diǎn)

    Redis (REmote DIctionary Server) 是用 C 語言開發(fā)的一個開源的高性能鍵值對(key-value)數(shù)據(jù)庫,它支持網(wǎng)絡(luò),可基于內(nèi)存亦可持久化,并提供多種語言的API。Redis具有高效性、原子性、支持多種數(shù)據(jù)結(jié)構(gòu)、持久化、高并發(fā)讀寫等特點(diǎn)。 特征: 1.數(shù)據(jù)間沒有必然的關(guān)聯(lián)關(guān)系 2.內(nèi)部采用

    2024年01月23日
    瀏覽(74)
  • 深度學(xué)習(xí)相關(guān)知識點(diǎn)概念

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN) 是一種專門用于處理和分析具有網(wǎng)格結(jié)構(gòu)數(shù)據(jù)的人工神經(jīng)網(wǎng)絡(luò)。CNN主要應(yīng)用于計算機(jī)視覺領(lǐng)域,用于圖像識別、物體檢測、圖像分割等任務(wù)。 CNN的設(shè)計受到了生物視覺系統(tǒng)的啟發(fā),其主要特點(diǎn)是在網(wǎng)絡(luò)中引入了卷積層(convolutiona

    2024年04月16日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包