SpringMVC自定義視圖解析器

/**
* 使用View接口完成請求轉發|重定向
* 解釋:
* SpringMVC的官方,提供了一個叫做View的接口,告訴開發人員
* DispatcherServlet底層會調用View接口的實例化對象中的邏輯方法
* 來完成對應的請求轉發和重定向。
* 使用:
* 1. 單元方法的返回值為View接口類型
* 2.真實return的為View接口的實例化對象(視圖解析器)。
* 官方提供的實現了View接口的視圖解析器:
* InternalResourceView:請求轉發
* RedirectView:重定向
* @return
*/

 @RequestMapping("demoView")public View demoView(HttpServletRequest request){//處理請求System.out.println("MyController.demoView:View接口實例化對象完成請求轉發|重定向");//響應結果//請求轉發//return  new InternalResourceView("/req.jsp");//重定向return new RedirectView(request.getContextPath()+"/redirect.jsp");}
/*** SpringMVC視圖解析器升級:ModelAndView*  問題:*      在原有的View接口的視圖解析器中需要自己在單元方法中根據響應方式*      來創建對應的視圖解析器對象返回給DispatcherServlet使用,過于麻煩。*  解決:*      從根據響應方式的不同創建不同的視圖解析器對象,變為只創建一個*      視圖解析器對象,該對象內部自動根據參數來實現請求轉發或者重定向。*  實現:*      ModelAndView*   注意:*      升級后也就意味著DispatcherServlet使用ModelAndView來接收*      單元方法的返回值,為了兼容早期版本,讓ModelAndView可以接收*      View接口的實例化對象。*  特點:*    ModelAndView對象是Model和View對象的結合體。既可以作為視圖解析器使用*    又可以作為數據流轉的載體使用。*/
@RequestMapping("md")
public ModelAndView demoModelAndView(){//處理請求System.out.println("MyController.demoModelAndView:ModelAndView視圖解析器");//響應結果//創建ModelAndView對象ModelAndView modelAndView=new ModelAndView();modelAndView.addObject("str","我是流轉的數據");//請求轉發//modelAndView.setViewName("forward:/mdReq.jsp");//重定向modelAndView.setViewName("redirect:/mdRedirect.jsp");return modelAndView;
}
/*** SpringMVC視圖解析器再次升級:*  問題:*      在使用了ModelAndView對象后,已經很爽了。但是在單元方法中*      我們還需要創建ModelAndView對象并將請求轉發或者重定向的*      路徑存儲進入,返回給DispatcherServlet使用,而我們真正*      想寫的是資源路徑以及響應方式*  解決:*      我們在單元方法中直接返回字符串資源路徑及其響應方式關鍵字。*      由DispatcherServlet底層幫我們創建ModelAndView來接收*      單元方法的返回值。*  注意:*      雖然我們在單元方法中直接返回的字符串數據,但是DispatcherServlet*      并不是直接使用字符串數據而是仍然調用ModelAndView視圖解析器完成請求轉發或者重定向。*/
@RequestMapping("demoString")
public String demoString(){//處理請求System.out.println("目前的請求轉發或者重定向的方式");//響應結果//請求轉發//return "forward:/req.jsp";//重定向return "redirect:/redirect.jsp";
}

自定義視圖解析器

準備步驟
在這里插入圖片描述
先將lib中的web.xml刪掉,重新創建一個,接著創建springmvc.xml文件在src中。

使用:
1.在springmvc.xml文件中進行配置
2.在單元房法中按照指定的格式返回資源路徑

在springmvc.xml中
在這里插入圖片描述
在這里插入圖片描述
前提:只在請求轉發中有效。
當我們return后面沒有加forword:,則默認會用ModelandView,反之,會用自定義的視圖解析器。

WEB-INF中的jsp頁面需要通過,在單元方法中跳轉,即

在這里插入圖片描述

用自定義視圖解析器的前提:

取決于請求轉發的路徑是否為WEB-INF下的,是的話則不需要加forword:。

使用restful聲明公共單元方法請求轉發WEB-INF下的資源

用來解決controller中,只能請求轉發一個資源路徑的問題。
方法:根據請求,請求轉發WEB-INF下的資源的單元方法是肯定要聲明的。我們可以聲明一個公共的單元方法,該單元方法不參與請求的邏輯處理,只負責根據請求轉發WEB-INF下的資源。

代碼
在這里插入圖片描述
當我們在瀏覽器頁面中,輸入我們想要的jsp頁面,然而我們的controller中沒有return該頁面中的值,就會自動去找我們的公共單元方法。

WEB-INF下的靜態資源放行配置

在這里插入圖片描述
紅框中是直接去項目的根路徑中找,如果我們把js放到WEB-INF中,不放在根路徑(Web目錄)中,就會出現報錯,此時我們需要通過資源放行配置。
在這里插入圖片描述

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

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

相關文章

前臺自動化測試:基于敏捷測試驅動開發(TDD)的自動化測試原理

一、自動化測試概述 自動化測試主要應用到查詢結果的自動化比較,把借助自動化把相同的數據庫數據的相同查詢條件查詢到的結果同理想的數據進行自動化比較或者同已經保障的數據進行不同版本的自動化比較,減輕人為的重復驗證測試。多用戶并發操作需要自動…

【開源】JAVA+Vue.js實現APK檢測管理系統

目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 數據中心模塊2.2 開放平臺模塊2.3 軟件檔案模塊2.4 軟件檢測模塊2.5 軟件舉報模塊 三、系統設計3.1 用例設計3.2 數據庫設計3.2.1 開放平臺表3.2.2 軟件檔案表3.2.3 軟件檢測表3.2.4 軟件舉報表 四、系統展示五、核心代…

pdfpages 宏包和 includepdf 使用問題

在 latex 中插入其他 pdf 文檔的頁時 \usepackage{pdfpages} % 插入 PDF 頁 \includepdf[pages-]{pg276-axi-hbm-en.pdf} 用 xelatex 編譯生成的 pdf 文檔內容會與原文檔內容不一致,文字位置對折等問題。 解決辦法: A 文檔中的某些…

springBoot整合Redis(二、RedisTemplate操作Redis)

Spring-data-redis是spring大家族的一部分,提供了在srping應用中通過簡單的配置訪問redis服務,對reids底層開發包(Jedis, JRedis, and RJC)進行了高度封裝,RedisTemplate提供了redis各種操作、異常處理及序列化,支持發布訂閱&…

Android:BitmapFactory.decodeStream Bitmap的內存優化OutOfMemory異常以后Crash閃退

自己項目中使用如下方法,有的手機上會奔潰報錯,原因是BitmapFactory.decodeStream部分沒有使用options參數改變內存大小 改成如下形式后正常了;正確解決方案:設置inSampleSize 一)Android BitmapFactory.decodeStream(…

C++利用匯編挖掘編程語言的本質..

1.謬論 很多非一手的資料特別是中文資料其實并不可靠 因為很多作者都是直接通過轉載他人的作品 也不管他人作品真與假 而且有一部分的作品中的言論和官方描述相去甚遠 有的則是翻譯的過程中出現了問題 比如sizeof很多人認為是一個函數 其實他并不是一個函數 而是一個運算符 是…

【FAQ】HarmonyOS SDK 閉源開放能力 —Push Kit

1.問題描述 升級到4.0.0.59版本后,通過pushService.getToken獲取華為的token時報如下錯誤:Illegal application identity. 解決方案 Mate 40 Pro (NOH) 從 4.0升級到4.1版本后,會出現UDID變化,影響歷史的調試簽名使用&#xff…

檔案數字化驗收流程

檔案數字化驗收流程通常包括以下步驟: 1. 確定驗收標準:制定檔案數字化驗收標準,明確要求檢查的內容、質量要求、驗收標準等。 2. 準備驗收環境:為檔案數字化驗收準備合適的環境,包括驗收場所、設備、人員等。 3. 準備…

vscode 引入外部依賴包

背景 我要在vscode中寫一些antlr代碼生成的cpp代碼,但是在引入頭文件#include "antlr4-runtime.h"的時候,出現報錯,顯示沒有這個頭文件,顯然這是我們沒有導入相關的包,因此我首先嘗試了將antlr4的依賴源碼在…

Semantic human matting

1.introduction 數據集包括,時尚模特數據集,超過18.8w張模特圖,從中選出35311張圖片,DIM數據集,僅包含人類的圖像,202個前景圖像,背景來自coco數據集和互聯網,背景圖不含人類&#x…

python 基礎知識點(藍橋杯python科目個人復習計劃56)

今日復習內容:做題 例題1:最小的或運算 問題描述:給定整數a,b,求最小的整數x,滿足a|x b|x,其中|表示或運算。 輸入格式: 第一行包括兩個正整數a,b; 輸出格式&#…

小烏龜操作Git

1、選擇小烏龜作為git客戶端 最近使用idea來操作git的時候頻頻出現問題,要么是提交代碼的時候少了某些文件,導致克隆下來無法運行,要么是提交速度太慢。 反正是在idea中操作git體驗非常不好,所以決定來換一種方式來操作git。從網…

藍橋杯算法題匯總

一.線性表:鏈式 例題:旋轉鏈表 二.棧: 例題:行星碰撞問題 三.隊列 三.數組和矩陣 例題:

FPGA-VGA成像原理與時序

什么是VGA: VGA, Video Graphics Array。即視頻圖形陣列,具有分辨率高、顯示速率快、顏色豐富等優點。VGA接口不但是CRT顯示設備的標準接口,同樣也是LCD液晶顯示設備的標準接口,具有廣泛的應用范圍。在FGPA中,常廣泛用于圖像處理等領域。 VGA 顯示器成像原理 在 VGA 標準剛興…

C語言 vs Rust應該學習哪個?

C語言 vs Rust應該學習哪個? 在開始前我有一些資料,是我根據網友給的問題精心整理了一份「C語言的資料從專業入門到高級教程」, 點個關注在評論區回復“888”之后私信回復“888”,全部無償共享給大家!!&am…

bun 文件類型

Typescript Bun 原生支持開箱即用的 TypeScript。所有文件在執行之前都由 Bun 的快速本機轉譯器即時轉譯。與其他構建工具類似,Bun 不執行類型檢查;它只是從文件中刪除類型注釋。 bun index.js bun index.jsx bun index.ts bun index.tsxBun 運行時行為的某些方面…

linux系統如何安裝nginx

首先下載nginx安裝包 wget -c http://nginx.org/download/nginx-1.23.1.tar.gz然后解壓安裝包 tar -zxvf nginx-1.23.1.tar.gz如果服務器沒有wget,可以安裝一下,有的話可以跳過 yum install -y wget 然后安裝相關依賴 yum install -y gcc-c zlib zl…

最新企微hook開源版

免費的企微框架 支持文本消息,圖片消息,視頻消息,文件消息。 其他可自行下載測試。 有興趣可以進群交流。720192224 。群內不定期開源氣味hook源碼 BOOL WxWorkSendData(string data) { WX_GETOBJDATA obj { 0 }; //參數結構…

MATLAB練習題:排隊論問題的模擬

?講解視頻:可以在bilibili搜索《MATLAB教程新手入門篇——數學建模清風主講》。? MATLAB教程新手入門篇(數學建模清風主講,適合零基礎同學觀看)_嗶哩嗶哩_bilibili 下面我們來看一道排隊論的題目。假設某銀行工作時間內只有一個…

Kubernetes/k8s的核心概念

一、什么是 Kubernetes Kubernetes,從官方網站上可以看到,它是一個工業級的容器編排平臺。Kubernetes 這個單詞是希臘語,它的中文翻譯是“舵手”或者“飛行員”。在一些常見的資料中也會看到“ks”這個詞,也就是“k8s”&#xff…