SpringMVC:轉發和重定向

?1. 請求轉發和重定向簡介

參考該鏈接第9點

2. forward

返回下一個資源路徑,請求轉發固定格式:return "forward:資源路徑"如 return "forward:/b" 此時為一次請求
返回邏輯視圖名稱
返回邏輯視圖不指定方式時都會默認使用請求轉發

index.html?

<body><a th:href="@{/a}">A頁面</a> <br><a th:href="@{/b}">B頁面</a> <br><a th:href="@{/test}">test</a>
</body>

Controller層?

@Controller
public class IndexController {@RequestMapping(value = {"/"})public String toIndex() {return "index";}
 @RequestMapping("/a")public String toA() {return "forward:/b";}
@RequestMapping("/b")public String toB() {return "b";}

3. redirect

返回要響應重定向的資源路徑,響應重定向固定格式:return "redirect:資源路徑"
重定向如果要跨域要寫全路徑如:return "redirect:http:localhost:8080/springmvc/a/b/c" 此時讓客戶端重新發送請求請求
@RequestMapping("/a")public String toA() {return "redirect:/b";}

4. 簡化配置

<!--該代碼表示訪問/test資源時自動向test邏輯視圖進行跳轉--><mvc:view-controller path="/test" view-name="test"></mvc:view-controller><!--當配置了上面的代碼所有@Controller注解會失效,需要配置以下信息開啟注解--><mvc:annotation-driven></mvc:annotation-driven>
<!--如果只是單純進行頁面跳轉沒有任何業務邏輯處理,只需要配置以下信息即可
以上代碼效果等同于
@RequestMapping("/test")
public String toTest() {return "test";
}
-->

?5. 訪問靜態資源

關于靜態資源的訪問:假設我們在webapp目錄下創建static目錄,下面存放img.png圖片資源我們可以通過地址欄http://localhost:8080/springmvc/static/img.png進行訪問么?答案是不行,因為會走DispatcherServlet,之后會從控制器中走相應方法最后通過邏輯視圖尋找對應資源而此時在控制器中找不到對應邏輯視圖,即資源不存在會報404錯誤

?方案一

在springmvc.xml文件中配置
<mvc:default-servlet-handler></mvc:default-servlet-handler>
<mvc:annotation-driven></mvc:annotation-driven>
即手動開啟DefaultServlet
當訪問http://localhost:8080/springmvc/static/img.png會默認先走DispatcherServlet,
當報404錯誤時會走DefaultServlet,然后DefaultServlet會幫你定位到靜態資源
DefaultServlet默認是關閉的,需要手動開啟
<!--該代碼表示訪問/test資源時自動向test邏輯視圖進行跳轉--><mvc:view-controller path="/test" view-name="test"></mvc:view-controller><!--當配置了上面的代碼所有@Controller注解會失效,需要配置以下信息開啟注解--><mvc:annotation-driven></mvc:annotation-driven>

方案二

使用 mvc:resources 標簽配置靜態資源
<mvc:annotation-driven></mvc:annotation-driven>
<mvc:resources mapping="/static/**" location="/static/" />
即static路徑下的任意資源都可以訪問
注意:要想使用 `<mvc:resources>` 配置,必須開啟注解驅動 `<mvc:annotation-driven />`
<!--開啟默認Servlet處理--><mvc:default-servlet-handler></mvc:default-servlet-handler><!-- 配置靜態資源處理 --><mvc:resources mapping="/static/**" location="/static/" />

視圖原理描述

假設我們SpringMVC中使用了Thymeleaf作為視圖。

第一步:瀏覽器發送請求給web服務器

第二步:Spring MVC中的DispatcherServlet接收到請求

第三步:DispatcherServlet根據請求路徑分發到對應的Controller

第四步:DispatcherServlet調用Controller的方法

第五步:Controller的方法處理業務并返回一個`邏輯視圖名`給DispatcherServlet

第六步:DispatcherServlet調用ThymeleafViewResolver的resolveViewName方法,將`邏輯視圖名`轉換為`物理視圖名`,并創建ThymeleafView對象返回給DispatcherServlet

第七步:DispatcherServlet再調用ThymeleafView的render方法,render方法將模板語言轉換為HTML代碼,響應給瀏覽器,完成最終的渲染。?

常見視圖

* InternalResourceView:內部資源視圖(Spring MVC框架內置的,專門為`JSP模板語法`準備的)
* RedirectView:重定向視圖(Spring MVC框架內置的,用來完成重定向效果)
* ThymeleafView:Thymeleaf視圖(第三方的,為`Thymeleaf模板語法`準備的)
* FreeMarkerView:FreeMarker視圖(第三方的,為`FreeMarker模板語法`準備的)
* VelocityView:Velocity視圖(第三方的,為`Velocity模板語法`準備的)
* PDFView:PDF視圖(第三方的,專門用來生成pdf文件視圖)
* ExcelView:Excel視圖(第三方的,專門用來生成excel文件視圖)
* ......?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/21300.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/21300.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/21300.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Qt秘籍】[008]-Qt中的connect函數

在Qt框架中&#xff0c;connect函數是一個非常核心的函數&#xff0c;用于實現信號&#xff08;Signals&#xff09;和槽&#xff08;Slots&#xff09;之間的連接&#xff0c;它是Qt信號槽機制的關鍵所在。信號槽機制是一種高級的通信方式&#xff0c;允許對象在狀態改變時通知…

ChatGPT-3

ChatGPT-3是OpenAI開發的先進人工智能聊天機器人程序&#xff0c;它是基于 GPT-3.5 架構的大型語言模型&#xff0c;并通過強化學習進行了訓練。這項技術代表了自然語言處理領域的一個重要里程碑&#xff0c;具有以下顯著特點和功能&#xff1a; 強大的語言理解和生成能力&…

代碼隨想三刷數組篇

代碼隨想三刷數組篇1 704. 二分查找題目代碼27. 移除元素題目代碼977.有序數組的平方題目代碼209.長度最小的子數組題目代碼59.螺旋矩陣II題目代碼704. 二分查找 題目

牛客網刷題 | BC114 圣誕樹 (不理解)

目前主要分為三個專欄&#xff0c;后續還會添加&#xff1a; 專欄如下&#xff1a; C語言刷題解析 C語言系列文章 我的成長經歷 感謝閱讀&#xff01; 初來乍到&#xff0c;如有錯誤請指出&#xff0c;感謝&#xff01; 這道題沒搞懂 也沒找到視…

Nginx源碼編譯安裝

Nginx NginxNginx的特點Nginx的使用場景Nginx 有哪些進程 使用源碼編譯安裝Nginx準備工作安裝依賴包編譯安裝Nginx檢查、啟動、重啟、停止 nginx服務配置 Nginx 系統服務方法一&#xff1a;方法二&#xff1a; 訪問Nginx頁面 升級Nginx準備工作編譯安裝新版本Nginx驗證 Nginx N…

【HarmonyOS】Stage 模型 - UIAbility 的啟動模式

Stage 模型這樣的應用&#xff0c;它在啟動的時候會先準備 Ability Stage 舞臺&#xff0c;接著呢&#xff0c;就可以基于它去創建 UIAbility 的實例&#xff0c;并去啟動它。 UIAbility 組件啟動模式 有四種&#xff1a; singletonstandardmultitonspecified 修改模塊的 mod…

SSMP整合案例第五步 在前端頁面上拿到service層調數據庫里的數據后列表

在前端頁面上列表 我們首先看看前端頁面 我們已經把數據傳入前端控制臺 再看看我們的代碼是怎么寫的 我們展示 數據來自圖dataList 在這里 我們要把數據填進去 就能展示在前端頁面上 用的是前端數據雙向綁定 axios發送異步請求 函數 //鉤子函數&#xff0c;VUE對象初始化…

【四大組件】-- 活動 Activity

目錄 活動活動是什么活動的相關操作手動創建活動活動中使用Toast活動中使用Menu銷毀一個活動 使用Intent實現活動間啟動顯示啟動隱式啟動 活動間數據傳遞活動的生命周期返回棧活動的狀態活動的生存期 活動的啟動流程活動的回收和重建如何在活動銷毀前保存狀態 活動的啟動模式st…

設計模式(十四)行為型模式---訪問者模式(visitor)

文章目錄 訪問者模式簡介分派的分類什么是雙分派&#xff1f;結構UML圖具體實現UML圖代碼實現 優缺點 訪問者模式簡介 訪問者模式&#xff08;visitor pattern&#xff09;是封裝一些作用于某種數據結構中的元素的操作&#xff0c;它可以在不改變這個數據結構&#xff08;實現…

紅隊內網攻防滲透:內網滲透之windows內網權限提升技術:手工篇

紅隊內網攻防滲透 1. 內網權限提升技術1.1 windows內網權限提升技術--手工篇1.1.1 Web到Win-系統提權-人工操作1.1.1.1 信息收集1.1.1.2 補丁篩選1.1.1.3 EXP獲取執行1.1.2 Web到Win-系統提權-土豆家族1.1.2.1 Test in:Windows 10/11(1809/21H2)1.1.2.2 Test in:Windows Se…

全新市場階段,Partisia BlockChain 將向 RWA、DeFi 等領域布局

Partisia Blockchain 是一個全新范式的 Layer1&#xff0c;該鏈通過 MPC 方案來構建鏈上隱私方案&#xff0c;同時該鏈通過系列獨特且創新的設計&#xff0c;旨在進一步解決目前 Web3 中所面臨的不可能三角問題&#xff0c;包括安全性、互操作性和可擴展性&#xff0c;為更多的…

NTFS磁盤格式讀寫工具:Tuxera NTFS 2021 for Mac

Tuxera NTFS 是一款用于 macOS 系統的 NTFS 文件系統驅動程序。NTFS 是 Windows 系統中常用的文件系統&#xff0c;而 macOS 默認只支持讀取 NTFS 格式的磁盤&#xff0c;不能進行寫入操作。因此&#xff0c;如果你需要在 macOS 上進行 NTFS 磁盤的寫入操作&#xff0c;就需要安…

提交一個Bug需要哪些信息?

軟件在使用過程中存在的任何問題都叫做軟件的缺陷&#xff0c;簡稱Bug&#xff0c;我認為要提交一個Bug首先得將這個Bug的核心內容說明一下&#xff0c;比如Bug的核心問題是什么、產生的前提、預期結果是什么、但實際結果是什么、以及附上一個證據圖片。 然后提交時需要Bug報告…

【一刷《劍指Offer》】面試題 28:字符串的排列

牛客對應題目鏈接&#xff1a;字符串的排列_牛客題霸_牛客網 (nowcoder.com) 力扣對應題目鏈接&#xff1a;LCR 157. 套餐內商品的排列順序 - 力扣&#xff08;LeetCode&#xff09; 核心考點 &#xff1a;全排列問題&#xff0c; DFS。 一、《劍指Offer》對應內容 二、分析題…

JS(DOM、事件)

DOM 概念:Document Object Model&#xff0c;文檔對象模型。將標記語言的各個組成部分封裝為對應的對象: Document:整個文檔對象Element:元素對象Attribute:屬性對象Text:文本對象Comment:注釋對象 JavaScript通過DOM&#xff0c;就能夠對HTML進行操作: 改變 HTML 元素的內…

Windows端口本地轉發

參考 微軟Netsh interface portproxy 命令 界面端口代理的 Netsh 命令 | Microsoft Learn 使用Windows系統的portproxy功能配置端口轉發 使用Windows系統的portproxy功能配置端口轉發-阿里云幫助中心 (aliyun.com) 將來自0.0.0.0地址對端口35623的訪問轉發到172.18.106.16…

SpringBoot @ModelAttribute注解的深入指南

文章目錄 前言一、基本概念二、方法級別的@ModelAttribute1. 用途2. 示例三、參數級別的@ModelAttribute1. 用途2. 示例四、處理多個@ModelAttribute1. 示例五、繼承與@ModelAttribute注解的結合使用1. 示例1.1 基類(父類)1.2 子類(具體控制器)<

多維數組找最大值

調用JavaScript的一個內置函數&#xff1a;Math.max() <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title…

虛擬機VMware Workstation 常用的快捷方式

1、 虛擬機軟件&#xff0c;如 VMware Workstation、VirtualBox 等 所使用的是 VMware Workstation 2、快捷方式 2.1 切換鼠標和鍵盤焦點 CtrlAlt&#xff1a;從虛擬機中釋放鼠標和鍵盤&#xff0c;回到主機 2.2 全屏模式 2.2.1 進入全屏模式: CtrlAltEnter 2.2.2 退出全…

政安晨:【Keras機器學習示例演繹】(五十一)—— 利用廣義網絡、深度網絡和交叉網絡進行結構化數據學習

政安晨的個人主頁&#xff1a;政安晨 歡迎 &#x1f44d;點贊?評論?收藏 收錄專欄: TensorFlow與Keras機器學習實戰 希望政安晨的博客能夠對您有所裨益&#xff0c;如有不足之處&#xff0c;歡迎在評論區提出指正&#xff01; 本文目標&#xff1a;使用 "寬深 "和 …