根据本地化对象来实现,它封装了适用于本地环境的资源。
tomcat将一些资源配置信息写入properties文件中,这样便于读取与编辑,如果将所有类的错误信息都写在一个properties文件,优惠导致文件太大,不便于读写。为避免这种情况,tomcat将properties文件按照不同的包进行划分,每个包下都有自己的properties文件。org.apache.catalina.connector包下的properties文件包含了该包下所有的类中可能抛出的错误与配置信息。每个properties文件都由一个org.apache.catalina.util.StringManager实例来处理。在tomcat运行时,会建立很多StringManager类的实例,每个实例对应一个properties文件。
在每个类需要查找某个配置的提示信息时,会先获取对应的StringManager实例。
eg:
StandardServer.java类来说(只贴出部分代码):
public static final String Package = "org.apache.catalina.core"; //上面的这个属性来自Constants.java类里 private static Hashtable managers = new Hashtable(); /** * The string manager for this package. */ private static final StringManager sm = StringManager.getManager(Constants.Package); public synchronized static StringManager getManager(String packageName) { StringManager mgr = (StringManager)managers.get(packageName); if (mgr == null) { mgr = new StringManager(packageName); managers.put(packageName, mgr); } return mgr; } private StringManager(String packageName) { String bundleName = packageName + ".LocalStrings"; try { bundle = ResourceBundle.getBundle(bundleName); return; } catch( MissingResourceException ex ) {
而在StandardServer.java类中是这样使用的,
public void start() throws LifecycleException { // Validate and update our current component state if (started) { log.debug(sm.getString("standardServer.start.started")); //根据这里的key值在资源文件中查找对应的value值,LocalStrings.properties资源文件中可以找到standardServer.start.started=This server has already been started配置项 return; } 如果本地环境为日文系统,那么通过org.apache.catalina.startup.LocalStrings键值取得的资源是org.apache.catalina.startup.LocalStrings_ja.properties中的文件信息。 最后通过bundle.getString(key);方法,即可得到本地资源信息。
ResourceBundle.getBundle("config.page");使用方法得学习一下
项目中对日志内容等进行国际化管理。并且,日志内容用两个文件处理。 日志内容资源文件是Log.properties. 那么建立两个资源束分别处理这这个本地资源。 bundle = ResourceBundle.getBundle("Log."); 使用时,只需要添加不同的本地信息即可。例如:Log_ja.properties,Log_en.properties等