servlet的问题

来源:互联网 发布:网络性能指标 编辑:程序博客网 时间:2024/05/19 13:14
问题1:我们提交请求时,为什么get请求就会调用doGet方法,post请求,会调用doPost方法?
问题2:为什么我们重写时,只重写了无参数的init方法,不需要重写有参数的init?

研究servlet的生命周期(******************************)

在我们Servlet接口中定义了三个方法.
init(ServletConfig config)
service()
destroy();

问题1解决:
是因为在HttpServlet的service方法中,它进行了重写,重写后分根据请求方式不同,调用不同的方法.
String method=request.getMethod();

if("get".equals(method)){
doGet();
}else if("post".equals(method)){
doPost();
}

问题2解决:
在GenericServlet 中定义了一个无参数init方法,重写Servlet接口中的init(ServletConfig config)方法.
当servlet对象创建后会调用有参数的init方法。在有参数的init方法中又调用了无参数的init方法。
对于我们来说,我们只需要重写无参数的init就可以。
--------------------------------------------------------------------------------------------------------
关于servlet的自动加载.
正常情况下,servlet是第一次被访问时,会创建servlet实例。并初始化,也就是调用init方法。

我们可以通过对servlet进行配置,让servlet可以随着服务器的启动而自动创建与初始化.

只需要在web.xml文件中在配置servlet时,加上<load-on-startup>

servlet跟随服务器启动的作用是什么?
根据特点来分析,当前servlet的init方法是服务器启动了,init方法就被调用了,
那么我们就可以将一些需要提前加载的信息在servlet的init方法中定义。
0 0