最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
tomcat中处理消息提示的公用类 StringManager.java
时间:2016-11-18 编辑:简简单单 来源:一聚教程网
代码很简单,主要学习思路。
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;
}
}
-
下一个: JAVA IO流中的flush的用法介绍
相关文章
- 新作模板处理类,有兴趣的可以试试 01-11
- SpringBoot测试配置属性与web启动环境解析 10-24
- vue中将el-switch值true、false改为number类型的1和0解析 10-24
- Vue中的路由配置项meta使用解读 10-24
- SpringBoot自定义bean绑定解析 10-24
- SpringBoot常用计量与bean属性校验和进制数据转换规则解析 10-24