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,如需轉載請自行聯系原作者