成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

SpringMVC之源碼分析--LocaleResolver和ThemeResolver應(yīng)用

qpal / 2616人閱讀

摘要:需求根據(jù)客戶端環(huán)境,界面顯示不同的國旗圖案。選擇的技術(shù)方案可利用提供的國際化和主題定制來解決。注意此時(shí)返回的中沒有國際化及主題相關(guān)的信息。修改請求參數(shù)的值為荷蘭,即后再發(fā)起請求,結(jié)果如下與預(yù)期一致,測試通過。

概述

以上分析了Spring MVC的LocaleResolver和ThemeResolver兩個(gè)策略解析器,在實(shí)際項(xiàng)目中很少使用,尤其是ThemeResolver,花精力去分析他們,主要是為了系統(tǒng)的學(xué)習(xí),更多的了解Spring為我們提供的功能組件,通過這個(gè)過程,我本人也有了更多的體會,就像上篇文章(https://segmentfault.com/a/1190000014873033)最后提出的小需求,需求本身不是具有實(shí)際意義,其實(shí)就是讓自己去思考,加深已學(xué)知識的理解,不知道小伙伴們有沒有思考呢?廢話不多說,現(xiàn)在就去實(shí)現(xiàn)它。

需求

根據(jù)客戶端環(huán)境,界面顯示不同的國旗圖案。

分析

在接到一個(gè)需求時(shí),首先要理解需求,實(shí)際工作中可能需求跟產(chǎn)品進(jìn)行多次溝通,其目的就是準(zhǔn)確的理解,理解了需求就可以選擇相應(yīng)的技術(shù)方案去解決。就我們這個(gè)功能來說,需求就是可定制不同的國旗圖案。選擇的技術(shù)方案可利用Spring MVC提供的國際化和主題定制來解決。

實(shí)現(xiàn)

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

源碼分析

pom.xml文件

引入Spring MVC依賴以及JSP依賴,代碼如下:



    org.springframework
    spring-webmvc
    5.0.5.RELEASE



javax.servlet
    javax.servlet-api
    3.1.0
    provided



    javax.servlet
    jstl
    1.2

spring-servlet.xml文件

在classpath下新建Spring MVC配置文件,代碼如下:




 







    
    
    



    
    
        
    




    
    
    
    


 

    
    
    
    




    
    




    
    
    
    

web.xml文件

配置Spring MVC 前端控制器,即DispatcherServlet,負(fù)責(zé)攔截用戶請求,代碼如下:


    
    dispatcher
    
    org.springframework.web.servlet.DispatcherServlet
    
    
        contextConfigLocation
        classpath:spring-servlet.xml
    
    
    1
    true



    
    dispatcher
    
    /

國際化屬性文件

本例中創(chuàng)建了中國、美國及芬蘭的國際化支持,配置文件如下:

messages_zh _CN.properties

message.locale=中國

messages_en _US.properties

message.locale=美國

messages_sv _FI.properties

message.locale=芬蘭

主題屬性文件

根據(jù)國際化配置,主題定義了中國、美國及芬蘭的國旗圖片,配置如下:

theme_ zh_CN.properties

background=/img/China.jpg

theme_ en_US.properties

background=/img/America.jpg

theme_ sv_FI.properties

background=/img/Finland.jpg

視圖及控制器

Controller控制器代碼如下:

@RequestMapping("/demo")
public String demo(HttpServletRequest request , Model model){

    Locale locale = RequestContextUtils.getLocale(request);

    model.addAttribute("locale",locale);

    return "demo";
}

JSP視圖代碼如下:

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

    
    Spring MVC Theme
    
    
         : 
        

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

功能測試

本例以Firefox為客戶端測試工具,測試步驟如下:

1、啟動項(xiàng)目后,訪問界面,在地址欄輸入http://localhost:8088/demo,結(jié)果如下:

由圖可知,此時(shí)系統(tǒng)使用的是默認(rèn)的國際化屬性文件及顯示默認(rèn)的國旗圖案,與我們設(shè)想的一致。注意此時(shí)返回的cookie中沒有國際化及主題相關(guān)的信息。

2、通過請求參數(shù)locale設(shè)置地區(qū)環(huán)境,在地址欄輸入localhost:8088/demo?locale=en_US,并發(fā)起請求,結(jié)果如下:

由上圖可知結(jié)果,與我們的設(shè)想一致,并且服務(wù)端通過攔截器把國際化寫入了客戶端cookie中。

3、修改請求參數(shù)locale的值為荷蘭,即locale=sv_FI后再發(fā)起請求,結(jié)果如下:

與預(yù)期一致,測試通過。

總結(jié)

本例使用CookieLocaleResolver和CookieThemeResolver結(jié)合實(shí)現(xiàn)了國際化與主題定制需求,Spring MVC為我們提供了不通實(shí)現(xiàn)方式的LocaleResolver和ThemeResolver,可自由組合使用,這兩個(gè)策略解析器主要定制前端信息或樣式,通過之前的源碼分析及此案例,這塊內(nèi)容就分析完了,希望對大家有所幫助。

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

    zxhaaa 評論0 收藏0
  • SpringMVC源碼分析--LocaleResolver(二)

    摘要:概述上一篇就默認(rèn)的進(jìn)行了分析,詳細(xì)請參考,本節(jié)我們繼續(xù)分析學(xué)習(xí),主要分析解析器類繼承關(guān)系如下圖由上面類圖可知,繼承并實(shí)現(xiàn)接口,主要是操作的工具類,繼承接口,增加了信息操作。即通過實(shí)現(xiàn)的選擇。 概述 上一篇就Spring MVC默認(rèn)的LocaleResovler(AcceptHeaderLocaleResolver)進(jìn)行了分析,詳細(xì)請參考https://segmentfault.com/...

    RichardXG 評論0 收藏0

發(fā)表評論

0條評論

qpal

|高級講師

TA的文章

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