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

SpringMVC配置JSP視圖解析器的最佳實踐

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

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

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

來看個最基本的配置示例。在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>

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

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

<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)先級越高。系統(tǒng)會先找admin目錄下的JSP,找不到再去user目錄找。

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

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

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

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

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

@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;
    }
}

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

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

對于國際化項目,視圖解析器還可以和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)境自動加載對應語言的JSP頁面了。requestContextAttribute屬性特別有用,它讓我們能在JSP中直接使用Spring的標簽庫。

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

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

相關(guān)文章

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

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

    這篇文章主要介紹了Java實現(xiàn)的圖片高質(zhì)量縮放類定義與用法,涉及java針對圖片的運算與轉(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)和算法之鏈表 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • java使用歸并刪除法刪除二叉樹中節(jié)點的方法

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

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

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

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

    Springboot中useGeneratedKeys用法小結(jié)

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

    一文徹底掌握RocketMQ 的存儲模型

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

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

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

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

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

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

    本文非常詳細的講解了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的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論