摘自:   http://www.iteye.com/topic/766418

-----------------------------------------
1,什么是Servlet
2,Servlet有什么作用
3,Servlet的生命周期
4,Servlet怎么處理一個請求
5,Servlet與JSP有什么區別
6,Servlet里的cookie技術
7,Servlet里的過濾器
8,Servlet里的監聽器

 


一,什么是Servlet?


Servlet是一個Java編寫的程序,此程序是基于Http協議的,在服務器端運行的(如tomcat),

 

是按照Servlet規范編寫的一個Java類。



二,Servlet有什么作用?


主要是處理客戶端的請求并將其結果發送到客戶端。



三,Servlet的生命周期?


Servlet的生命周期是由Servlet的容器來控制的,它可以分為3個階段;初始化,運行,銷毀。

初始化階段:


1,Servlet容器加載servlet類,把servlet類的.class文件中的數據讀到內存中。


2,然后Servlet容器創建一個ServletConfig對象。ServletConfig對象包含了Servlet的初始化配置信息。


3,Servlet容器創建一個servlet對象。


4,Servlet容器調用servlet對象的init方法進行初始化。



運行階段:


當servlet容器接收到一個請求時,servlet容器會針對這個請求創建servletRequest和servletResponse對象。

 

然后調用service方法。并把這兩個參數傳遞給service方法。Service方法通過servletRequest對象獲得請求的

 

信息。并處理該請求。再通過servletResponse對象生成這個請求的響應結果。然后銷毀servletRequest和

 

servletResponse對象。我們不管這個請求是post提交的還是get提交的,最終這個請求都會由service方法來處理。


web服務器接受到一個http請求后,web服務器會將請求移交給 servlet容器,servlet容器首先對所請求的URL進行解析并根據
web.xml 配置文件找到相應的處理servlet,同時將request、response對象傳遞給它,servlet通過request對象可知道客戶端
的請求 者、請求信息以及其他的信息等,servlet在處理完請求后會把所有需要返回的信息放入response對象中并返回到客戶端,
servlet一旦處理 完請求,servlet容器就會刷新response對象,并把控制權重新返回給web服務器。

 


銷毀階段:


當Web應用被終止時,servlet容器會先調用servlet對象的destrory方法,然后再銷毀servlet對象,

 

同時也會銷毀與servlet對象相關聯的servletConfig對象。我們可以在destroy方法的實現中,釋放

 

servlet所占用的資源,如關閉數據庫連接,關閉文件輸入輸出流等。



在這里該注意的地方:


在servlet生命周期中,servlet的初始化和和銷毀階段只會發生一次,而service方法執行的次數則取決于servlet被客戶

 

端訪問的次數

 

 


四,Servlet怎么處理一個請求?


當用戶發送一個請求到某個Servlet的時候,Servlet容器會創建一個ServletRequst和ServletResponse對象。

 

在ServletRequst對象中封裝了用戶的請求信息,然后Servlet容器把ServletRequst和ServletResponse對象

 

傳給用戶所請求的Servlet,Servlet把處理好的結果寫在ServletResponse中,然后Servlet容器把響應結果傳

 

給用戶。

 


五,Servlet與JSP有什么區別?


1,jsp經編譯后就是servlet,也可以說jsp等于servlet。


2,jsp更擅長頁面(表現)。servlet更擅長邏輯編輯。 (最核心的區別)。


3,在實際應用中采用Servlet來控制業務流程,而采用JSP來生成動態網頁.在struts框架中,

 

JSP位于MVC設計模式的視圖層,而Servlet位于控制層。

 


六,Servlet里的cookie技術?


cookies是一種WEB服務器通過瀏覽器在訪問者的硬盤上存儲信息的手段,是由Netscape公司開發出來的。


cookie技術的好處:


    1,Cookie有效期限未到時,Cookie能使用戶在不鍵入密碼和用戶名的情況下進入曾經瀏覽過的一些站點。


    2,Cookie能使站點跟蹤特定訪問者的訪問次數、最后訪問時間和訪問者進入站點的路徑。
   
創建一個cookie

Java代碼  收藏代碼
  1. //里面的兩個參數分別是cookie的名和cookie的值  
  2.   
  3. response.addCookie(new Cookie("abc","10000000"));  

 

使用cookie

Java代碼  收藏代碼
  1. Cookie[] cook =request.getCookies();//用一個Cookie數組來接收  
  2.   
  3. for(int j=0;j<cook.length;j++){//通過循環來打印Cookie  
  4.   
  5.         cook[j].getName()://取cookie的名    
  6.         cook[j].getValue()://去cookie的值  
  7.   
  8. }  
 


七,Servlet里的過濾器?


過濾器的主要作用


1,任何系統或網站都要判斷用戶是否登錄。


2,網絡聊天系統或論壇,功能是過濾非法文字


3,統一解決編碼


(2)怎么創建一個過濾器:

 

1,生成一個普通的class類,實現Filter接口(javax.servlet.Filter;)。


2,重寫接口里面的三個方法:init,doFilter,destroy。


3,然后在web.xml配置過濾器。



八,Servlet里的監聽器?


監聽器的作用:自動執行一些操作。

三種servlet監聽器:

 

對request的監聽。對session的監聽。對application的監聽。

怎么創建一個session監聽器:


1,生成一個普通的class類,如果是對session的監聽,則實現HttpSessionListener。


2,然后重寫里面的五個方法:

 

Java代碼  收藏代碼
  1. public void sessionCreated(HttpSessionEvent arg0) {} // 創建  
  2.   
  3. public void sessionDestroyed(HttpSessionEvent arg0) {} // 銷毀  
  4.   
  5. public void attributeAdded(HttpSessionEvent arg0) {} // 增加  
  6.   
  7. public void attributeRemoved(HttpSessionEvent arg0) {} // 刪除  
  8.   
  9. public void attributeReplaced(HttpSessionEvent arg0) {} // 替換