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

資訊專欄INFORMATION COLUMN

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

Ocean / 2783人閱讀

摘要:此解析器不能動態(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)資源的集合,即包括樣式及圖片,用來控制應(yīng)用的視覺風(fēng)格。

Spring MVC主題包括兩部分內(nèi)容,分別是Theme和ThemeResolver,下面是對兩部分內(nèi)容的介紹:

Theme

應(yīng)用中使用Theme主題時,必須實現(xiàn)org.springframework.ui.context.ThemeSource接口,web應(yīng)用上下文WebApplicationContext接口繼承自ThemeSource,但是實現(xiàn)功能委派給具體的實現(xiàn),默認(rèn)的委派給org.springframework.ui.context.support.ResouceBundleThemeSource類實現(xiàn),此類默認(rèn)從classpath加載主題屬性文件。無論是自定義ThemeSource接口的實現(xiàn)還是通過配置屬性文件路勁的ResourceBundleThemeSource實現(xiàn),都需要在Spring上下文中定義此bean,并且bean的id必須為themeSource,Spring會自動發(fā)現(xiàn)并使用。

ThemeResolver

在Spring上下文中定義了Theme后,DispatcherServlet會在Spring容器中查找id為themeResolver的Bean并使用。ThemeResolver工作原理與LocaleResolver工作原理基本是一樣的,它在request中查找theme主題并可以修改request的theme主題。Spring提供了如下的主題解析器:

FixedThemeResolver 默認(rèn)主題解析器,使用固定的主題,通過defaultThemeName屬性設(shè)置,即此屬性指定主題屬性文件的文件名。此解析器不能動態(tài)設(shè)置主題。

SessionThemeResolver 通過用戶會話來保持主題,每個會話(session)僅需要設(shè)置一次,所有請求共享主題,但是不能兩個會話共享。

CookieThemeResolver 使用客戶端cookie存儲的主題

Spring提供了ThemeChangeInterceptor攔截器,通過request參數(shù)控制改變用戶請求的主題。

FixedThemeResolver

默認(rèn)的主題解析器(在DispatcherServlet.properties中配置默認(rèn)策略),實現(xiàn)ThemeResolver接口,使用固定的主題,主題的名字(就是主題的屬性文件名)可通過defaultThemeName屬性指定,該值默認(rèn)是theme,該類比較簡單,源碼如下,做下注釋介紹:

public class FixedThemeResolver extends AbstractThemeResolver {
    // 解析主題文件名
    @Override
    public String resolveThemeName(HttpServletRequest request) {
        // 返回主題文件名,默認(rèn)值為theme(在父類中定義)
        return getDefaultThemeName();
    }
    // 設(shè)置主題文件名,此解析器不能設(shè)置。
    @Override
    public void setThemeName(
            HttpServletRequest request, @Nullable HttpServletResponse response, @Nullable String themeName) {
        throw new UnsupportedOperationException("Cannot change theme - use a different theme resolution strategy");
    }

}
實戰(zhàn)

目標(biāo)

練習(xí)使用FixedThemeResolver解析器,最終效果如下:

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

在resources下創(chuàng)建了主題文件夾及主題文件,webapp下創(chuàng)建了靜態(tài)資源文件。

主題配置文件(myTheme.properties)

指定了一張測試圖片,如下:

background=/img/wolf.jpg

Spring配置文件

配置themeSource和themeResolver,如下:





    
    
    




    
    



    
    

說明:

1、ResourceBundleThemeSource的屬性basenamePrefix即為主題屬性文件所在目錄名稱,其后必須有"."或"/"。

2、FixedThemeResolver是Spring默認(rèn)的解析器,再此配置是為了自定義defaultThemeName屬性值,即屬性文件名稱。

視圖

本例使用jsp視圖展示,代碼如下:

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>


    Spring MVC Theme



    " style="width: 500px;height: 300px;">



控制器

為了測試,編寫Controller控制器,跳轉(zhuǎn)至jsp頁面,代碼如下:

@RequestMapping("/theme")
public String theme(){
    return "theme";
}

至此,啟動程序并訪問/theme地址即可看到之前的效果圖。

總結(jié)

本例主要分析了Spring MVC對Theme整體支持,并實戰(zhàn)了默認(rèn)的ThemeResolver,后續(xù)繼續(xù)分析SessionThemeResolver和CookieThemeResolver。其實此解析器與LocaleResolver的實現(xiàn)原理基本相同。

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

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

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

相關(guān)文章

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

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

    OldPanda 評論0 收藏0
  • SpringMVC源碼分析--ThemeResolver(二)

    摘要:類實現(xiàn)接口,使用用戶會話中的主題。新增并更換一張不同的圖片。通過關(guān)閉瀏覽器,然后再訪問進行測試總結(jié)本章通過攔截器和結(jié)合實現(xiàn)了通過請求參數(shù)控制會話主題。 概述 本章繼續(xù)分析ThemeResolver的另一個實現(xiàn)類SessionThemeResolver,需要了解Spring MVC Theme情況的,可參考上一篇文章https://segmentfault.com/a/119000001...

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

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

    摘要:概述通過上幾章的介紹知道了的作用,即就是把返回的邏輯視圖名稱解析為視圖對象。進而通過對象的視圖渲染把最終的結(jié)果展現(xiàn)給用戶。運用模板技術(shù)把數(shù)據(jù)和視圖分開,同時提供支持很多的模板技術(shù),比如等等。 概述 通過上幾章的介紹知道了ViewResolver的作用,即ViewResolver就是把handler返回的邏輯視圖名稱解析為視圖View對象。進而通過View對象的視圖渲染把最終的結(jié)果展現(xiàn)給...

    jerryloveemily 評論0 收藏0

發(fā)表評論

0條評論

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