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

springMVC常見視圖組件與RESTFul編程風格詳解

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

常見的視圖組件

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

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

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

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

  • View:視圖接口

? 這個接口負責將模板語法的字符串轉換成HTML代碼,并且將HTML代碼響應給瀏覽器進行渲染。

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

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

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

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

springMVC實現(xiàn)重定向

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

mvc:view-controller

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

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

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

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

訪問靜態(tài)資源

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

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

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

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

使用mvc:resources標簽必須開啟注解驅動 <mvc:annotation-driven /> 。

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

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

RESTFul編程風格

RESTFul(Respresentational State Transfer 表述性狀態(tài)轉移 簡稱REST)是web服務接口的一種設計風格。

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

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

REST對請求方式的約束:

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

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

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

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

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

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

RESTFul風格新增用戶信息

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

RESTFul風格修改用戶信息

修改用戶信息必須發(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ù))轉換為HTTP方法(如PUT、DELETE等)。
這對于HTML表單來說非常有用,因為HTML表單只支持GET和POST方法,
而通過使用隱藏字段,可以模擬其他HTTP方法,從而實現(xiàn)更豐富的RESTful API設計。-->
<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風格刪除用戶信息

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

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

相關文章

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

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

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

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

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

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

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

    SpringBoot 中使用JSP的方法示例

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

    Java職責鏈模式的深入了解

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

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

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

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

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

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

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

    java 異常的實例詳解

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

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

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

最新評論

德格县| 上思县| 浦县| 定西市| 泰和县| 自治县| 内乡县| 西城区| 额敏县| 泽库县| 南陵县| 凤山县| 通化市| 含山县| 伊春市| 开鲁县| 虞城县| 海安县| 新乐市| 如皋市| 饶河县| 温泉县| 万山特区| 留坝县| 武功县| 湘阴县| 错那县| 宣武区| 长宁县| 安远县| 彰化市| 军事| 灵石县| 瓦房店市| 聂荣县| 永定县| 南投市| 宿州市| 吴旗县| 安泽县| 丰顺县|