代码很简单,主要学习思路。
tomcat中处理消息提示的公用类 StringManager.java:
其实思路就是每个包名对应一个Stringmanager对象,而非所有公用一个S听ringmanager对象!
每个包中都有一个LocalStrings.properties的配置文件 ,定义公用提示信息
每个使用的类中都添加StringManager对象
每个包下都有常量文件Constants.java ,其中定义常量Package为该文件DefaultServlet所在 包名
使用:
public class DefaultServlet extends HttpServlet {
//每个使用的类中都添加StringManager对象
//每个包下都有常量文件Constants.java,其中定义常量Package为该文件DefaultServlet所在包名
//public static final String Package = "org.apache.catalina.servlets";
protected static StringManager sm = StringManager.getManager(Constants.Package);
...
//使用1
//directory.title为properties文件中的属性,可直接读取
sb.append(sm.getString("directory.title", name));
//使用2
throw new SAXException(sm.getString("defaultServlet.blockExternalEntity2");
...
}
StringManger.java中 定义了一个ResourceBundle对象,用于读取相应包下的配置文件
同时 定义一个Hashtable对象,使用Hashtable存放各包对应的StringManager对象 ,以便使用时直接通过get(packageName) 调用
public class StringManager {
private ResourceBundle bundle;
private static Hashtable managers = new Hashtable();
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 ) {
// Try from the current loader ( that"s the case for trusted apps )
ClassLoader cl=Thread.currentThread().getContextClassLoader();
if( cl != null ) {
try {
bundle=ResourceBundle.getBundle(bundleName, Locale.getDefault(), cl);
return;
} catch(MissingResourceException ex2) {
}
}
}
}
//get时,通过内部对象bundle读取properties文件内容
public String getString(String key) {
return MessageFormat.format(getStringInternal(key), (Object [])null);
}
protected String getStringInternal(String key) {
if (key == null) {
String msg = "key is null";
throw new NullPointerException(msg);
}
String str = null;
if( bundle==null )
return key;
try {
str = bundle.getString(key);
} catch (MissingResourceException mre) {
str = "Cannot find message associated with key "" + key + """;
}
return str;
}
}
tomcat配置|tomcat中处理消息提示的公用类 StringManager.java
http://m.bbyears.com/jiaocheng/114758.html
推荐访问:eclipse配置tomcat