本篇接上一篇《Servlet的學習(二)》 ,主要講訴如何使用MyEclipse來開發Servlet,和導入Servlet所須要的源代碼。html
如今咱們來建立一個web應用,就叫【myservlet】好了,以下圖所示:web
能夠從項目窗口中看出,只要建立web工程,就會自動幫咱們建立【WEB-INF】目錄,並在其下建立【lib】目錄和web.xml文件。咱們順便來看一下剛建立的web.xml文件內容:瀏覽器
Web.xml文件中只有設置主頁而已,爲何先看這個,稍後會說到。服務器
咱們固然能夠按照《Servlet的學習(一)》中的方法來創建Servlet,即建立一個類來繼承Servlet的實現類GenericServelet,複寫service()方法,並在web.xml文件中配置這個Servlet。oracle
可是!!!咱們並不使用繼承GenericServelet類的方式,而是去繼承GenericServelet類的子類HttpServlet類。這麼作有什麼好處呢?HttpServlet是指可以處理HTTP請求的Servlet,它在原有Servlet的接口上添加了一些HTTP協議處理方法,比Servlet接口的功能更增強大,因此咱們只須要繼承HttpServlet類就能夠了。若是你在MyEclipse中對web工程創建Servlet也是能夠看到MyEclipse是默認將你建立的Servlet繼承HttpServlet的,以下圖所示:app
選擇【Servlet】,彈出,寫好包名和我要建立的Servlet名:SecondServlet,以下圖:jsp
能夠看到MyEclipse自動將你要建立的Servlet的父類選擇爲HttpServlet。學習
當咱們選擇了HttpServlet類做爲要繼承的Servlet父類,那麼就該知道HttpServlet類已經複寫了service()方法,這個方法內的代碼會自動判斷用戶的請求方式,若是爲GET請求,則調用HttpServlet的doGet()方法;若是爲POST請求,則調用doPost()方法,所以咱們開發的時候,只須要複寫doGet()方法或doPost()方法,無需再去複寫service()方法。具體能夠看Servlet的API文檔中有關HttpServlet的詳細內容。url
咱們勾選doGet方法和doPost方法,其餘方法根據實際狀況添加。接着點擊【Next】,會看到另外一個設置窗口:spa
【Generate/Map web.xml file】:將建立好的Servlet映射到web.xml文件中,這樣能省咱們不少事,當咱們選擇將Servlet映射進web.xml文件中時,就能夠根據下面幾個指定來設置映射到web.xml文件中哪些內容。
【Servlet/JSP Class Name】:這是做爲在web.xml文件中<servlet-class>標籤中的內容。
【Servlet/JSP Name】:設置在web.xml文件中<servlet-name>標籤中的內容。
【Servlet/JSP Mapping URL】:設置web.xml文件中<servlet-mapping>標籤下<url-pattern>標籤的內容,也就是設置該Servlet的對外訪問路徑。
【File Path of web.xml】:該web.xml的路徑,通常不用設置。
點擊完成以後,咱們再來看看web.xml文件,是的,剛纔設置的Servlet到web.xml文件的映射都已經被MyEclipse在web.xml文件中添加好了,爲咱們省事了很多。以下圖所示:
咱們來看看Servlet中的內容:
是的,有點亂,這是由於MyEclipse在建立Servlet時是按模板生成的,這裏咱們能夠將這些不須要的代碼先去除,最後的部分咱們再來說解如何修改MyEclipse中的Servlet模板。
在這種繼承HttpServlet的Servlet開發中,咱們只關心doGet方法和doPost方法,對於不知什麼時候http請求是GET方式什麼時候是POST方式來講,可使用如下「小聰明」的方式來知足在一個方法中同時處理GET請求或POST請求:
剛纔說到在HttpServlet中的service()方法已經複寫了其父類GenericServlet的service()方法,那咱們就來看一下HttpServlet中的service()方法,將光標點擊HttpServlet,而後按下鍵盤「F3」鍵,會發現:
多麼熟悉的場景,這個問題曾在《Eclipse中導入第三方源碼的問題和備用解決方案》中提到過,對,缺乏Servlet的jar包源碼,這裏咱們有兩種解決方式:
一,到sun官網或oracle官網下載Servlet源碼;
二,到Apache-Tomcat官網下載Tomcat的源碼,這裏我選擇這種方式:
選擇zip格式就能夠(貌似tar.gz是給Linux用的)。
下載解壓後,目錄後面是帶有「src」字樣:
那麼咱們就能夠在MyEclipse中點擊「Attach Source」,由於是導入整個目錄,因此選擇「External Folder」便可,導入以後咱們就能夠看到HttpServlet的源碼了,看到其service()方法,代碼較長,這裏就不附出,但思想就是先獲取請求對象HttpServletRequest的請求方式,而後用if判斷來針對各個請求調用不一樣的方法,如doGet方法或doPost方法。
接下來咱們就能夠安心回到剛剛建立的Servlet,在doGet方法中編寫代碼,咱們就寫個簡單的返回客戶端一點數據好了,跟在《Servlet的學習(一)》同樣:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { OutputStream out = response.getOutputStream(); out.write("Hello servlet again !".getBytes()); }
接着啓動服務器,並將這個寫好的Servlet發佈,具體請看《Servlet的學習(二)》
最後,咱們就能在瀏覽器查看:
記住,在地址欄中輸入完主機地址和端口(若是有)後,若是web.xml沒有另外設置的話,跟的是web項目名稱和你在web.xml文件中爲該Servlet設置的對外訪問路徑。
最後談一談,在MyEclipse中建立Servlet時自帶模板的問題,這個問題能夠看看一篇很是好的博客,同時講到了修改MyEclipse自帶的Servlet模板和JSP模板:《修改MyEclipse默認的Servlet和jsp代碼模板》
同時建議,在修改模板以前,最好備份一份原來的文件。