最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springMVC常見視圖組件與RESTFul編程風(fēng)格詳解

 更新時間:2026年02月28日 08:47:07   作者:NE_STOP  
本文給大家介紹springMVC常見視圖組件與RESTFul編程風(fēng)格,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

常見的視圖組件

Spring MVC支持的常見視圖包括:InternalResourceView:內(nèi)部資源視圖(Spring MVC內(nèi)置的,專門為jsp模板語法準(zhǔn)備的)、RedirectView(重定向視圖(Spring MVC內(nèi)置的,用來完成重定向效果)、ThymeleafView(第三方,專門為ThymeleafView模板語法準(zhǔn)備的)......

實現(xiàn)視圖機制的核心類和核心接口

  • DispatcherServlet:前端控制器
    • 負(fù)責(zé)接收前端請求
    • 根據(jù)請求路徑找到對應(yīng)的處理器方法
    • 執(zhí)行處理器方法
    • 最終返回ModelAndView對象
  • ViewResolver:視圖解析器接口

? 這個接口的作用是將邏輯視圖名稱轉(zhuǎn)換為物理視圖名稱。并最終返回一個view接口對象。

  • View:視圖接口

? 這個接口負(fù)責(zé)將模板語法的字符串轉(zhuǎn)換成HTML代碼,并且將HTML代碼響應(yīng)給瀏覽器進行渲染。

轉(zhuǎn)發(fā)與重定向的區(qū)別

轉(zhuǎn)發(fā)重定向
一次請求,瀏覽器地址欄不會發(fā)生變化兩次請求,瀏覽器地址欄會發(fā)生變化
轉(zhuǎn)發(fā)代碼:request.getRequestDispatcher("/index").forward(request,response);重定向代碼:response.sendRedirect("/webapp/index");
服務(wù)器內(nèi)部資源跳轉(zhuǎn),由服務(wù)器控制,不可實現(xiàn)跨域訪問可以完成內(nèi)部資源跳轉(zhuǎn),也可以完成跨域訪問
可以訪問WEB-INF目錄下受保護的資源無法訪問WEB-INF目錄下受保護的資源。(因為重定向相當(dāng)于瀏覽器重新發(fā)送了一次請求,瀏覽器發(fā)送的請求無法訪問被保護的資源)

springMVC實現(xiàn)轉(zhuǎn)發(fā)forward

@RequestMapping("/a")
public String toA(){
    // 采用springmvc的視圖轉(zhuǎn)發(fā)機制,跳轉(zhuǎn)到/b
    // 格式:forward:下一個資源的路徑,這里的b不是邏輯視圖名稱,是一個資源路徑
    return "forward:/b";
}
@RequestMapping("/b")
public String toB(){
    return "b";
}

springMVC實現(xiàn)重定向

@RequestMapping("/a")
public String toA(){
    // 采用springmvc的視圖重定向機制,跳轉(zhuǎn)到/b
    // 格式:redirect:下一個資源的路徑
    // 如果要實現(xiàn)跨域,需要寫全路徑,比如:https://baidu.com
    return "redirect:b";
}
@RequestMapping("/b")
public String toB(){
    return "b";
}

mvc:view-controller

這個配置用于將某個請求映射到特定的視圖上,即指定某一個URL請求到一個視圖資源的映射。使得這個視圖資源可以被訪問。相當(dāng)于一個獨立的處理程序,不需要編寫Controller,只需要指定URL和視圖名稱就可以了。

一般用來配置首頁、錯誤頁等。

在springmvc-servlet.xml文件中添加如下配置:

<!--    配置視圖控制器,必須開啟注解驅(qū)動才能生效-->
    <!--  path="/ok"表示訪問路徑,view-name="ok"表示視圖名稱。
     訪問http://localhost:8080/springmvc-04/ok時,
     會直接返回ok.html頁面,不需要經(jīng)過控制器方法的處理-->
    <mvc:view-controller path="/ok" view-name="ok" />
<!--    開啟注解驅(qū)動,支持@RequestMapping等注解-->
    <mvc:annotation-driven />

訪問靜態(tài)資源

使用默認(rèn)Servlet處理靜態(tài)資源

在springmvc-servlet.xml文件中添加如下配置:

 <!--   開啟默認(rèn)的servlet處理器,允許靜態(tài)資源(如CSS、JavaScript、圖片等)通過默認(rèn)的servlet進行處理,而不是被Spring MVC攔截。
     這對于提供靜態(tài)資源非常重要,否則這些資源可能無法正確加載。
     當(dāng)請求的URL沒有匹配到任何控制器方法時,默認(rèn)的servlet處理器會嘗試查找對應(yīng)的靜態(tài)資源并返回給客戶端。
     例如,如果請求http://localhost:8080/springmvc-04/css/style.css,默認(rèn)的servlet處理器會嘗試找到webapp目錄下的css/style.css文件并返回給客戶端。
     如果沒有開啟默認(rèn)的servlet處理器,Spring MVC會嘗試處理所有請求,包括靜態(tài)資源的請求,這可能會導(dǎo)致靜態(tài)資源無法正確加載,出現(xiàn)404錯誤。
     因此,開啟默認(rèn)的servlet處理器是確保靜態(tài)資源能夠正確加載的重要配置。
     需要注意的是,默認(rèn)的servlet處理器只會處理那些沒有被Spring MVC攔截的請求,如果請求被Spring MVC攔截了,那么默認(rèn)的servlet處理器就不會介入處理了。
     另外,默認(rèn)的servlet處理器也不會處理那些被Spring MVC攔截但沒有找到匹配的控制器方法的請求,這些請求會直接返回404錯誤,而不會嘗試查找靜態(tài)資源。
     因此,開啟默認(rèn)的servlet處理器是確保靜態(tài)資源能夠正確加載的重要配置,但也需要確保Spring MVC的請求映射配置正確,以避免不必要的請求被Spring MVC攔截,導(dǎo)致靜態(tài)資源無法加載。
-->
    <mvc:default-servlet-handler />

使用mvc:resources標(biāo)簽配置靜態(tài)資源

使用mvc:resources標(biāo)簽必須開啟注解驅(qū)動 <mvc:annotation-driven /> 。

在springmvc-servlet.xml文件中添加如下配置:

<!--    開啟注解驅(qū)動,支持@RequestMapping等注解-->
    <mvc:annotation-driven />  
<!--  配置靜態(tài)資源處理器,mapping屬性指定訪問路徑,location屬性指定資源位置。
     例如,mapping="/static/**"表示訪問路徑以/static/開頭的請求會被該資源處理器處理,location="/static/"表示資源文件位于webapp目錄下的static文件夾中。
     當(dāng)請求http://localhost:8080/springmvc-04/static/css/style.css時,該資源處理器會嘗試找到webapp目錄下的static/css/style.css文件并返回給客戶端。
-->
    <mvc:resources mapping="/static/**" location="/static/" />

RESTFul編程風(fēng)格

RESTFul(Respresentational State Transfer 表述性狀態(tài)轉(zhuǎn)移 簡稱REST)是web服務(wù)接口的一種設(shè)計風(fēng)格。

RESTFul對一個web服務(wù)接口規(guī)定了哪些東西?

  • 對請求的URL格式有約束和規(guī)范
  • 對HTTP請求方式有約束和規(guī)范
  • 對請求和響應(yīng)的數(shù)據(jù)格式有約束和規(guī)范
  • 對HTTP狀態(tài)碼有約束和規(guī)范

REST對請求方式的約束:

  • 查詢必須是get請求
  • 新增必須是post請求
  • 修改必須是put請求
  • 刪除必須是delete請求

RESTFul對URL的約束和規(guī)范的核心是采用不同的請求方式+URL來確定web服務(wù)中的資源。

RESTFul風(fēng)格查詢所有數(shù)據(jù)

@GetMapping("/user")
public String getAllUsers() {
    return "success";
}

RESTFul風(fēng)格根據(jù)id查詢一條數(shù)據(jù)

@GetMapping("/user/{id}")
public String getUserById(@PathVariable("id") Integer id) {
    return "success";
}

RESTFul風(fēng)格新增用戶信息

@PostMapping("/user")
public String saveUser(User user) {
    return "success";
}

RESTFul風(fēng)格修改用戶信息

修改用戶信息必須發(fā)送put請求。

如何發(fā)送put或delete請求呢?

  • 要想發(fā)送put請求,。首先必須是一個post請求
  • 在post請求表單中添加隱藏域
<!--name 必須是_method,value必須是put或者是delete-->
<input type="hidden" name="_method" value="put">
  • 在web.xml添加一個過濾器
<!--這個過濾器的作用是將HTTP請求中的隱藏字段(通常是一個名為"_method"的參數(shù))轉(zhuǎn)換為HTTP方法(如PUT、DELETE等)。
這對于HTML表單來說非常有用,因為HTML表單只支持GET和POST方法,
而通過使用隱藏字段,可以模擬其他HTTP方法,從而實現(xiàn)更豐富的RESTful API設(shè)計。-->
<filter>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
@PutMapping("/user")
public String modifyUser(User user) {
    return "success";
}

RESTFul風(fēng)格刪除用戶信息

@DeleteMapping("/user/{id}")
public String deleteUserById(@PathVariable("id") Integer id) {
    return "success";
}

到此這篇關(guān)于springMVC-常見視圖組件與RESTFul編程風(fēng)格的文章就介紹到這了,更多相關(guān)springMVC-常見視圖組件與RESTFul編程風(fēng)格內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 實戰(zhàn)項目之家居購物商城系統(tǒng)詳解流程

    Java 實戰(zhàn)項目之家居購物商城系統(tǒng)詳解流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實現(xiàn)一個家居購物商城系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-11-11
  • Java多線程的其他知識_動力節(jié)點Java學(xué)院整理

    Java多線程的其他知識_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了Java多線程的其他知識,需要的朋友可以參考下
    2017-05-05
  • SpringBoot如何查看和修改依賴的版本

    SpringBoot如何查看和修改依賴的版本

    這篇文章主要介紹了SpringBoot如何查看和修改依賴的版本問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot 中使用JSP的方法示例

    SpringBoot 中使用JSP的方法示例

    本篇文章主要介紹了SpringBoot 中使用JSP的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Java職責(zé)鏈模式的深入了解

    Java職責(zé)鏈模式的深入了解

    這篇文章主要為大家介紹了Java職責(zé)鏈模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Java策略模式的簡單應(yīng)用實現(xiàn)方法

    Java策略模式的簡單應(yīng)用實現(xiàn)方法

    這篇文章主要介紹了Java策略模式的簡單應(yīng)用實現(xiàn)方法,需要的朋友可以參考下
    2014-02-02
  • java中將一個實體類復(fù)制到另一個實體類的3種方法示例

    java中將一個實體類復(fù)制到另一個實體類的3種方法示例

    這篇文章主要給大家介紹了關(guān)于java中將一個實體類復(fù)制到另一個實體類的3種方法,所謂實體類就是一個擁有Set和Get方法的類,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • SpringBoot集成ElasticSearch(ES)實現(xiàn)全文搜索功能

    SpringBoot集成ElasticSearch(ES)實現(xiàn)全文搜索功能

    Elasticsearch是一個開源的分布式搜索和分析引擎,它被設(shè)計用于處理大規(guī)模數(shù)據(jù)集,它提供了一個分布式多用戶能力的全文搜索引擎,本文將給大家介紹SpringBoot集成ElasticSearch(ES)實現(xiàn)全文搜索功能,需要的朋友可以參考下
    2024-02-02
  • java 異常的實例詳解

    java 異常的實例詳解

    這篇文章主要介紹了java 異常的實例詳解的相關(guān)資料,希望通過本文大家能徹底掌握java異常的使用方法,需要的朋友可以參考下
    2017-09-09
  • springboot數(shù)據(jù)庫密碼加密的配置方法

    springboot數(shù)據(jù)庫密碼加密的配置方法

    這篇文章主要給大家介紹了關(guān)于springboot數(shù)據(jù)庫密碼加密的配置方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評論

涿州市| 枣庄市| 银川市| 抚顺县| 重庆市| 宁化县| 吉隆县| 荃湾区| 太谷县| 琼结县| 永清县| 建昌县| 句容市| 凉山| 尖扎县| 顺昌县| 广水市| 江西省| 昔阳县| 嘉定区| 白沙| 阳东县| 曲阳县| 彝良县| 桦川县| 大竹县| 志丹县| 湘潭县| 黑水县| 石楼县| 应城市| 临安市| 印江| 辽宁省| 汪清县| 潜山县| 开平市| 泸州市| 日照市| 钟山县| 华蓥市|