关于Servlet的原理以及常用类
Servlet是JavaWeb的三大組件之一,它屬于動態資源。
在Servlet中通常需要:
接收請求數據;
處理請求;
完成響應。
實現Servlet有三種方式:
實現javax.servlet.Servlet接口;
繼承javax.servlet.GenericServlet類;
繼承javax.servlet.http.HttpServlet類;
?
與Servlet的生命周期相關的方法有:
void init(ServletConfig);
void service(ServletRequest,ServletResponse);
void destroy();
服務器會在Servlet第一次被訪問時創建Servlet,或者是在服務器啟動時創建Servlet。如果服務器啟動時就創建Servlet,那么還需要在web.xml文件中配置(<load-on-startup>0</load-on-startup>)。也就是說默認情況下,Servlet是在第一次被訪問時由服務器創建的。
?
而且一個Servlet類型,服務器只創建一個實例對象.
在Servlet被創建后,服務器會馬上調用Servlet的void init(ServletConfig)方法。請記住, Servlet出生后馬上就會調用init()方法,而且一個Servlet的一生。
當服務器每次接收到請求時,都會去調用Servlet的service()方法來處理請求。服務器接收到一次請求,就會調用service() 方法一次,所以service()方法是會被調用多次的。
?
Servlet是不會輕易離去的,通常都是在服務器關閉時Servlet才會離去!在服務器被關閉時,服務器會去銷毀Servlet,在銷毀Servlet之前服務器會先去調用Servlet的destroy()方法
?
Servlet與線程安全
因為一個類型的Servlet只有一個實例對象,那么就有可能會現時出一個Servlet同時處理多個請求,那么Servlet是否為線程安全的呢?答案是:“不是線程安全的”。這說明Servlet的工作效率很高,但也存在線程安全問題!
所以我們不應該在Servlet中便宜創建成員變量,因為可能會存在一個線程對這個成員變量進行寫操作,另一個線程對這個成員變量進行讀操作。
?
GenericServlet概述
GenericServlet是Servlet接口的實現類,我們可以通過繼承GenericServlet來編寫自己的Servlet。
?
HttpServlet類是GenericServlet的子類,它提供了對HTTP請求的特殊支持,所以通常我們都會通過繼承HttpServlet來完成自定義的Servlet。
?
HttpServlet類中提供了service(HttpServletRequest,HttpServletResponse)方法,這個方法是HttpServlet自己的方法,不是從Servlet繼承來的。
在HttpServlet的service(HttpServletRequest,HttpServletResponse)方法會去判斷當前請求是GET還是POST,如果是GET請求,那么會去調用本類的doGet()方法,如果是POST請求會去調用doPost()方法,這說明我們在子類中去覆蓋doGet()或doPost()方法即可。
?
ServletContext
服務器會為每個應用創建一個ServletContext對象:
l? ServletContext對象的創建是在服務器啟動時完成的;
l? ServletContext對象的銷毀是在服務器關閉時完成的。
?ServletContext對象的作用是在整個Web應用的動態資源之間共享數據!
?
?
JSP---->Servlet---->編譯.class文件 執行.
?
擴展: 關于Session的創建和銷毀
Session:session將數據保存在服務器端.通過cookie回寫了一個JSESSIONID.
* session的創建和銷毀:
創建的時候:
服務器端第一次調用getSession()方法的時候創建的.
* 銷毀:
* 第一種:非正常關閉服務器.(正常關閉session不會銷毀---序列化.tomcat/work路徑下.)
* 第二種:默認30分鐘.tomcat/conf/web.xml中.
* 第三種:手動調用了session.invalidate();
?
?
轉載于:https://www.cnblogs.com/DreamDrive/p/4090989.html
總結
以上是生活随笔為你收集整理的关于Servlet的原理以及常用类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 11g 建表 表名大小写问
- 下一篇: 正则表达式常用匹配