代码很简单,主要学习思路。
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; } }
。。。
相关推荐
* $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util/StringManager.java,v 1.2 2001/07/22 20:25:14 pier Exp $ * $Revision: 1.2 $ * $Date: 2001/07/22 20:25:14 $ * * =...
Apache Tomcat 是一款开源的、基于Java Servlet和JavaServer Pages(JSP)技术的应用服务器,由Apache软件基金会开发和维护。这个"apache-tomcat-8.5.78.tar.gz"文件是一个针对Linux/Unix系统的归档压缩文件,包含了...
Apache Tomcat 是一款广泛应用的开源软件,主要用于部署和运行Java Servlet和JavaServer Pages(JSP)应用程序。在本文中,我们将深入探讨Apache Tomcat 8.5.100这一特定版本的重要特性、安装与配置过程,以及如何...
Apache Tomcat是一款开源的软件,它是Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用程序容器。这个"apache-tomcat-9.0.56.tar.gz"文件是Tomcat的9.0.56版本的源码包,采用的是tar.gz格式,这是一种在...
Apache Tomcat是一款开源的Java Servlet容器,主要用于实现Java EE(现称为Jakarta EE)Web应用程序的部署和运行。它是一个轻量级应用服务器,特别适合小型到中型的应用。在这个官方原版的apache-tomcat-9.0.34.tar....
Apache Tomcat是一个开源的软件应用服务器,主要用于运行Java Servlet和JavaServer Pages(JSP)应用程序。这个特定的压缩包文件"apache-tomcat-7.0.109.tar.gz"是Apache Tomcat 7.0版本的第109次小更新。在Java Web...
Apache Tomcat是一个开源的Java Servlet容器,主要用于实现JavaServer Pages (JSP)、Java Servlet以及Java EE的Web应用程序。在本例中,我们讨论的是Apache Tomcat 7.0.108版本的tar.gz压缩文件。这个版本是Tomcat 7...
common.java 一个公用类 derive.java 一个测试用子类 differ.java 测试静态方法与实例方法之间的区别 forefather.java 一个简单的基类 grandson.java 上面这个类的子类 hasConstructor.java 拥有构造器的类 ...
在本文中,我们将深入探讨Apache Tomcat 8.5.75这一特定版本,以及它与Java、Linux操作系统的关系。 首先,Apache Tomcat 是一个由Apache软件基金会维护的Java Servlet容器。它的主要功能是解析并执行Java Servlets...
在这个最新的9.0.36版本中,Tomcat提供了对最新Java标准的支持,同时也包含了对性能、安全性和稳定性的改进。 1. **Java Servlet和JSP支持**: - Java Servlet是Java平台上的一个标准接口,用于扩展服务器的功能,...
Tomcat是Apache软件基金会的Jakarta项目的一部分,它遵循Java EE(现在称为 Jakarta EE)规范中的Web应用程序部分。Tomcat 8.5.x 版本支持Java Servlet 3.1、JavaServer Pages (JSP) 2.3以及Expression Language (EL...
由于本机安装的jdk版本与tomcat中使用的jdk版本不一致导致的。 解决方法 后面我把原先tomcat启动环境用的jdk1.7改为了本机安装的jdk1.8就不在报错。 具体过程: 在myeclipse中点击window→preference→在搜索框中...
Apache Tomcat是一个开源的Java Servlet容器,主要用于实现Java Web应用程序的部署。在这个"apache-tomcat-7.0.100.tar.gz"压缩包中,我们拥有的是Tomcat的7.0.100版本,这是一个适用于Linux操作系统的发布版。这个...
Apache Tomcat是一个开源的Java Servlet容器,用于部署和运行Java Web应用程序。它是基于Sun Microsystems的Java Servlet和JavaServer Pages(JSP)技术的。在本例中,我们讨论的文件"apache-tomcat-8.5.56-src.tar....
"java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError" 是一个典型的错误提示,它表明在并发执行过程中遇到了内存不足的问题。下面我们将深入探讨这个问题的原因、影响以及如何解决。 内存溢出...
基于java的开发源码-Tomcat 安装apr 支持 Tomcat Native.zip 基于java的开发源码-Tomcat 安装apr 支持 Tomcat Native.zip 基于java的开发源码-Tomcat 安装apr 支持 Tomcat Native.zip 基于java的开发源码-Tomcat ...
Apache Tomcat 9.0.62 是一个广泛使用的开源软件,主要用于运行Java Servlet和JavaServer Pages (JSP) 应用程序。它是Apache Software Foundation维护的项目,是Java EE Web容器的重要组成部分,尤其在轻量级应用...
Apache Tomcat是一款开源的Java Servlet容器,主要用于运行Java Web应用程序,包括JSP和Servlet。它由Apache软件基金会维护,是实现Java EE(现在称为Jakarta EE)Web Profile规范的重要组成部分。这个压缩包...
Java开发案例-springboot-55-undertow替换默认tomcat容器-源代码+文档.rar Java开发案例-springboot-55-undertow替换默认tomcat容器-源代码+文档.rar Java开发案例-springboot-55-undertow替换默认tomcat容器-源代码...
【标题】"Tomcat 9.0.37" 是一款广泛应用的开源Java Servlet容器,由Apache软件基金会开发。这个版本是Tomcat 9系列的一个具体发行版,它支持Java EE 8规范,并且提供了对最新Java技术的支持。 【描述】"tomcat9.0....