天天看點

Servlet總結1---基礎東西的介紹

1.servlet是100%的運作在伺服器端為用戶端請求作出相應的的純Java的應用程式。 

2.J2EE(Java)中有幾種容器(曾經的面試題):

①servlet容器(eg. Tomcat , Jetty)

②EJB容器(JBOSS<Jboss公司> 、Weblogic<BEA> 、WebSphere<IBM>)

③Applet容器(現在幾乎不用了)

3.開發一個servlet的步驟:

①聲明一個類,并且讓該類繼承自HttpServlet類

②重寫doGet(),doPost()方法

③在web.xml中注冊一個servlet

4.servlet的生命周期:(筆試和面試遇到過)

①用戶端送出請求(post或get) → web容器(eg.Tomcat)

②容器産生request,resonse兩個對象

③容器根據URL找到合适的Servlet并配置設定線程進行通路。

④Service()方法根據請求頭(每次請求http的頭部資訊是不同的,eg.get,post),決定調用doGet()或者doPost()方法

⑤Servlet使用相應的對象通過容器給用戶端做出響應

⑥service()方法執行結束,通路線程和request、response對象被銷毀

5.生命周期的幾個階段:

①執行個體化(1次):web容器建立Servlet的執行個體。

②初始化(1次):web容器調用Servlet的init()方法。

③服務(多次調用):調用service()方法,由service方法調用doxxx()方法

④銷毀(1次):web容器關閉時調用destory()方法銷毀servlet

6.一個Servlet在一個Web容器中隻有一個對象(或執行個體,有唯一的執行個體,不同的線程),即隻在第一次被請求時,建立一個對象;但是其doGet(),doPost()方法被反複調用  → 那麼多個請求就會有多個線程,故有可能産生線程同步的問題,造成線程的不安全。 → 為了避免線程的同步問題,就要避免使用全局的執行個體變量。

7.注意事項:從servlet跳轉到JSP頁面時,最好用“請求轉發跳轉”,因為在頁面的URL位址欄不會顯示jsp頁面的位址,有利于保護真正的JSP位址。

8.在servlet中建立session對象:

HttpSession session = request.getSession();

9.過濾器 (比如:權限過濾,把UTF-8放在過濾器中,我們就不用每次都轉碼了!!)

①servlet中的過濾器是實作了javax.servlet.Filter這個接口。

②其是雙向過濾

<a target="_blank" href="http://blog.51cto.com/attachment/201207/191005110.png"></a>

③Filter在整個容器中也隻有一個對象,并且是在關閉容器銷毀 

④所有的請求都要經過過濾器。(當然也和你web.xml中的配置有關系)

⑤多個過濾器的過程順序, 以在web.xml中的配置順序為主

<a target="_blank" href="http://blog.51cto.com/attachment/201207/191314888.png"></a>

 10.在servlet中獲得application對象的方法有2兩種:

①ServletContext application = getServletContext();

②HttpSession session = request.getSession();

ServletContext application = session.getServletContext();

     本文轉自韓立偉 51CTO部落格,原文連結:http://blog.51cto.com/hanchaohan/931037,如需轉載請自行聯系原作者