ServletContext与Servletconfig

什么是servlet?

servlet 是运行在 Web 服务器中的小型 Java 程序(即:服务器端的小应用程序)。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。

执行过程

在这里插入图片描述

selvet生命周期

生命周期是指容器如何创建servlet实例、分配资源、调用其方法,销毁实例的过程

阶段一: 实例化

(就是创建 servlet 对象,调用构造器)
在如下两种情况下会进行对象实例化。
第一种情况:
当请求到达容器时,容器查找该 servlet 对象是否存在,如果不存在,才会创建实例。
第二种情况:
容器在启动时,或者新部署了某个应用时,会检查 web.xml 当中,servlet 是否有load-on-starup 配置。如果有,则会创建该 servlet 实例。
load-on-starup 参数值越小,优先级越高(最小值为 0,优先级最高)。

 <servlet>
  		<servlet-name>loginServlet</servlet-name>
  		<servlet-class>com.gezhi.controller.LoginServlet</servlet-class>
  		<load-on-startup>1</load-on-startup>
 	 </servlet>
实验1:设置构造器,观察多次访问的时候和service方法执行先后
实验2:在配置文件中加入load-on-starup,观察实例化的时机

阶段二: 初始化

为 servlet 分配资源,调用 init(ServletConfig config);
方法config 对象可以用来访问 servlet 的初始化参数。
初始化参数是使用 init-param 配置的参数。
init 可以 override。
实验1:override init方法,观察执行实际(和上边的实验配合)
实验2:加入,并通过取值config

<init-param>
	<param-name>name</param-name>
	<param-value>zhangsan</param-value>  	
</init-param>
	ServletConfig config=getServletConfig();
	String add=config.getInitParameter("address");

、 ---------------------------------------------
如果是有参的init那么不需要获取ServletConfig
name=config.getInitParameter(“name”);

阶段三: 就绪/调用

有请求到达容器,容器调用 servlet 对象的 service()方法。
HttpServlet 的 service()方法,会依据请求方式来调用 doGet()或者 doPost()方法。
但是,这两个 do 方法默认情况下,会抛出异常,需要子类去 override。

阶段四: 销毁

容器依据自身的算法,将不再需要的 servlet 对象删除掉。
在删除之前,会调用 servlet 对象的 destroy()方法。
destroy()方法用于释放资源。
在 servlet 的整个生命周期当中,init,destroy 只会执行一次,而 service 方法会执行多次。

Servletconfig(待完善)

  • 每个Servlet有一个Servletconfig对象
  • 用于向Servlet传递部署时信息(例如,数据库或企业bean的查找名),而你不想把这个信息硬编码到servlet中(servlet初始化参数)
  • 用于访问Servletcontext
  • 参数在部署描述文件中配置

Servletcontext(待完善)

  • 每个web应用有一个Servletcontext
  • 用于访问web应用参数(也在部署文件中配置)
  • 相当于应用中一个公共栏,可以在这里放消息(属性),应用的其他部分可以访问这些消息
  • 用于得到服务器消息,包括容器的名字和版本,以及所支持的apl版本等
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值