日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

jsp springmvc 视图解析器_Springmvc中多视图解析器解析问题

發布時間:2025/3/21 javascript 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jsp springmvc 视图解析器_Springmvc中多视图解析器解析问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近被問到過幾次關于springmvc多視圖解析器解析的問題;總結一下。

1、問題:

假設我有兩個jsp:

WEB-INF/html/a.jsp

WEB-INF/report/b.jsp

且我配置了視圖解析器:

然后呢,我分別返回視圖名為a和b;為什么a能找到,而b的時候是404;我配置了兩個視圖解析器,第一個找不到的話,第二個能找到啊?遇到過這個問題的朋友基本上會有類似的問題;

2、分析

此處我們使用了InternalResourceViewResolver,其有一個buildView方法,該方法一定會創建一個View;所以呢View永遠不為null(即使該jsp不存在);問題就是出在這;因為我們使用這個的時候默認是使用servlet forward轉發的,此時并不知道該jsp是否存在。

3、解決方案:

3.1、最簡單的辦法是使用其viewNames屬性,來指定一個是否可以處理的規則;

如上兩個的意思是對html或report開頭的視圖名進行處理,比如返回的視圖名為html/a 那么會交給viewNames為html*的那個解析器處理;支持的規則可以查看javadoc。

3.2、內容協商,根據請求時的MediaType來決定使用哪個View;比如根據不同的MediaType決定是JSON/XML/HTML展示時;可以搜索ContentNegotiatingViewResolver了解;

以上的方式對于請求的MediaType一樣,且視圖名沒有規則時一點用沒有。

3.3、如果僅有幾個不同的視圖需要特殊處理;可以考慮直接返回View對象進行處理;而直接不走ViewResolver;

3.4、如果以上都不滿足;那只能自己實現自己相應的ViewResolver,可以覆蓋兩個方法進行處理:

3.4.1、覆蓋UrlBasedViewResolver子類的canHandle;來決定哪些視圖名不需要當前ViewResolver進行處理;自己可以得到prefix +?suffix進行判斷具體的視圖頁面是否存在,當然這個可能會存在性能問題;考慮做緩存。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的jsp springmvc 视图解析器_Springmvc中多视图解析器解析问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。