所有的Servlet对象是由tomcat服务器创建,不需要手动创建,service()方法也是有服务器在特定情况下调用,对象销毁也是由服务器执行
Servlet的生命周期
对象的创建到销毁的过程就是生命周期
对象存在时由服务器自动调用的方法(不是我们手动调用的方法)就是生命周期方法
生命周期方法调用
构造器:第一次访问Servlet时,服务器会调用构造器创建对象[在一次生命周期中只会调用一次]
init:构造器调用后,服务器会立即调用init方法[服务器会传入一个对象,可以在此方法中完成一些初始化操作,只会在创建对象后调用一次]
service:每次请求访问此servlet时服务器都会调用此方法处理用户的请求[接收用户请求,处理请求,给用户响应]
destroy:正常关闭服务器时,服务器调用此方法销毁servlet对象[对象销毁之前调用,为了释放资源]
创建Servlet问题
1、有些方法没有必要实现,基本不使用
2、创建Servlet自己需要在web.xml中配置
3、不能直接右键访问
eclipse提供了一个模板,可以直接创建一个Servlet文件
服务器在调用init方法时会传入一个ServletConfig
获取:服务器创建传入,可以直接使用
代表:servlet的配置信息,每个Servlet都有唯一的一个ServletConfig对象
作用:
1、获取Servlet的别名
2、获取Servlet中配置的初始化参数[数据库的配置信息可以写在这里]
3、获取全局上下文[服务器在启动时会为每个项目创建唯一一个对象代表这个项目],所有的Servlet获取的都是同一个全局上下文对象
* ServletContext:
* 获取:config.getServletContext();
* 代表:服务器在启动时,会为每个部署的项目创建唯一的一个对象,代表整个应用的web.xml配置文件
* 所有的Servlet获取到的都是同一个全局上下文对象
* 作用:
* 1、获取上下文路径 context.getContextPath()
* 2、获取文件的真实路径
* 虚拟路径:http://localhost:8080/07_web_servlet/1.html
* 真实路径(物理): context.getRealPath("2.html")
* D:\workspace\javaweb_0706\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\07_web_servlet\1.html
* 不管资源文件的路径存不存在,都可以获取到它在映射服务器中项目根目录下的真实路径
* 文件上传下载时使用:虚拟路径不能用来保存文件,文件只能通过真实存在的物理路径写入到服务器硬盘中
* 3、可以作为整个web应用的最大的域对象,在项目中共享数据
* context.getAttribute
* context.setAttribute
* 4、获取整个web.xml中的配置的初始化参数
*/
Servlet的生命周期
最新推荐文章于 2023-05-10 18:35:59 发布