(1)对于类对象的载入和创建类对象的实例对象,已经在上述段落3中进行了详细说明,在此不再重复。
(2)对于类对象的实例对象的管理和调用
从代码中可以看出,本设计中采用Hashtable对类实例代码进行管理。以类名为key,以类对象的实例对象(指针)为value。类对象的实例对象并不总是只创建一次,当jsp源文件存在更新时,也要将内存中对应的类对象的实例对象进行更新。类对象的实例对象的创建规则有:
(A)当class文件新于jsp源文件,且以该类名为key的实体已经存在于Hashtable(由客户端处理线程管理)中(例如:该页面已经被访问过,且jsp源文件一直都没有更新过),则不需要重新创建实例对象,而是以类名为key从Hashtable中取出对应的类对象实例,并调用Init方法即可。
(B)当class文件新于jsp源文件,但以该类名为key的实体不存在于Hashtable中(例如:该页面已经被访问过,但是重新启动HTTP服务器),则需要创建该类的实例对象,并以类名为key,新的类对象的实例对象为value插入到Hashtable中。
(C)当class文件旧于jsp源文件,但以该类名为key的实体已经存在于Hashtable中(例如:修改jsp源文件,且该旧的页面已经被访问过),则需要先从Hashtable中删除旧的记录,再重新编译jsp源文件生成class文件,并重新生成该类的实例对象,并以类名为key,新的类对象的实例对象为value插入到Hashtable中。
(D)当class文件旧于jsp源文件,且以该类名为key的实体并不存在于Hashtable中(例如:修改了jsp源文件,并重新启动HTTP服务器),则需要重新编译jsp源文件生成class文件,并重新生成该类的实例对象,并以类名为key,新的类对象的实例对象为value插入到Hashtable中。
| 第1页: 制定JSP文件语法 | 第2页: 编译java源文件 |
| 第3页: 载入class对象并执行类对象的实例对象 | 第4页: 活用Class Loader技术 |