成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

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

antyiwei / 738人閱讀

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

概述

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

SessionThemeResolver

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

說(shuō)明:

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

2、SessionThemeResolver類(lèi)實(shí)現(xiàn)ThemeResolver接口,使用用戶(hù)會(huì)話(session)中的主題。

該類(lèi)源代碼如下:

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

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

}
實(shí)戰(zhàn)

項(xiàng)目結(jié)構(gòu)

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

主題配置文件

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

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

Spring配置文件

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


    
    
        
        
    




    
    



...

視圖和控制器

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

測(cè)試

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

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

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

總結(jié)

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/69384.html

相關(guān)文章

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

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

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

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

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

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

    qpal 評(píng)論0 收藏0
  • SpringMVC源碼分析--請(qǐng)求過(guò)程

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

    zxhaaa 評(píng)論0 收藏0
  • SpringMVC源碼分析--Controller(

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

    KevinYan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

antyiwei

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<