成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

antyiwei / 697人閱讀

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

概述

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

SessionThemeResolver

SessionThemeResolver類的繼承關系如下:

說明:

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

2、SessionThemeResolver類實現(xiàn)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區(qū)中
        WebUtils.setSessionAttribute(request, THEME_SESSION_ATTRIBUTE_NAME,
                (StringUtils.hasText(themeName) ? themeName : null));
    }

}
實戰(zhàn)

項目結構

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

主題配置文件

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

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

Spring配置文件

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


    
    
        
        
    




    
    



...

視圖和控制器

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

測試

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

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

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

總結

本章通過攔截器ThemeChangeInterceptor和SessionThemeResolver結合實現(xiàn)了通過請求參數(shù)控制會話主題。

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

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

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

相關文章

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

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

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

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

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

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

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

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

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

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

    KevinYan 評論0 收藏0

發(fā)表評論

0條評論

antyiwei

|高級講師

TA的文章

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