亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

antyiwei / 783人閱讀

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

概述

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

SessionThemeResolver

SessionThemeResolver類的繼承關(guān)系如下:

說明:

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

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

該類源代碼如下:

public class SessionThemeResolver extends AbstractThemeResolver {
    // 用于設(shè)置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);
        // 如果會話中不存在,使用默認(rèn)的主題
        return (themeName != null ? themeName : getDefaultThemeName());
    }
    // 設(shè)置請求的主題
    @Override
    public void setThemeName(
            HttpServletRequest request, @Nullable HttpServletResponse response, @Nullable String themeName) {
        // 從客戶端請求獲取主題并設(shè)置到session的Attribute區(qū)中
        WebUtils.setSessionAttribute(request, THEME_SESSION_ATTRIBUTE_NAME,
                (StringUtils.hasText(themeName) ? themeName : null));
    }

}
實戰(zhàn)

項目結(jié)構(gòu)

與上一章項目結(jié)構(gòu)一致,參考https://segmentfault.com/a/1190000014868501

主題配置文件

myTheme.properties與上一章內(nèi)容一致,參考上章。

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

Spring配置文件

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


    
    
        
        
    




    
    



...

視圖和控制器

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

測試

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

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

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

總結(jié)

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

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

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/69384.html

相關(guān)文章

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

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

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

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

    OldPanda 評論0 收藏0
  • SpringMVC源碼分析--LocaleResolver和ThemeResolver應(yīng)用

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

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

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

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

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

    KevinYan 評論0 收藏0

發(fā)表評論

0條評論

antyiwei

|高級講師

TA的文章

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