日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

webx学习(四)——ResourceLoadingService

發布時間:2025/3/16 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 webx学习(四)——ResourceLoadingService 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ResourceLoadingService是一個可以從各種輸入源中(例如從File System、Classpath、Webapp中)查找和讀取資源文件的服務。
資源表現形式的多樣性,給應用程序的接口設計帶來一點麻煩,為了統一資源的獲取,Spring框架中提供了這方面的服務,即Resource Loader,但是Resource Loader還存在一些不合理的地方,于是webx中提供了Resource Loading Service對資源進行統一管理,在Resource Loading Service中可以包含多個不同的Resource Loader進行資源的加載,使得加載資源具有多樣性,同時也很好的完成了資源加載的大部分功能。

ResourceLoadingService是從 Spring的ResourceLoader派生過來的。

你只需要在配置文件中增加以下內容,就可以將Spring ResourceLoader機制替換成Webx的Resource Loading服務:

Resource Loading服務的基本配置(/WEB-INF/webx.xml) <resource-loading ????????xmlns="http://www.alibaba.com/schema/services" ????????xmlns:res-loaders="http://www.alibaba.com/schema/services/resource-loading/loaders"> ????<resource-alias pattern="/" name="/webroot" /> ????<resource pattern="/webroot" internal="true"> ????????<res-loaders:webapp-loader /> ????</resource> ????<resource pattern="/classpath" internal="true"> ????????<res-loaders:classpath-loader /> ????</resource> </ resource-loading>

1.定義新資源:

<resource pattern="/jdk"> ????????<res-loaders:file-loader basedir="${java.home}" /> ?</resource>

定義新資源,資源名以/jdk為前綴。
<file-loader>表示從文件系統中裝載資源。

2.重命名資源

<resource-alias pattern="/myapp/conf" name="/webroot/WEB-INF" /> <resource pattern="/webroot" internal="true"> ????<res-loaders:webapp-loader /> </resource>

定義了一個資源的別名:/myapp/conf。
當你查找/myapp/conf/myFile.xml時,Resource Loading服務實際上會去找/webroot/WEB-INF/myFile.xml

internal=true是一個可選項,當它的值為true時,代表它所修飾的資源是不能被外界所直接訪問的。例如,你想直接在myBean中注入/webroot/WEB-INF/myFile.xml是不行的。把internal選項設成true,可以讓強制用戶轉向新的資源名稱。Internal參數的默認值為false,意味著,新舊兩種名稱同時可用。

3.重定向資源

<resource-alias pattern="/templates" name="/webroot/templates" /> ????<resource pattern="/templates/cms"> ????????<res-loaders:file-loader basedir="${cms_root}" /> ????</resource> ????<resource pattern="/webroot" internal="true"> ????????<res-loaders:webapp-loader /> ????</resource>

定義了一個資源的別名:/templates,指向internal資源:/webroot/templates。
將/templates的子目錄/templates/cms重定向到某個外部的文件目錄$cms_root中

舉幾個例子:

將/myapp/conf/my/file.xml轉換成/webroot/WEB-INF/my/file.xml。
<resource-alias pattern="/myapp/conf/*/.xml" name="/webroot/WEB-INF/$1/$2.xml" />

將/myapp/conf/myfile.conf轉換成/webroot/WEB-INF/myfile.xml。
<resource-alias pattern="/myapp/conf/*.conf" name="/WEB-INF/$1.xml"/>

將/profiles/myname轉換成文件路徑${profile_root}/m/myname;將/profiles/othername轉換成文件路徑${profile_root}/o/othername。
<resource pattern="/profiles/?*">
<res-loaders:file-loader basedir="${profile_root}">
<res-loaders:path>$1/$1$2</res-loaders:path>
</res-loaders:file-loader>
</resource>


每個Spring容器都可以配置自己的Resource Loading服務。
當調用子容器的Resource Loading服務時,遵循這樣的邏輯:
先在子容器的Resource Loading服務中查找資源,如果找不到,
則再到parent容器的Resource Loading服務中查找,如果找不到,則放棄。

運用這種級聯裝載資源的方法,子應用可以把共享的資源定義在root context中,而把自己獨享的資源定義在自己的容器當中。

資源文件里的內容不僅可以讀取出來,ResourceLoadingService還可以修改資源文件的內容:

<resource-filters pattern="test-*.xml"> ????????<res-filters:xslt-filter xslt="/stylesheet.for.test/test.xsl" saveTo="/tempdir" /> ????</resource-filters> ????<resource pattern="/tempdir"> ????????<loaders:file-loader basedir="${project.home}/target/test" /> ????</resource>

將所有目錄下(因為是相對路徑)的名稱為test-*.xml文件,用指定的XSL文件進行轉換。
這里引進了一種新的擴展點:ResourceFilter。ResourceFilter可以在應用獲取資源之前,取得控制,以便對資源做一點事。
<xslt-filter>是對ResourceFilter的擴展,它能夠把XML資源用指定的xsl文件轉換成新的格式。假如指定了saveTo參數,就可以把轉換的結果保存下來,避免每次訪問都重新轉換。

此處定義tempdir目錄資源,以便保存xslt轉換的結果。
-------------------------------------------------------------------------------------------------------------------------------------------------------

ResourceLoader參考:

FileResourceLoader

<resource pattern="/my/virtual"> ?????????????<res-loaders:file-loader /> ??????????</resource>

file-loader會從當前配置文件所在的目錄中裝載

<resource pattern="/my/virtual"> ??????????????<res-loaders:file-loader basedir="${my.basedir}" /> ??????????</resource>

這樣,它就會從指定的basedir的子目錄中查找資源。

WebappResourceLoader:

<resource pattern="/my/virtual"> ??????????????<res-loaders:webapp-loader /> ??????????</resource>

從當前WEB應用中裝載資源,也就是從ServletContext對象中裝載資源。

ClasspathResourceLoader:

<resource pattern="/my/virtual"> ??????????????<res-loaders:classpath-loader /> ??????????</resource>

從classpath中裝載資源,也就是從當前的ClassLoader對象中裝載資源。

SuperResourceLoader:
調用Resource Loading服務來取得資源。它有點像Java里面的super操作符。

<resource pattern="/my/virtual"> ??????????????<res-loaders:super-loader basedir="/webroot/WEB-INF" /> ??????????</resource>

這個操作類似于<resource-alias>。

總結

以上是生活随笔為你收集整理的webx学习(四)——ResourceLoadingService的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩av影片在线观看 | 亚洲第一页夜 | 成人区人妻精品一区二 | 最近高清中文在线字幕在线观看 | 亚洲天堂自拍 | 人人干干人人 | 黄色三及 | 香港一级淫片免费放 | 久久久久婷婷 | 久爱视频在线 | 久久久久久久久网站 | 午夜成人免费视频 | 五月开心激情 | 少妇久久久久久被弄高潮 | 亚洲黄网在线观看 | 欧美大片黄色 | 男人操女人的视频 | 天堂√在线 | 国产黑丝在线观看 | 好吊视频一区二区三区四区 | 艳妇乳肉豪妇荡乳av | 国产欧美精品一区二区三区 | 久久涩视频 | 99中文字幕在线观看 | 欧美精品一区二区三区视频 | 中文字幕av影视 | 学生孕妇videosex性欧美 | 69精品人妻一区二区三区 | 天天做天天爽 | 国产精品sm调教免费专区 | 国产精品成人免费视频 | 三级黄色片网站 | 日本一区二区视频 | 在线观看免费黄视频 | 成人在线视频一区 | 亚洲精品久久久蜜桃 | 日狠狠| 在线看黄色网 | 四虎影库永久在线 | 国产女人18水真多18精品一级做 | 日韩久久免费 | 色女人网站 | 韩国一级片在线观看 | 亚洲在线色 | 两女双腿交缠激烈磨豆腐 | 91精品国产自产精品男人的天堂 | 久草影音| 成人黄色一级 | 777奇米色 | 日本123区| 老熟妇高潮一区二区高清视频 | 91黑丝视频 | 伊人网综合视频 | 国产一区二区精品久久 | 狠狠干超碰 | 制服丝袜在线一区 | 亚洲AV无码国产成人久久 | 天天综合人人 | 久久橹 | 神马影院一区二区 | 人人草在线视频 | 亚洲一区二区国产 | 动漫av一区二区 | 欧洲一级黄 | 高清乱码免费看污 | 欧美做受高潮动漫 | 美女高潮在线 | 聚色av | 激情区| 精品久久久99| 亚洲天堂男人 | 一直草 | 久久不射网 | 亚洲高清网 | 欧美动态视频 | 国产婷婷一区二区三区久久 | 狠狠操狠狠摸 | 欧美激情精品久久久久久 | 亚洲第一视频网站 | 韩国无码一区二区三区精品 | 欧美一区二区福利 | 大香蕉精品一区 | 日本在线 | 91国偷自产一区二区三区观看 | 肥熟女一区二区三肥熟女 | 致单身男女免费观看完整版 | 国产成人精品一区二区三区无码熬 | 永久免费黄色片 | 嫩草网站入口 | 日韩成人精品 | 一级片黑人 | av美女在线 | 伊人www| 美女被草视频在线观看 | 影音先锋制服 | 亚洲午夜伦理 | 国产精品一卡二卡在线观看 | 欧美撒尿777hd撒尿 | 天堂网在线视频 |