国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

SpringMVC之源碼分析--ThemeResolver(二)

antyiwei / 689人閱讀

摘要:類實現接口,使用用戶會話中的主題。新增并更換一張不同的圖片。通過關閉瀏覽器,然后再訪問進行測試總結本章通過攔截器和結合實現了通過請求參數控制會話主題。

概述

本章繼續分析ThemeResolver的另一個實現類SessionThemeResolver,需要了解Spring MVC Theme情況的,可參考上一篇文章https://segmentfault.com/a/1190000014868501

SessionThemeResolver

SessionThemeResolver類的繼承關系如下:

說明:

1、與FixedThemeResolver解析器的繼承關系一樣,都繼承自AbstractThemeResolver抽象類,其中抽象類中定義了defaultThemeName屬性,用于設置屬性文件的名稱,默認為theme。

2、SessionThemeResolver類實現ThemeResolver接口,使用用戶會話(session)中的主題。

該類源代碼如下:

public class SessionThemeResolver extends AbstractThemeResolver {
    // 用于設置session Attribute中的key使用
    public static final String THEME_SESSION_ATTRIBUTE_NAME = SessionThemeResolver.class.getName() + ".THEME";

    // 解析請求中使用的主題
    @Override
    public String resolveThemeName(HttpServletRequest request) {
        // 從請求會話中獲取到主題
        String themeName = (String) WebUtils.getSessionAttribute(request, THEME_SESSION_ATTRIBUTE_NAME);
        // 如果會話中不存在,使用默認的主題
        return (themeName != null ? themeName : getDefaultThemeName());
    }
    // 設置請求的主題
    @Override
    public void setThemeName(
            HttpServletRequest request, @Nullable HttpServletResponse response, @Nullable String themeName) {
        // 從客戶端請求獲取主題并設置到session的Attribute區中
        WebUtils.setSessionAttribute(request, THEME_SESSION_ATTRIBUTE_NAME,
                (StringUtils.hasText(themeName) ? themeName : null));
    }

}
實戰

項目結構

與上一章項目結構一致,參考https://segmentfault.com/a/1190000014868501

主題配置文件

myTheme.properties與上一章內容一致,參考上章。

新增myTheme2.properties并更換一張不同的圖片。

Spring配置文件

本節我們結合攔截器進行設置,配置如下:


    
    
        
        
    




    
    



...

視圖和控制器

jsp視圖和Controller控制器代碼與上一章一致,參考上章代碼。

測試

啟動應用服務,在瀏覽器客戶端輸入訪問地址http://localhost:8089/theme,此時使用的是默認設置的主題文件,即:myTheme.properties,我使用的一張狼的圖片,效果如下:

接下來我們利用請求參數設置會話主題,輸入地址:http://localhost:8089/theme?theme=myTheme2,并回車,此時用戶會話已經設置為了myTheme2,我使用的一張狗的圖片,效果如下:

設置了會話主題后,在后續的訪問中將使用設置后的主題,但是用戶會話結束后,在訪問,系統將使用默認設置的主題。(通過關閉瀏覽器,然后再訪問進行測試)

總結

本章通過攔截器ThemeChangeInterceptor和SessionThemeResolver結合實現了通過請求參數控制會話主題。

最后創建了qq群方便大家交流,可掃描加入,同時也可加我qq:276420284,共同學習、共同進步,謝謝!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69384.html

相關文章

  • SpringMVC源碼分析--ThemeResolver(一)

    摘要:此解析器不能動態設置主題。實戰目標練習使用解析器,最終效果如下項目結構在下創建了主題文件夾及主題文件,下創建了靜態資源文件。是默認的解析器,再此配置是為了自定義屬性值,即屬性文件名稱。其實此解析器與的實現原理基本相同。 概述 主題就是系統的整體樣式或風格,可通過Spring MVC框架提供的主題(theme)設置應用的整體樣式風格,提高用戶體驗。Spring MVC的主題就是一些靜態資...

    Ocean 評論0 收藏0
  • SpringMVC源碼分析--ThemeResolver(三)

    摘要:類繼承關系如下該類實現接口,實現解析設置主題功能繼承類,以具備操作功能。新增并更換一張不同的圖片。配置文件只要替換即可,代碼如下配置默認的主題文件視圖和控制器視圖和控制器代碼與上一章一致,參考上章代碼。 概述 上節介紹了SessionThemeResolver解析器,本章分析下CookieThemeResolver,兩個解析器實現的功能是一樣的,只是使用的主題載體有區別而已,Sessi...

    OldPanda 評論0 收藏0
  • SpringMVC源碼分析--LocaleResolver和ThemeResolver應用

    摘要:需求根據客戶端環境,界面顯示不同的國旗圖案。選擇的技術方案可利用提供的國際化和主題定制來解決。注意此時返回的中沒有國際化及主題相關的信息。修改請求參數的值為荷蘭,即后再發起請求,結果如下與預期一致,測試通過。 概述 以上分析了Spring MVC的LocaleResolver和ThemeResolver兩個策略解析器,在實際項目中很少使用,尤其是ThemeResolver,花精力去分析...

    qpal 評論0 收藏0
  • SpringMVC源碼分析--請求過程

    摘要:概述根據規范,當用戶請求到達應用時,由的方法進行處理,對于而言,處理用戶請求的入口為,通過其父類的攔截處理。最后創建了群方便大家交流,可掃描加入,同時也可加我,共同學習共同進步,謝謝 概述 根據Servlet規范,當用戶請求到達應用時,由Servlet的service()方法進行處理,對于Spring MVC而言,處理用戶請求的入口為DispatcherServlet,通過其父類Fra...

    zxhaaa 評論0 收藏0
  • SpringMVC源碼分析--Controller(

    摘要:概述上篇文章主要分析了提供的及抽象類,本章繼續分析其具體的幾個實現類。源碼由繼承關系繼承抽象類,并實現模板方法,完成將接收的請求進行轉發,源碼如下實現父類模板方法獲取部署文件中定義的,傳入參數。 概述 上篇文章主要分析了Spring提供的Controller及抽象類AbstractController,本章繼續分析其具體的幾個實現類。 本系列文章是基于Spring5.0.5RELEAS...

    KevinYan 評論0 收藏0

發表評論

0條評論

antyiwei

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<