servlet類分級:
1.ServletConfig接口類:理解為讀取servlet配置的類,里面有四個抽象方法如下:
①getServletName:獲取servlet在web.xml中的名字
②getServletContext:獲取Servlet上下文,相當于web項目管理所有servlet的對象,可以讀取web.xml中配置的全局參數,也可以通過一個servlet設置參數,另外一個servlet讀取參數,達到servlet相互溝通的的目的。(轉載:具體可以看這里:https://blog.csdn.net/qq_36371449/article/details/80314024)
③getInitParameter:通過參數名獲取值
④getInitParameterNames:得到一個<servlet>標簽里面所有的參數名字
?
2.Servlet接口:定義了5個方法,理解為定義了一個servlet的生命(動作)和信息
init,service,destroy三個和servlet生命周期相關的方法,以及一個得到serlvet配置的方法(getServletConfig)和得到servlet(getServletInfo,這個方法在子類中被實現為返回一個空字符串)信息的方法
?3.GenericServlet:抽象類,實現了ServletConfig接口和Servlet接口中方法,重寫了Servlet類的init()和destroy(),將service方法定義為抽象,強迫子類實現它。
? ? 有參init方法和無參init方法的區別:當容器初始化servlet時會調用有參的init()方法(可能和Servlet接口中只有有參的init方法有關吧),如果只有有參init,而沒有無參init時,當人們需要重寫init方法進行一些其他的初始化,就只能重寫有參init方法,如果忘了調用super.init()(執行this.config=config),那么當使用getServletConfig()方法時,就會出現“NullPointerException”異常,所以在加一個無參init函數,而有參init調用無參init,人們只需重寫無參init進行其他初始化即可,這樣servlet被初始化時,先調用有參init,然后有參init調用無參init,即你重寫的init方法。
4.HttpServlet:抽象類,繼承了GenericServlet類,所以可以使用GenericServlet類中的方法,重寫了servse方法,通過getMethod()方法來決定使用doGet()或doPost()等方法。
5.自己定義的servlet類:一般繼承于HttpServlet,通過繼承HttpServlet,可以使用上述4個類中大部分方法,我們只需要根據需要重寫其中的方法即可,service方法不用重寫。
?