myeclipse創(chuàng)建servlet_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
現(xiàn)在我們來(lái)創(chuàng)建一個(gè)web應(yīng)用,就叫【myservlet】好了,如下圖所示:

可以從項(xiàng)目窗口中看出,只要?jiǎng)?chuàng)建web工程,就會(huì)自動(dòng)幫我們創(chuàng)建【W(wǎng)EB-INF】目錄,并在其下創(chuàng)建【lib】目錄和web.xml文件。我們順便來(lái)看一下剛創(chuàng)建的web.xml文件內(nèi)容:

Web.xml文件中只有設(shè)置主頁(yè)而已,為什么先看這個(gè),稍后會(huì)說(shuō)到。
我們當(dāng)然可以按照《Servlet的學(xué)習(xí)(一)》中的方法來(lái)建立Servlet,即創(chuàng)建一個(gè)類來(lái)繼承Servlet的實(shí)現(xiàn)類GenericServelet,復(fù)寫(xiě)service()方法,并在web.xml文件中配置這個(gè)Servlet。
但是?。?!我們并不使用繼承GenericServelet類的方式,而是去繼承GenericServelet類的子類HttpServlet類。這么做有什么好處呢?HttpServlet是指能夠處理HTTP請(qǐng)求的Servlet,它在原有Servlet的接口上添加了一些HTTP協(xié)議處理方法,比Servlet接口的功能更加強(qiáng)大,所以我們只需要繼承HttpServlet類就可以了。如果你在MyEclipse中對(duì)web工程建立Servlet也是可以看到MyEclipse是默認(rèn)將你創(chuàng)建的Servlet繼承HttpServlet的,如下圖所示:

選擇【Servlet】,彈出,寫(xiě)好包名和我要?jiǎng)?chuàng)建的Servlet名:SecondServlet,如下圖:

可以看到MyEclipse自動(dòng)將你要?jiǎng)?chuàng)建的Servlet的父類選擇為HttpServlet?! ?/p>
當(dāng)我們選擇了HttpServlet類作為要繼承的Servlet父類,那么就該知道HttpServlet類已經(jīng)復(fù)寫(xiě)了service()方法,這個(gè)方法內(nèi)的代碼會(huì)自動(dòng)判斷用戶的請(qǐng)求方式,如果為GET請(qǐng)求,則調(diào)用HttpServlet的doGet()方法;如果為POST請(qǐng)求,則調(diào)用doPost()方法,因此我們開(kāi)發(fā)的時(shí)候,只需要復(fù)寫(xiě)doGet()方法或doPost()方法,無(wú)需再去復(fù)寫(xiě)service()方法。具體可以看Servlet的API文檔中有關(guān)HttpServlet的詳細(xì)內(nèi)容。
我們勾選doGet方法和doPost方法,其他方法根據(jù)實(shí)際情況添加。接著點(diǎn)擊【Next】,會(huì)看到另一個(gè)設(shè)置窗口:

【Generate/Map web.xml file】:將創(chuàng)建好的Servlet映射到web.xml文件中,這樣能省我們很多事,當(dāng)我們選擇將Servlet映射進(jìn)web.xml文件中時(shí),就可以根據(jù)下面幾個(gè)指定來(lái)設(shè)置映射到web.xml文件中哪些內(nèi)容。
【Servlet/JSP Class Name】:這是作為在web.xml文件中<servlet-class>標(biāo)簽中的內(nèi)容。
【Servlet/JSP Name】:設(shè)置在web.xml文件中<servlet-name>標(biāo)簽中的內(nèi)容。
【Servlet/JSP Mapping URL】:設(shè)置web.xml文件中<servlet-mapping>標(biāo)簽下<url-pattern>標(biāo)簽的內(nèi)容,也就是設(shè)置該Servlet的對(duì)外訪問(wèn)路徑。
【File Path of web.xml】:該web.xml的路徑,一般不用設(shè)置。
點(diǎn)擊完成之后,我們?cè)賮?lái)看看web.xml文件,是的,剛才設(shè)置的Servlet到web.xml文件的映射都已經(jīng)被MyEclipse在web.xml文件中添加好了,為我們省事了不少。如下圖所示:

我們來(lái)看看Servlet中的內(nèi)容:

是的,有點(diǎn)亂,這是因?yàn)镸yEclipse在創(chuàng)建Servlet時(shí)是按模板生成的,這里我們可以將這些不需要的代碼先去除,最后的部分我們?cè)賮?lái)講解如何修改MyEclipse中的Servlet模板。
在這種繼承HttpServlet的Servlet開(kāi)發(fā)中,我們只關(guān)心doGet方法和doPost方法,對(duì)于不知何時(shí)http請(qǐng)求是GET方式何時(shí)是POST方式來(lái)說(shuō),可以使用以下“小聰明”的方式來(lái)滿足在一個(gè)方法中同時(shí)處理GET請(qǐng)求或POST請(qǐng)求:
剛才說(shuō)到在HttpServlet中的service()方法已經(jīng)復(fù)寫(xiě)了其父類GenericServlet的service()方法,那我們就來(lái)看一下HttpServlet中的service()方法,將光標(biāo)點(diǎn)擊HttpServlet,然后按下鍵盤(pán)“F3”鍵,會(huì)發(fā)現(xiàn):

缺少Servlet的jar包源碼,這里我們有兩種解決方式:
一、到sun官網(wǎng)或oracle官網(wǎng)下載Servlet源碼;
二、到Apache-Tomcat官網(wǎng)下載Tomcat的源碼,這里我選擇這種方式:
選擇zip格式就可以(貌似tar.gz是給Linux用的)。
下載解壓后,目錄后面是帶有“src”字樣:

那么我們就可以在MyEclipse中點(diǎn)擊“Attach Source”,因?yàn)槭菍?dǎo)入整個(gè)目錄,所以選擇“External Folder”即可,導(dǎo)入之后我們就可以看到HttpServlet的源碼了,看到其service()方法,代碼較長(zhǎng),這里就不附出,但思想就是先獲取請(qǐng)求對(duì)象HttpServletRequest的請(qǐng)求方式,然后用if判斷來(lái)針對(duì)各個(gè)請(qǐng)求調(diào)用不同的方法,如doGet方法或doPost方法。
接下來(lái)我們就可以安心回到剛剛創(chuàng)建的Servlet,在doGet方法中編寫(xiě)代碼,我們就寫(xiě)個(gè)簡(jiǎn)單的返回客戶端一點(diǎn)數(shù)據(jù)好了:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
OutputStream out = response.getOutputStream();
out.write("Hello servlet again !".getBytes());
}
接著啟動(dòng)服務(wù)器,并將這個(gè)寫(xiě)好的Servlet發(fā)布
最后,我們就能在瀏覽器查看:

記住,在地址欄中輸入完主機(jī)地址和端口(如果有)后,如果web.xml沒(méi)有另外設(shè)置的話,跟的是web項(xiàng)目名稱和你在web.xml文件中為該Servlet設(shè)置的對(duì)外訪問(wèn)路徑。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java使用FastExcel導(dǎo)入支持多種時(shí)間格式
FastExcel 是一個(gè)采用純 java 開(kāi)發(fā)的 excel 文件讀寫(xiě)組件,支持 Excel'97(-2003)(BIFF8)文件格式,本文主要介紹了如何使用FastExcel導(dǎo)入支持多種時(shí)間格式,感興趣的可以了解2024-12-12
詳解Spring boot上配置與使用mybatis plus
這篇文章主要介紹了詳解Spring boot上配置與使用mybatis plus,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
一個(gè)例子帶你看懂Java中synchronized關(guān)鍵字到底怎么用
synchronized是Java里的一個(gè)關(guān)鍵字,起到的一個(gè)效果是"監(jiān)視器鎖",它的功能就是保證操作的原子性,同時(shí)禁止指令重排序和保證內(nèi)存的可見(jiàn)性,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)一個(gè)例子帶你看懂Java中synchronized關(guān)鍵字到底怎么用的相關(guān)資料,需要的朋友可以參考下2022-10-10
Java基于PDFbox實(shí)現(xiàn)讀取處理PDF文件
PDFbox是一個(gè)開(kāi)源的、基于Java的、支持PDF文檔生成的工具庫(kù),它可以用于創(chuàng)建新的PDF文檔,修改現(xiàn)有的PDF文檔,還可以從PDF文檔中提取所需的內(nèi)容。本文將具體介紹一下PDFbox讀取處理PDF文件的示例代碼,感興趣的可以學(xué)習(xí)一下2022-02-02
Java 如何從list中刪除符合條件的數(shù)據(jù)
這篇文章主要介紹了Java 如何從list中刪除符合條件的數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Java回調(diào)函數(shù)與觀察者模式實(shí)例代碼
這篇文章主要介紹了Java回調(diào)函數(shù)與觀察者模式實(shí)例代碼,簡(jiǎn)單介紹了使用觀察者模式的場(chǎng)景,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
Java使用正則表達(dá)式驗(yàn)證手機(jī)號(hào)和電話號(hào)碼的方法
今天小編就為大家分享一篇關(guān)于Java使用正則表達(dá)式驗(yàn)證手機(jī)號(hào)和電話號(hào)碼的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
POI導(dǎo)出Excel報(bào)錯(cuò)No such file or directory的解決方法
這篇文章主要為大家詳細(xì)介紹了POI導(dǎo)出Excel報(bào)錯(cuò)No such file or directory的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11

