




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
servlet生命周期 做为常见的面试题 虽说现在servlet有些过时 现在公司也基本上采用struts1,struts2等框架替代了servlet , 但看过struts1和struts2源码的人 应该清楚 其实他们都是在一定程度上封装了servlet的一些功能所以了解它的生命周期对我们了解框架以及一定程度的纠错很有帮助。1. servlet加载(loading)和实例(intertance)化(将servlet从硬盘读取到系统内存) servlet容器(container)(支持发布java项目的web 服务器(service))负责加载和 实例化servlet,当客户端(client)发送请求时, servlet容器(container)会在内存中查找是否存在该servlet intertance(servlet 实例) 如果存在,就从内存中直接取出该实例,来响应请求 如果不存在就创建(create)一个servlet 实例,加入内存 在响应请求(注意:因为一个servlet在生命周期内只会被加载一次(单例模式),所以就导致了线程的不安全(这也是struts1线程不安全的原因 以后整理struts的时候会提到)为什么单例就有线程不安全?共享全局变量,如火车买票就是线程不安全 (大家可以这样理解 servlet 相当于java里的一个静态方法 在程序运行期间只在内存加载一次) 顺便提下web.xml中selvlet元素中的配置节:load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)1)它的值必须是一个整数,表示servlet应该被载入的顺序 平时填的是3,默认为32)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;3)当值小于0或者没有指定时,则表示容器在该servlet被选择时或由容器自行决定合适加载。4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。5)当值相同时,容器就会自己选择顺序来加载。所以,x,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。 经典,struts中的配置详解2.初始化(init)在 servlet容器(container)完成servlet实例化后调用servlet的init()方法进行初始化 对于每一个servlet intertance(servlet 实例)init()方法只被调用一次这就是servlet的单例(可以理解为 为这个servlet设置一些共有的参数,只在初次执行时加载一次,第二次运行时该属性就已经存在。 打个比方,比如MyEclipse的工作空间,第一次需要设置一次,第二次就默认了 无需再次执行设置这一环节 因为它已经具备了这些属性了)3.服务 servlet被初始化以后,就处于能响应的就绪状态,当servlet容器(container)接受到客户端(client)请求时,会调用servlet的service()方法处理客户端请求 servlet实例(instance)通过servletrquest对象获得客户端(client)请求通过调用servletresponse()对象设置响应信息(此处涉及HTTP协议会在我整理HTTP协议时在次提到)4.销毁 servlet instance(实例)是由容器(container)创建的所以实例(intertance)的销毁也是由容器来完成servlet容器判断一个servlet 实例是否应当被释放是(容器关闭或回收资源(可能涉及垃圾回收原理(在整理完jvm垃圾回收机制时可能做详细解释)容器就会调用servlet的destory()方法,destory()指定那些资源可以被回收而不是由destory()方法直接回收另外英语和数学真的对学习计算机很有帮助 希望大家注意工作的时候整理 比如我将一些术语翻译过来 另外数学对理解计算机原理真的很有帮助Servlet配置解析上面提到了,虽然servlet已经有些过时,但它在web.xml的一些配置仍然会用到。我们可以这样理解Servlet在JavaWeb开发中的地位:个人理解,所有的web应用技术包括web容器(tomcat,weblogic等)都必须遵守HTTP协议,而Servlet是在遵循HTTP协议基础上开发出来的一套规范(也可以理解为对HTTP协议的一种实现).而现在的一些流行的mvc框架(Struts1和Struts2等)都是基于这种规范(servlet)基础上的一些改进和封装(一种经验和理论互相结合的必然性结果,他把servlet用先进的设计模式再次封装改进使得我们的开发更加快速高效)。基于以上这点,所以了解servlet的配置就显得尤为重要。1.Servlet API1.1 Servlet接口(Interface)Servlet接口定义了所有Servlet需要实现的方法包括init(),service(),destroy()以及getServletinfo()(获得servlet信息)和getServletConfig方法(返回servletconfig对象)1.2 GenericServlet(Generic:一般的) 抽象类:实现了Servlet接口和ServletConfig接口,给出了除Service()方法外其他方法的简单实现。它定义了通用的不依赖与协议的Servlet。1.3 HTTPServlet抽象类:HTTPServlet继承自GenericServlet类。支持HTTP的doget()和dopost()方法并提供了与HTTP相关的实现。感悟:1.2,1.3体现了Servlet实现的一种思想(面相接口编程思想(虽然他运用的是抽象类,但思想是一致的(个人理解,可能有偏差)GenericServlet(Generic:一般的)他定义了一般的servlet特性(不依赖于HTTP协议)而HTTPServlet继承了一般的servlet特性(Servlet独有的不依赖于协议的特性)同时又实现了HTTP协议的相关实现。这样的话,以后如果我们要更改或添加servlet特性只用修改GenericServlet就行(这点对我们程序设计很有借鉴作用)。我觉得废话,相当于一个父借口1.4 ServletConfig接口 在Servlet初始化时,ServletCofig对象向该Servlet传递信息一个Servlet只能有一个ServletCofig ,配置ServletCofig对象需要在web.xml里面对Servlet节点进行设置。imageServletcom.basefirm.util.ImageServlet定义初始化参数名字定义初始化参数值在Servlet中我们可以通过如下方法获去初始化参数:String initparam = getInitparameter(“定义初始化参数名字”);一个题目涉及的知识:1.SET集合 2.方法覆盖和方法重载的区别3.对于所有对象都通用的方法 4.覆盖equals时请遵守的通用约定5.覆盖equals时总要覆盖hashcode 6.坚持使用override注解 7.慎用重载 。这几个知识点: /* *主要功能是把初始化的Override对象放到set集合通过equals覆盖只把不同的 * 对象放到set 相同的不放入 * * 因为equals方法在object中的参数类型是object 而这段代码第一次传入了一个其他类型,不小心重载了equals方法而不是覆盖了它 */ public class Override private final char first; private final char second; public Override(char first,char second) this.first = first; this.second = second; /* * 方法被覆盖 * */ public boolean equals(Object o) if(!(o instanceof Override) return false; Override t = (Override)o; boolean b = t.first=first & t.second = second; System.out.println(b); return t.first=first & t.second = second; /* * 方法被重载(原先错误的地方) * public boolean equals(Override t) return t.first=first & t.second = second; */ public int hashCode() System.out.println(31*first*second); return 31*first*second; /* *set集合比较元素相等的时候会先比较两个元素的hashCode如果相等然后在比较equals是否相等 *如果hashCode不相等就不会去比较equals 换句话说 hashCode相等的equals不一定相等。 * equals相等的 hashCode 一 定相等 * */ public static void main(String args) Set s = new HashSet(); /List s = new ArrayList(); for (int i = 0; i 10; i+) for (char ch = a;ch=z;ch+) /System.err.println(ch); s.add(new Override(ch, ch); System.out.println(s.size(); 这里我先整理了1和2 给大家分享一下false),String,Date,Time等对于TreeSet而言,判断两个对象不相等的标准是:equals方法返回false,或compareTO方法没有返回0,即使两个对象是同一个对象也会当做两个对象处理。所有当重写一个须放入TreeSet的类的equals方法时,应该保证与compareTo方法有一致的结果。如果向TreeSet中添加一个可变对象后,并且后面的程序修改了该对象的属性,导致它与其他对象的大小发生了变化,但TreeSet不会再次调整它们的顺序,甚至导致保存的这两个对象通过equals返回true,而compareTo确返回0,所有推荐HashSet和TreeSet集合中只放入不可变对象。EnumSet具有的特点:EnumSet是一个专门为枚举类设计的集合,内部以向量的方式存储,占用内存很少,运行效率很高EnumSet不允许加入null元素,否则会出现异常当试图复制一个Collection集合里的元素来创建EnumSet集合时,必须保证Collection集合里的所有元素都是同一个枚举类的枚举值。2.方法覆盖和方法重载的区别重载(overload):对于类的方法(包括从父类中继承的方法),方法名相同,参数列表不同的方法之间就构成了重载关系。需要注意:参数列表不同指的是:参数的类型,参数的个数,参数的顺序。看方法之间是否是重载关系,不用管方法的修饰符和返回类型以及抛出的异常,只看方法名和参数列表。而且要记住,构造器也可以重载。覆盖 (override):也叫重写,就是在当父类中的某些方法不能满足要求时,子类中改写父类的方法。当父类中的方法被覆盖了后,除非用super关键字,否则就无法再调用父类中的方法了。发生覆盖的条件:1、“三同一不低” 子类和父类的方法名称,参数列表,返回类型必须完全相同,而且子类方法的访问修饰符的权限不能比父类低。2、子类方法不能抛出比父类方法更多的异常。即子类方法所抛出的异常必须和父类方法所抛出的异常一致,或者是其子类,或者什么也不抛出;3、被覆盖的方法不能是final类型的。因为final修饰的方法是无法覆盖的。4、被覆盖的方法不能为private。否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。5、被覆盖的方法不能为static。所以如果父类中的方法为静态的,而子类中的方法不是静态的,但是两个方法除了这一点外其他都满足覆盖条件,那么会发生编译错误。反之亦然。即使父类和子类中的方法都是静态的,并且满足覆盖条件,但是仍然不会发生覆盖,因为静态方法是在编译的时候把静态方法和类的引用类型进行匹配。 方法的覆
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年本届高考语文试卷及答案
- 2025河北沧州市海兴县招聘社区工作者27人模拟试卷及答案详解(名师系列)
- 2025年面试电子装配题库及答案
- 2025广东清远市连南瑶族自治县专项招聘医疗卫生人才19人模拟试卷及1套完整答案详解
- 2025年镇江市高等专科学校公开招聘高层次人才10人长期模拟试卷及答案详解(各地真题)
- 2025浙江经贸职业技术学院招聘4人(第六批)考试模拟试题及答案解析
- 2025国企文秘竞聘试题及答案
- 2025教师自考历年试题及答案
- 2025重庆教师面试题及答案
- 2025城发水务(内黄)有限公司招聘2人考试参考题库及答案解析
- 中医减肥合同协议书
- 输血知识培训课件
- 粉红税问题成因分析
- 知识产权转化与产权运作制度
- 中国冠心病康复循证实践指南(2024版)解读
- 部编版历史八年级上册第一单元 第2课《第二次鸦片战争》检测卷(后附答案及解析)
- 《北京市二年级上学期数学第二单元试卷》
- 中国老年患者术后谵妄防治专家共识2023
- 山东省济南市舜耕中学2024-2025学年九年级上学期10月月考化学试题(无答案)
- 明股实债合作完整协议
- 2024年“蓉漂人才荟”四川成都市农林科学院招聘高层次人才8人历年【重点基础提升】模拟试题(共500题)附带答案详解
评论
0/150
提交评论