通过 HTTP 加载 Java 资源包
2009-12-24 00:00:00 来源:WEB开发网请求 RemoteBundleDisplay.jsp。它把类 MessagesBean 实例化并访问名为 messagesMap 的 MessageBean 属性,而这将为 JSP 返回格式化的消息以进行显示。
MessagesBean 的方法 getMessagesMap() 遍历一些硬编码的消息键,而且对每个键都调用私有方法 getString()。
MessagesBean 的 getString() 方法调用静态的 Java 方法 ResourceBundle.getBundle(),以便为当前的消息键检索资源包。ResourceBundle.getBundle() 的其中一个参数是示例类 RemoteResourceBundleLoader 的实例,它扩展 Java 类 ResourceBundle.Control 并实现方法 newBundle()。
RemoteResourceBundleLoader.newBundle() 创建一个 HttpURLConnection,用于从 Web 应用程序中提取所需的资源包。定位资源包后,它被加载到名为 MessagesBundle 的示例类的新实例中。RemoteResourceBundleLoader 返回 MessagesBundle 实例。(如果资源包是由前面的 ResourceBundle.getBundle() 调用检索,Java ResourceBundle 类将返回一个资源包的缓存版本。)
MessagesBean 的 getString() 方法使用 MessagesBundle 实例检索正在处理的消息键的字符串。MessagesBean 格式化字符串并且把它储存在一个映射中,当所有的消息都检索完毕时,这个映射会被返回到 JSP。
JSP 显示格式化的消息。
如何通过 HTTP 加载资源包
关键在于 Java class ResourceBundle.Control。在 Java SE 6 中引入了类 java.util.ResourceBundle.Control。Control 类使您能够比以往任何 Java 版本都能够更好地控制资源包加载。
请看一下示例类 RemoteResourceBundleLoader。您可以在 remote.bundle.example 包(清单 1)中可下载的 sj_Source.zip 文件中找到它。
更多精彩
赞助商链接