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

資訊專(zhuān)欄INFORMATION COLUMN

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

Ocean / 2758人閱讀

摘要:此解析器不能動(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)格,提高用戶體驗(yàn)。Spring MVC的主題就是一些靜態(tài)資源的集合,即包括樣式及圖片,用來(lái)控制應(yīng)用的視覺(jué)風(fēng)格。

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

Theme

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

ThemeResolver

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

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

SessionThemeResolver 通過(guò)用戶會(huì)話來(lái)保持主題,每個(gè)會(huì)話(session)僅需要設(shè)置一次,所有請(qǐng)求共享主題,但是不能兩個(gè)會(huì)話共享。

CookieThemeResolver 使用客戶端cookie存儲(chǔ)的主題

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

FixedThemeResolver

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

public class FixedThemeResolver extends AbstractThemeResolver {
    // 解析主題文件名
    @Override
    public String resolveThemeName(HttpServletRequest request) {
        // 返回主題文件名,默認(rèn)值為theme(在父類(lèi)中定義)
        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");
    }

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

目標(biāo)

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

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

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

主題配置文件(myTheme.properties)

指定了一張測(cè)試圖片,如下:

background=/img/wolf.jpg

Spring配置文件

配置themeSource和themeResolver,如下:





    
    
    




    
    



    
    

說(shuō)明:

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

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

視圖

本例使用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;">



控制器

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

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

至此,啟動(dòng)程序并訪問(wèn)/theme地址即可看到之前的效果圖。

總結(jié)

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

最后創(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/69386.html

相關(guān)文章

  • 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源碼分析--ThemeResolver(二)

    摘要:類(lèi)實(shí)現(xiàn)接口,使用用戶會(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/119000001...

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

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

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

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

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

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

0條評(píng)論

閱讀需要支付1元查看
<