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

資訊專欄INFORMATION COLUMN

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

Ocean / 2691人閱讀

摘要:此解析器不能動態設置主題。實戰目標練習使用解析器,最終效果如下項目結構在下創建了主題文件夾及主題文件,下創建了靜態資源文件。是默認的解析器,再此配置是為了自定義屬性值,即屬性文件名稱。其實此解析器與的實現原理基本相同。

概述

主題就是系統的整體樣式或風格,可通過Spring MVC框架提供的主題(theme)設置應用的整體樣式風格,提高用戶體驗。Spring MVC的主題就是一些靜態資源的集合,即包括樣式及圖片,用來控制應用的視覺風格。

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

Theme

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

ThemeResolver

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

FixedThemeResolver 默認主題解析器,使用固定的主題,通過defaultThemeName屬性設置,即此屬性指定主題屬性文件的文件名。此解析器不能動態設置主題。

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

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

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

FixedThemeResolver

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

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

}
實戰

目標

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

項目結構

在resources下創建了主題文件夾及主題文件,webapp下創建了靜態資源文件。

主題配置文件(myTheme.properties)

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

background=/img/wolf.jpg

Spring配置文件

配置themeSource和themeResolver,如下:





    
    
    




    
    



    
    

說明:

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

2、FixedThemeResolver是Spring默認的解析器,再此配置是為了自定義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控制器,跳轉至jsp頁面,代碼如下:

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

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

總結

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

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

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

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

相關文章

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

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

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

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

    antyiwei 評論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源碼分析--View(

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

    jerryloveemily 評論0 收藏0

發表評論

0條評論

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