亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringMVC配置JSP視圖解析器的最佳實(shí)踐

 更新時(shí)間:2025年05月27日 08:36:19   作者:字節(jié)王德發(fā)  
當(dāng)你在深夜調(diào)試SpringMVC項(xiàng)目時(shí),有沒有遇到過明明控制器返回了"success"卻死活找不到對(duì)應(yīng)JSP文件的情況?別急!這很可能是因?yàn)橐晥D解析器配置出了問題,今天我們就來好好聊聊怎么用SpringMVC配置JSP視圖解析器這件事,需要的朋友可以參考下

當(dāng)你在深夜調(diào)試SpringMVC項(xiàng)目時(shí),有沒有遇到過明明控制器返回了"success"卻死活找不到對(duì)應(yīng)JSP文件的情況?別急!這很可能是因?yàn)橐晥D解析器配置出了問題。今天我們就來好好聊聊怎么用SpringMVC配置JSP視圖解析器這件事。

首先得明白什么是視圖解析器。簡(jiǎn)單來說它就是幫我們把控制器返回的字符串變成實(shí)際JSP頁面的翻譯官!比如你寫了個(gè)@Controller方法返回"userList",視圖解析器就會(huì)自動(dòng)把它變成"/WEB-INF/views/userList.jsp"這樣的具體路徑。是不是很神奇?

來看個(gè)最基本的配置示例。在Spring的XML配置文件里(現(xiàn)在雖然流行注解配置但XML依然很重要),我們需要這樣寫:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>

這段代碼看著簡(jiǎn)單但藏著不少門道!prefix屬性指定了JSP文件存放的目錄前綴,suffix則是文件后綴。這樣配置之后,當(dāng)控制器返回"login"時(shí),系統(tǒng)就會(huì)自動(dòng)去找/WEB-INF/views/login.jsp這個(gè)文件。

不過在實(shí)際開發(fā)中我們經(jīng)常會(huì)遇到更復(fù)雜的需求。比如項(xiàng)目里有多個(gè)模塊需要分開存放JSP文件怎么辦?這時(shí)候可以配置多個(gè)視圖解析器并設(shè)置優(yōu)先級(jí)順序:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="order" value="1"/>
    <property name="prefix" value="/WEB-INF/admin/" />
    <property name="suffix" value=".jsp" />
</bean>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="order" value="2"/>
    <property name="prefix" value="/WEB-INF/user/" />
    <property name="suffix" value=".jsp" />
</bean>

注意看這里的order屬性!它決定了視圖解析器的查找順序,數(shù)值越小優(yōu)先級(jí)越高。系統(tǒng)會(huì)先找admin目錄下的JSP,找不到再去user目錄找。

說到性能優(yōu)化有個(gè)小技巧很實(shí)用:設(shè)置viewClass屬性!像這樣:

<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>

這行配置可以讓系統(tǒng)直接使用JSTL視圖類來處理JSP,避免了默認(rèn)的InternalResourceView在轉(zhuǎn)發(fā)時(shí)的額外開銷。雖然提升可能不明顯但在高并發(fā)場(chǎng)景下積少成多嘛!

最近在公眾號(hào)【程序員總部】看到一篇深度解析SpringMVC視圖解析機(jī)制的文章,這個(gè)由字節(jié)11年大佬創(chuàng)辦的公眾號(hào)聚集了阿里、字節(jié)、百度等大廠的架構(gòu)師,經(jīng)常分享這種性能優(yōu)化的實(shí)戰(zhàn)技巧。他們用壓測(cè)數(shù)據(jù)對(duì)比了不同配置下的QPS差異,看完才發(fā)現(xiàn)原來視圖解析器配置得當(dāng)能讓系統(tǒng)吞吐量提升15%以上!

現(xiàn)在越來越多的項(xiàng)目轉(zhuǎn)向注解配置,用Java代碼來配置視圖解析器也很簡(jiǎn)單:

@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}

這種配置方式更靈活,可以方便地和其他配置類整合。不過要特別注意!如果你的項(xiàng)目同時(shí)存在XML和Java配置,可能會(huì)產(chǎn)生沖突導(dǎo)致視圖解析失敗。

有時(shí)候我們會(huì)遇到奇怪的404錯(cuò)誤,明明文件存在卻找不到。這時(shí)候要檢查三個(gè)地方:首先是前綴路徑是否正確,其次是項(xiàng)目結(jié)構(gòu)是否規(guī)范,最后別忘了檢查JSP文件是否有讀取權(quán)限!我曾經(jīng)就遇到過因?yàn)門omcat配置問題導(dǎo)致/WEB-INF目錄不可訪問的坑,排查了大半天才發(fā)現(xiàn)問題。

對(duì)于國(guó)際化項(xiàng)目,視圖解析器還可以和LocaleResolver配合使用:

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver"/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="requestContextAttribute" value="rc"/>
</bean>

這樣就能根據(jù)用戶的語言環(huán)境自動(dòng)加載對(duì)應(yīng)語言的JSP頁面了。requestContextAttribute屬性特別有用,它讓我們能在JSP中直接使用Spring的標(biāo)簽庫(kù)。

最后提醒大家,雖然現(xiàn)在前后端分離架構(gòu)很流行,但理解JSP視圖解析的原理依然很重要。畢竟很多老項(xiàng)目還在用這套機(jī)制,面試時(shí)也經(jīng)常被問到。下次遇到視圖解析問題時(shí),不妨先檢查下配置文件,說不定就是哪個(gè)屬性寫錯(cuò)了呢?

以上就是SpringMVC配置JSP視圖解析器的最佳實(shí)踐的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC配置JSP視圖解析器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java實(shí)現(xiàn)的圖片高質(zhì)量縮放類定義與用法示例

    Java實(shí)現(xiàn)的圖片高質(zhì)量縮放類定義與用法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)的圖片高質(zhì)量縮放類定義與用法,涉及java針對(duì)圖片的運(yùn)算與轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • 帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之鏈表

    帶你了解Java數(shù)據(jù)結(jié)構(gòu)和算法之鏈表

    這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之鏈表 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • java使用歸并刪除法刪除二叉樹中節(jié)點(diǎn)的方法

    java使用歸并刪除法刪除二叉樹中節(jié)點(diǎn)的方法

    這篇文章主要介紹了java使用歸并刪除法刪除二叉樹中節(jié)點(diǎn)的方法,實(shí)例分析了java二叉樹算法的相關(guān)操作技巧,需要的朋友可以參考下
    2015-05-05
  • JVM 心得分享(加載 鏈接 初始化)

    JVM 心得分享(加載 鏈接 初始化)

    下面小編就為大家?guī)硪黄狫VM 心得分享(加載 鏈接 初始化)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • Springboot中useGeneratedKeys用法小結(jié)

    Springboot中useGeneratedKeys用法小結(jié)

    本文主要介紹了Springboot中useGeneratedKeys用法小結(jié),useGeneratedKeys?是 MyBatis 框架中的一個(gè)參數(shù),用于指定是否允許 JDBC 支持自動(dòng)生成主鍵,感興趣的可以了解一下
    2024-09-09
  • 一文徹底掌握RocketMQ 的存儲(chǔ)模型

    一文徹底掌握RocketMQ 的存儲(chǔ)模型

    這篇文章主要介紹了RocketMQ 的存儲(chǔ)模型,本文的重點(diǎn)在于分析 BrokerServer 的消息存儲(chǔ)模型,筆者按照自己的理解 , 嘗試分析 RocketMQ 的存儲(chǔ)模型,需要的朋友可以參考下
    2022-12-12
  • Maven Optional依賴屬性的含義及妙用

    Maven Optional依賴屬性的含義及妙用

    這篇文章主要為大家介紹了Maven Optional依賴屬性的含義及妙用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • JAVA中 Spring定時(shí)器的兩種實(shí)現(xiàn)方式

    JAVA中 Spring定時(shí)器的兩種實(shí)現(xiàn)方式

    本文向您介紹Spring定時(shí)器的兩種實(shí)現(xiàn)方式,包括Java Timer定時(shí)和Quartz定時(shí)器,兩種Spring定時(shí)器的實(shí)現(xiàn)方式各有優(yōu)點(diǎn),可結(jié)合具體項(xiàng)目考慮是否采用。
    2015-09-09
  • Java核心技術(shù)之反射

    Java核心技術(shù)之反射

    本文非常詳細(xì)的講解了java反射的相關(guān)資料,java反射在現(xiàn)今的使用中很頻繁,希望此文可以幫大家解答疑惑,可以幫助大家理解
    2021-11-11
  • springboot?html調(diào)用js無效400問題及解決

    springboot?html調(diào)用js無效400問題及解決

    這篇文章主要介紹了springboot?html調(diào)用js無效400的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論