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

[框架]Spring MVC框架

這篇具有很好參考價(jià)值的文章主要介紹了[框架]Spring MVC框架。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

關(guān)于Spring MVC框架

Spring MVC框架的依賴(lài)項(xiàng)

使用Spring MVC框架接收請(qǐng)求

關(guān)于@RequestMapping注解

關(guān)于RESTful

關(guān)于@RequestParam注解

@RequestParam注解是添加在方法的參數(shù)上的,它的作用主要有: ?

其它


關(guān)于Spring MVC框架

MVCModel + View + Controller ?

Spring MVC框架主要解決了接收請(qǐng)求、響應(yīng)結(jié)果及相關(guān)問(wèn)題(例如處理異常等),即主要關(guān)注C的問(wèn)題,在不是前后端分離的項(xiàng)目,還關(guān)心V的問(wèn)題,但是,并不關(guān)心M的問(wèn)題。 ?

?Model:模型,數(shù)據(jù)處理的流程和規(guī)則。具體表現(xiàn)為service和mapper的整合。

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-513621.html

Spring MVC框架的依賴(lài)項(xiàng)

Spring MVC框架的基礎(chǔ)依賴(lài)項(xiàng)是:spring-webmvc ?

在Spring Boot中,使用Spring MVC框架應(yīng)該添加依賴(lài)項(xiàng):spring-boot-starter-web ?

?

使用Spring MVC框架接收請(qǐng)求

應(yīng)該創(chuàng)建控制器類(lèi),并在控制器類(lèi)上添加@Controller注解,在Spring MVC框架中,只有添加此注解的類(lèi)才是控制器類(lèi)!

默認(rèn)情況下,在Spring MVC框架中,控制器處理請(qǐng)求的結(jié)果(方法的返回值)將被視為“視圖組件的名稱(chēng)”,當(dāng)在處理請(qǐng)求的方法上添加@ResponseBody注解后,返回的結(jié)果才會(huì)被視為“響應(yīng)到客戶端的數(shù)據(jù)”,@ResponseBody注解還可以添加在控制器類(lèi)上,表示此類(lèi)中所有處理請(qǐng)求的方法的返回結(jié)果都是“響應(yīng)到客戶端的數(shù)據(jù)”,這種做法稱(chēng)之為“響應(yīng)正文”,或者,也可以將控制器類(lèi)上的注解改為@RestController,它是@Controller@ResponseBody的組合注解!

包括處理異常的“全局異常處理器類(lèi)”,需要添加的其實(shí)是@ControllerAdvice注解,添加此注解的類(lèi)中的特定方法(例如處理異常的方法)將可以作用于每次處理請(qǐng)求的過(guò)程中,但是,默認(rèn)情況下,仍不是“響應(yīng)正文”的,所以,當(dāng)處理異常需要響應(yīng)正文時(shí),需要在處理異常的方法上添加@ResponseBody注解,或在全局異常處理器的類(lèi)上添加@ResponseBody注解,或?qū)?code>@ControllerAdvice改為@RestControllerAdvice。

在控制器類(lèi)上,可以自定義方法用于處理請(qǐng)求,關(guān)于這些方法:

  • 訪問(wèn)權(quán)限:應(yīng)該是public

?

  • 返回值類(lèi)型:當(dāng)響應(yīng)正文時(shí),可自行將需要響應(yīng)的數(shù)據(jù)屬性封裝在自定義類(lèi)中,使用自定義類(lèi)作為返回值類(lèi)型

    • 當(dāng)使用自定義類(lèi)型進(jìn)行響應(yīng)正文時(shí),需要:

      • 需要添加jackson-databind依賴(lài)項(xiàng),在spring-boot-starter-web中已經(jīng)包含

      • 需要啟用Spring MVC的注解增強(qiáng),如果使用XML配置(早些年用的多),需要添加<annotation-driven/>,如果使用配置類(lèi)進(jìn)行配置,需要在配置類(lèi)上添加@EnableWebMvc注解,否則,響應(yīng)時(shí)會(huì)出現(xiàn)406錯(cuò)誤,在Spring Boot項(xiàng)目不需要手動(dòng)配置

  • 方法名稱(chēng):自定義

  • 參數(shù)列表:按需添加,且各參數(shù)不區(qū)分先后順序,可以將各請(qǐng)求參數(shù)逐一作為參數(shù)列表中的參數(shù),也可以將多個(gè)請(qǐng)求參數(shù)封裝到自定義類(lèi)型中,使用自定義類(lèi)型作為方法參數(shù)列表中的參數(shù),還可以按需添加HttpServletRequestHttpServletResponse、HttpSession等,在使用其它技術(shù)框架后,還可以按需添加其它參數(shù),例如結(jié)合@AuthenticationPrincipal注解添加Spring Security的當(dāng)事人

  • 拋出異常:理論上,處理請(qǐng)求的方法不應(yīng)該處理異常,而應(yīng)該拋出,進(jìn)而交由全局異常處理器進(jìn)行處理

所有處理請(qǐng)求的方法都必須添加@RequestMapping系列(還有GetMapping,PostMapping等)的某個(gè)注解,通過(guò)這些注解來(lái)配置請(qǐng)求路徑。

?

?

關(guān)于@RequestMapping注解

@RequestMapping注解的主要作用是配置請(qǐng)求路徑,通常,在類(lèi)上應(yīng)該配置此注解,例如: ?

@RestController
@RequestMapping("/admin")
public class AdminController {}

在方法上,建議使用限制了請(qǐng)求方式的某個(gè)基于@RequestMapping的注解,例如:

@RestController
@RequestMapping("/admin")
public class AdminController {
    
    @PostMapping("/login")
    public JsonResult login() {
        // ...
    }
    
    @GetMapping("/list")
    public JsonResult list() {
        // ...
    }
    
}

如果響應(yīng)可能出現(xiàn)亂碼,建議在類(lèi)上的@RequestMapping上配置produces屬性,以指定響應(yīng)的文檔類(lèi)型,例如:

@RestController
@RequestMapping(value = "/admin", produces = "application/json; charset=utf-8")
public class AdminController {}

?

?

關(guān)于RESTful

RESTful是一種軟件設(shè)計(jì)的風(fēng)格(并不是規(guī)則或規(guī)范)。

RESTful的典型特征包括:

  • ?將某些具有“唯一性”的參數(shù)值作為URL的一部分,例如:
http://localhost:9080/album/9527/delete
https://gitee.com/chengheng2022/jsd2302-csmall-server-teacher
  • 是前后端分離的,即:是響應(yīng)正文的

  • 根據(jù)處理數(shù)據(jù)的方式來(lái)選擇請(qǐng)求方式

    • 增加新的數(shù)據(jù)時(shí),應(yīng)該提交POST類(lèi)型的請(qǐng)求

    • 修改數(shù)據(jù)時(shí),應(yīng)該提交PUT類(lèi)型的請(qǐng)求

    • 刪除數(shù)據(jù)時(shí),應(yīng)該提交DELETE類(lèi)型的請(qǐng)求

    • 獲取數(shù)據(jù)時(shí),應(yīng)該提交GET類(lèi)型的請(qǐng)求

    • 通常不照做(因?yàn)闃I(yè)務(wù)的復(fù)雜性很難去界定具體使用哪一個(gè))

Spring MVC框架很好的支持了RESTful風(fēng)格,當(dāng)設(shè)計(jì)URL時(shí),如果URL中包含參數(shù)值,可以使用{自定義名稱(chēng)}進(jìn)行占位,例如:

// http://localhost:9180/album/9527/delete
@PostMapping("/{id}/delete")
//             ↑↑↑↑ 占位符

然后,在處理請(qǐng)求的方法上,在對(duì)應(yīng)的參數(shù)上添加@PathVariable注解,表示此參數(shù)值來(lái)自URL中同名占位符對(duì)應(yīng)的值,例如:

@PostMapping("/{id}/delete")
public JsonResult delete(@PathVariable Long id) {
    // ...
}

如果占位符中的名字與參數(shù)的變量名不同,需要在@PathVariable注解上指定參數(shù),例如:

@PostMapping("/{id}/delete")
public JsonResult delete(@PathVariable("id") Long albumId) {
    //                                ↑↑↑↑↑↑ 指定注解參數(shù),與占位符名稱(chēng)一致,則方法參數(shù)的變量名已經(jīng)不重要了
    // ...
}

在配置占位符名稱(chēng)時(shí),可以在自定義名稱(chēng)的右側(cè)添加冒號(hào),然后,在冒號(hào)右側(cè)添加正則表達(dá)式,以限制URL傳入的值的格式,例如:

@PostMapping("/{id:[0-9]+}/delete")

經(jīng)過(guò)以上配置,只有占位符位置是純數(shù)字的請(qǐng)求才可以匹配上,如果占位符位置不是純數(shù)字的請(qǐng)求(例如/abc/delete)則會(huì)響應(yīng)404。

注意:多不沖突的正則表式達(dá)的占位設(shè)計(jì)是允許共存的,例如:

@PostMapping("/{id:[0-9]+}/delete")
public JsonResult delete1() {}
@PostMapping("/{xx:[a-z]+}/delete")
public JsonResult delete2() {}

9527/delete的請(qǐng)求就走delete1,abcd/delete的請(qǐng)求就走delete2,彼此不沖突。?

另外,如果還有某個(gè)配置沒(méi)有使用占位符的設(shè)計(jì),也是允許與以上設(shè)計(jì)共存的,例如:

@PostMapping("/test/delete")
public JsonResult deleteTest() {}

關(guān)于RESTful風(fēng)格的URL設(shè)計(jì),如果你沒(méi)有更好的選擇,可以參考:

  • 查詢數(shù)據(jù)列表,格式為:/數(shù)據(jù)類(lèi)型的復(fù)數(shù)

    • 例如:/albums

  • 獲取某類(lèi)型的1個(gè)數(shù)據(jù),格式為:/數(shù)據(jù)類(lèi)型的復(fù)數(shù)/{數(shù)據(jù)ID}

    • 例如:/albums/{id:[0-9]+}

  • 對(duì)某類(lèi)型的1個(gè)數(shù)據(jù)執(zhí)行某個(gè)數(shù)據(jù)管理操作,格式為:/數(shù)據(jù)類(lèi)型的復(fù)數(shù)/{數(shù)據(jù)ID}/命令

    • 例如:/albums/{id:[0-9]+}/delete

?

?

關(guān)于@RequestParam注解

@RequestParam注解是添加在方法的參數(shù)上的,它的作用主要有: ?

  • ?配置請(qǐng)求參數(shù)的名稱(chēng)(用于請(qǐng)求參數(shù)的名稱(chēng)與方法參數(shù)不同時(shí)),例如:
// http://localhost:8080/login?username=root
public JsonResult login(@RequestParam("username") String xxx) {
    // ...
}
  • 配置必須提交某個(gè)請(qǐng)求參數(shù),因?yàn)榇俗⒔?code>required屬性默認(rèn)值為true

    • 此功能可以通過(guò)Validation框架來(lái)實(shí)現(xiàn)

  • 配置某個(gè)請(qǐng)求參數(shù)的默認(rèn)值,例如: ?
// http://localhost:8080/list
public JsonResult list(@RequestParam(defaultValue = "1") Integer page) {
    // ...
}

?

?

其它

例如全局異常處理器等

?

?

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

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

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

相關(guān)文章

  • 【Java EE】關(guān)于Spring MVC 響應(yīng)

    【Java EE】關(guān)于Spring MVC 響應(yīng)

    在博主前面寫(xiě)的博客 【Java EE】Spring請(qǐng)求如何傳遞參數(shù)詳解 中我們已經(jīng)設(shè)置了響應(yīng)數(shù)據(jù),Http響應(yīng)結(jié)果可以是數(shù)據(jù),也可以是靜態(tài)??,也可以針對(duì)響應(yīng)設(shè)置狀態(tài)碼, Header信息等 首先我們像創(chuàng)建一個(gè)靜態(tài)界面,創(chuàng)建位置如下: 前端代碼如下: 不過(guò)這里的后端的代碼和以前的代碼

    2024年04月14日
    瀏覽(24)
  • Spring MVC框架

    Spring MVC框架

    Spring MVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在Spring Web Flow里面。Spring 框架提供了構(gòu)建 Web 應(yīng)用程序的全功能 MVC 模塊。使用 Spring 可插入的 MVC 架構(gòu),從而在使用Spring進(jìn)行WEB開(kāi)發(fā)時(shí),可以選擇使用Spring的Spring MVC框架或集成其他MVC開(kāi)發(fā)框架,如Struts1(現(xiàn)在一般不用),Struts 2(一

    2024年02月05日
    瀏覽(18)
  • 38、springboot為 spring mvc 提供的靜態(tài)資源管理,覆蓋和添加靜態(tài)資源目錄

    38、springboot為 spring mvc 提供的靜態(tài)資源管理,覆蓋和添加靜態(tài)資源目錄

    ▲ 默認(rèn)的四個(gè)靜態(tài)資源目錄: /META-INF/resources /resources /static /public ▲ ResourceProperties.java類(lèi)的源代碼,可看到CLASSPATH_RESOURCE_LOCATIONS常量的定義: CLASSPATH_RESOURCE_LOCATIONS = new String[]{“classpath:/META-INF/resources/”, “classpath:/resources/”, “classpath:/static/”, “classpath:/public/”}; 這意味

    2024年02月11日
    瀏覽(24)
  • JavaWeb框架:Spring MVC介紹

    JavaWeb框架:Spring MVC介紹

    MVC(Model View Controller,模型-視圖-控制器) ,作為一種設(shè)計(jì)模式,用于應(yīng)用程序的分層開(kāi)發(fā)。 Spring MVC ,由 Spring 框架提供的基于 MVC 設(shè)計(jì)模式的一個(gè)輕量級(jí) Web 開(kāi)發(fā)框架。Spring MVC 提供了一個(gè)前端控制器 DispatcherServlet 來(lái)分派請(qǐng)求,然后通過(guò)配置處理程序映射、視圖解析等,使

    2024年02月12日
    瀏覽(16)
  • 【Spring框架全系列】初識(shí)Spring MVC(上)

    【Spring框架全系列】初識(shí)Spring MVC(上)

    ??哈嘍,大家好,我是小浪。接著上篇博客,我們學(xué)習(xí)了springboot配置日志文件,到此,那么springboot的內(nèi)容也更新的差不多了,由于是初學(xué)階段,所以不學(xué)習(xí)那么深入,那么我們學(xué)習(xí)框架都知道SSM,當(dāng)前我們已經(jīng)學(xué)習(xí)完畢springboot了,那么今天就來(lái)學(xué)習(xí)第二個(gè)S,Spring MVC;????

    2024年02月07日
    瀏覽(21)
  • SSM框架整合:掌握Spring+Spring MVC+MyBatis的完美結(jié)合!

    SSM框架整合:掌握Spring+Spring MVC+MyBatis的完美結(jié)合!

    (1) 創(chuàng)建工程 創(chuàng)建一個(gè)Maven的web工程 pom.xml添加SSM需要的依賴(lài)jar包 編寫(xiě)Web項(xiàng)目的入口配置類(lèi),實(shí)現(xiàn) AbstractAnnotationConfigDispatcherServletInitializer 重寫(xiě)以下方法。 getRootConfigClasses() :返回Spring的配置類(lèi)-需要 SpringConfig 配置類(lèi)。 getServletConfigClasses() :返回SpringMVC的配置類(lèi)-需要 SpringMvc

    2024年01月17日
    瀏覽(21)
  • 【SpringMVC】基于 Spring 的 Web 層MVC 框架

    【SpringMVC】基于 Spring 的 Web 層MVC 框架

    ??歡迎來(lái)到@邊境矢夢(mèng)°的csdn博文?? ??本文主要梳理SpringMVC : 基于 Spring 的 Web 層MVC 框架??? ??我是邊境矢夢(mèng)°,一個(gè)正在為秋招和算法競(jìng)賽做準(zhǔn)備的學(xué)生?? ??喜歡的朋友可以關(guān)注一下 ?????? ,下次更新不迷路?? Ps: 月亮越亮說(shuō)明知識(shí)點(diǎn)越重要 (重要性或者難度越大

    2024年02月08日
    瀏覽(20)
  • JavaWeb開(kāi)發(fā)框架對(duì)比與選擇:Struts、Spring MVC、JavaEE

    引言: ????????在JavaWeb開(kāi)發(fā)領(lǐng)域,選擇合適的開(kāi)發(fā)框架對(duì)于項(xiàng)目的成功與否至關(guān)重要。隨著技術(shù)的不斷發(fā)展,出現(xiàn)了許多優(yōu)秀的開(kāi)發(fā)框架,其中最為知名的包括Struts、Spring MVC和JavaEE。本文將對(duì)這三個(gè)框架進(jìn)行對(duì)比,并給出選擇的建議。 一、Struts框架 ????????Struts是一

    2024年02月04日
    瀏覽(24)
  • 探索Java中最常用的框架:Spring、Spring MVC、Spring Boot、MyBatis和Netty

    探索Java中最常用的框架:Spring、Spring MVC、Spring Boot、MyBatis和Netty

    ??歡迎來(lái)到Java面試技巧專(zhuān)欄~探索Java中最常用的框架:Spring、Spring MVC、Spring Boot、MyBatis和Netty ☆* o(≧▽≦)o *☆嗨~我是IT·陳寒?? ?博客主頁(yè):IT·陳寒的博客 ??該系列文章專(zhuān)欄:Java面試技巧 ??其他專(zhuān)欄:Java學(xué)習(xí)路線 Java面試技巧 Java實(shí)戰(zhàn)項(xiàng)目 AIGC人工智能 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)

    2024年02月08日
    瀏覽(31)
  • 【Spring框架二】——什么是Spring IOC、 什么是Spring 依賴(lài)注入

    【Spring框架一】——Spring框架簡(jiǎn)介 【Spring框架三】——Spirng IOC和DI的實(shí)現(xiàn) 本篇博客主要講解的是Spring 的IOC以及DI(依賴(lài)注入)的基本概念和優(yōu)勢(shì)利弊,如果想知道如何實(shí)現(xiàn)Spring IOC與DI可以訪問(wèn)博主的另外一篇博客。 【Spring框架三】——Spirng IOC和DI的實(shí)現(xiàn) 它的核心思想是將對(duì)

    2024年02月06日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包