1.servlet生命周期
1.1 servlet类对象什么时候创建,什么时候调用什么方法,什么时候销毁
1.2 servelt对象是由tomacat控制的
2.servlet重要的生命周期方法
构造函数(创建servlet对象):第一次访问servelt对象时候调用。
init方法:创建完servlet对象的时候调用。
service方法:每次发出请求的时候调用。
destory方法:新部署web应用的时候和销毁servlet对象的时候
3.servlet自动加载
默认情况下,第一次访问servlet的时候创建servlet对象,如果servlet构造方法或者init方法中执行了比较多的逻辑结构,那么会导致第一次方法servlet的时候比较慢
解决方法:在web.xml配置中加入
4.有参和无参的init方法
无参的init方法是为了让开发者进行覆盖的;它没有servletconfig这个参数。
而有参的init方法是有servletconfig这个参数的。
有参的init方法又调用了无参的init方法
Tomcat默认调用的是有参的init方法
如果我们在想调用init方法时执行一些操作,那怎么办呢,只要我们复写无参的init方法,tomcat在调用完有参的init方法时调用无参的init方法,这样两个操作都执行了。而且我们也不用写super.init();试想一下,如果没有无参的init方法,那我们复写有参的init方法时忘记了些super.init(config)方法,那么config就不能初始化了,而这样设计即使我们不调用super的方法,也不会出问题。何乐而不为呢!
5.servlet对象是单实例多线程的(运行机制)
如果多线程同时访问servlet对象的共享数据(成员变量),可能会引发线程安全
解决方法:1)把使用到共享的代码块进行同步(使sychronized关键字进行同步)
2)建议在servlet类中尽量不要使用成员变量,如果要是用成员变量,必须同步,而且尽量缩小同步代码块的范围。以避免因为同步而导致并发效率低
5.ServletConfig和ServletContext对象
5.1 在一个web.xml中可以有多个ServletConfig对象,因为ServletConfig对象是面向一个Servlet对象的,而在web.xml中只能有一个ServletContext,因为它是面对web.xml文件中所有的servlet的。
5.2 作用
ServletConfig对象主要用于加载Servlet的初始化参数
ServletContext对象主要用于Servlet上下文,表示一个web应用环境
5.3 创建时间
ServletConfig:在创建完Servlet对象之后,在调用init方法之前
ServletContext:在加载web应用的时候创建
5.4 API
见文档!