1. 概述
Web由有许多资源组成,比如HTML文档,图片,视频, css/javascript等。每一种资源都由一种叫做资源标示符(URI)的符号来定位。URI除了出现在Web页面上,对于程序员来说,有时也会将它作为字面值常量定义在程序当中。
这类静态录入的URI,在早期的系统开发过程中,的确让程序员屡试不爽。但随着系统功能的不断扩充,复杂性越来越高,静态录入URI使得整套系统变得难以扩展和维护。
举个例子,比如你需要对A系统进行移植,但因为早期的URI都是硬编码在程序中,你会慢慢发现所有的URI都需要修改,所有的域名和资源路径都难以统一等等问题。
为了有效解决静态录入URI带来的维护和扩展性问题,URIBroker Service应运而生。
URIBroker Service的特点是以统一的配置和动态渲染的方式来生成URI字符串。在系统重构或移植时,你只需要修改URIBroker Service的统一配置文件 ,无需修改一行代码即可完成全系统URI的无缝迁移。
URLBroker Service从本质上,解决了URI移植性,扩展性差等问题,同时也简化了开发人员的编码工作量。
2. 用法
(1)uris.xml配置
在webx3中常用的uri类型如下
<services:uris> <uris:uri id="server" requestAware="true" /> <uris:turbine-uri id="app1Link" exposed="true" extends="server"> <componentPath>/</componentPath> </uris:turbine-uri> <uris:turbine-content-uri id="app1Content" exposed="true" extends="app1Link" /> </services:uris>
uri标签表示定义一个GenericURIBroker。id是这个URIBroker实例的标示。
exposed表示这个URIBroker是否被公开。只有当URIBroker被公开后,你才能通过id从URIBroker Service中得到对应的URIBroker实例。
例子中id为adminModule的URIBroker,使用了extends属性来表示它继承自另一个URIBroker。继承后的URIBroker在后续配置当中,可以省略父URIBroker中已定义的属性配置。
contentPath和servletPath表示webapp上下文路径和servlet的访问路径。
RequestAware的意思是,uri broker生成时会参考当前请求的URL,将缺失的URL部件补充完整。现在默认值是false
例如,你没有提供servlet path,那么它就会将当前url的servlet path填充进来。
(2)URIBrokerService配置
URIBrokerService只需要在Java类中使用注解,即可使用
@Resource private URIBrokerService uriBrokerService;
3. 示例
(1)java 类中
uriBrokerService.getURIBroker("myLink").fork().toString()
(2)vm 文件中
<a href="$!link">点击链接</a>
4. 参考文章
http://m.blog.csdn.net/blog/cpf2016/45559769
http://blog.creke.net/804.html