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

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

 


一,什么是Servlet?


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

 

是按照Servlet規(guī)范編寫的一個Java類。



二,Servlet有什么作用?


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



三,Servlet的生命周期?


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

初始化階段:


1,Servlet容器加載servlet類,把servlet類的.class文件中的數(shù)據(jù)讀到內(nèi)存中。


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


3,Servlet容器創(chuàng)建一個servlet對象。


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



運行階段:


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

 

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

 

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

 

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


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

 


銷毀階段:


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

 

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

 

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



在這里該注意的地方:


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

 

端訪問的次數(shù)

 

 


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


當用戶發(fā)送一個請求到某個Servlet的時候,Servlet容器會創(chuàng)建一個ServletRequst和ServletResponse對象。

 

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

 

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

 

給用戶。

 


五,Servlet與JSP有什么區(qū)別?


1,jsp經(jīng)編譯后就是servlet,也可以說jsp等于servlet。


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


3,在實際應用中采用Servlet來控制業(yè)務流程,而采用JSP來生成動態(tài)網(wǎng)頁.在struts框架中,

 

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

 


六,Servlet里的cookie技術?


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


cookie技術的好處:


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


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

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

 

使用cookie

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


七,Servlet里的過濾器?


過濾器的主要作用


1,任何系統(tǒng)或網(wǎng)站都要判斷用戶是否登錄。


2,網(wǎng)絡聊天系統(tǒng)或論壇,功能是過濾非法文字


3,統(tǒng)一解決編碼


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

 

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


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


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



八,Servlet里的監(jiān)聽器?


監(jiān)聽器的作用:自動執(zhí)行一些操作。

三種servlet監(jiān)聽器:

 

對request的監(jiān)聽。對session的監(jiān)聽。對application的監(jiān)聽。

怎么創(chuàng)建一個session監(jiān)聽器:


1,生成一個普通的class類,如果是對session的監(jiān)聽,則實現(xiàn)HttpSessionListener。


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

 

Java代碼  收藏代碼
  1. public void sessionCreated(HttpSessionEvent arg0) {} // 創(chuàng)建  
  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) {} // 替換