Servlet生命周期与工作原理

Servlet生命周期与工作原理,第1张

概述Servlet生命周期分为三个阶段:1,初始化阶段 调用init()方法2,响应客户请求阶段调用service()方法3,终止阶段调用destroy()方法Servlet初始化阶段:在下列时刻Servlet容器装载Servlet:1,Servlet容器启动时自动装载某

Servlet生命周期分为3个阶段:

  1,初始化阶段  调用init()方法

  2,响应客户要求阶段  调用service()方法

  3,终止阶段  调用destroy()方法

Servlet初始化阶段:

  在以下时刻Servlet容器装载Servlet:

    1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.XML文件中的<Servlet></Servlet>之间添加以下代码:

<loadon-startup>1</loadon-startup>

    2,在Servlet容器启动后,客户首次向Servlet发送要求

    3,Servlet类文件被更新后,重新装载Servlet

  Servlet被装载后,Servlet容器创建1个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的全部生命周期内,init()方法只被调用1次。

    

Servlet工作原理:

  首先简单解释1下Servlet接收和响应客户要求的进程,首先客户发送1个要求,Servlet是调用service()方法对要求进行响应的,通过源代码可见,service()方法中对要求的方式进行了匹配,选择调用doGet,doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。在Servlet接口和GenericServlet中是没有doGet,doPost等等这些方法的,httpServlet中定义了这些方法,但是都是返回error信息,所以,我们每次定义1个Servlet的时候,都必须实现doGet或doPost等这些方法。

  每个自定义的Servlet都必须实现Servlet的接口,Servlet接口中定义了5个方法,其中比较重要的3个方法触及到Servlet的生命周期,分别是上文提到的init(),service(),destroy()方法。GenericServlet是1个通用的,不特定于任何协议的Servlet,它实现了Servlet接口。而httpServlet继承于GenericServlet,因此httpServlet也实现了Servlet接口。所以我们定义Servlet的时候只需要继承httpServlet便可。

  Servlet接口和GenericServlet是不特定于任何协议的,而httpServlet是特定于http协议的类,所以httpServlet中实现了service()方法,并将要求ServletRequest,ServletResponse强转为httpRequest和httpResponse。

public voID service(ServletRequest req,ServletResponse res)   throws servletexception,IOException{      httpRequest request;httpResponse response;      try     {         req = (httpRequest)request;res = (httpResponse)response;}catch(ClassCastException e){         throw new servletexception("non-http request response");}service(request,response);}

    代码的最后调用了httpServlet自己的service(request,response)方法,然后根据要求去调用对应的doXXX方法,由于httpServlet中的doXXX方法都是返回毛病信息,

protected doGet(httpServletRequest res,httpServletResponse resp)   String protocol = req.getProtocol();String msg = IStrings.getString("http.method_get_not_supported");   if(protocol.equals("1.1")){resp.sendError(httpServletResponse.SC.METHOD.NOT.ALLOWED,msg);    }    总结

以上是内存溢出为你收集整理的Servlet生命周期与工作原理全部内容,希望文章能够帮你解决Servlet生命周期与工作原理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1016954.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)