servlet生命周期


1 servlet生命周期中的4個重要方法

1)構造方法:創建servlet對象,默認情況下,第一次訪問servlet的時候創建servlet對象,只調用一次。servlet對象是單實例的。

2)init方法:創建完servlet對象后調用,只調用一次。

3)service方法:每次發出請求時調用一次。

4)destroy方法:銷毀servlet對象時候調用。停止tomcat服務器時調用。

 

2 Tomtcat內部代碼運行:

             1)通過映射找到到servlet-class的內容,字符串

            2)通過反射構造Servlet對象

                  2.1 得到字節碼對象

                  Class clazz = class.forName("Servlet");

                  2.2 調用無參數的構造方法來構造對象

                  Object obj = clazz.newInstance();     ---1.servlet的構造方法被調用

           3)創建ServletConfig對象,通過反射調用init方法

                  3.1 得到方法對象

                  Method m = clazz.getDeclareMethod("init",ServletConfig.class);

                  3.2 調用方法

                  m.invoke(obj,config);             --2.servlet的init方法被調用

           4)創建request,response對象,通過反射調用service方法

                  4.1 得到方法對象

                  Methodm m =clazz.getDeclareMethod("service",HttpServletRequest.class,HttpServletResponse.class);

                  4.2 調用方法

                  m.invoke(obj,request,response);  --3.servlet的service方法被調用

           5)當tomcat服務器停止或web應用重新部署,通過反射調用destroy方法

                  5.1 得到方法對象

                  Method m = clazz.getDeclareMethod("destroy",null);

                  5.2 調用方法

                  m.invoke(obj,null);            --4.servlet的destroy方法被調用

 

3 servlet再tomcat中時單實例多線程的,因此如果涉及到共享數據需要注意線程安全問題。及時加鎖。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM