一步,先寫html或jsp頁面,寫一個form,enctype設(shè)置為multipart/form-data,寫兩個input,一個type為file,一個type為submit,type的值可以用雙引號,也可不用。詳細(xì)代碼如下:<form action="uploadServlet" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上傳">
</form>
第二步,在web.xml中設(shè)置servlet和servlet mapping,并在servlet中設(shè)置multipart-config,設(shè)置允許上傳文件的最大長度,注意單位為字節(jié),樣例中約為10M和20M。
第三步,在servlet中處理文件上傳,使用 request.getPart("file")方法獲取part,再通過part.getSubmittedFileName獲取上傳文件名,使用part.write方法寫文件到服務(wù)中,注意路徑問題,可以直接使用絕對路徑。
對于linux中使用tomcat,可能還需要配置tomcat的servlet.xml中的UMASK="0022",修改前為0027。
以上便是我分享的內(nèi)容,感謝您的閱讀,非常歡迎并期待您在評論區(qū)留下寶貴的意見和建議。如果你在處理數(shù)據(jù)時遇到了類似的問題,歡迎隨時私信我,我將竭誠為你提供幫助。同時,如果你對數(shù)據(jù)處理領(lǐng)域充滿熱情,也歡迎你與我私信交流,期待與你共同探討、學(xué)習(xí)和進(jìn)步,期待與您的每一次交流。
ervlet開發(fā)步驟
安裝服務(wù)器比如:tomcat
1.創(chuàng)建WEB項目
目錄:webapp/WEB-INF/web.xml
2.導(dǎo)入jar包
通過maven導(dǎo)入jar包,搜javaee
或者使用服務(wù)器自帶的jar包,右鍵項目->target runtime->勾選tomcat
3.創(chuàng)建Servlet
實現(xiàn)Servlet接口
也可以繼承HttpSevlet,此類已實現(xiàn)了Servlet接口
實現(xiàn)/重寫service(),在此方法內(nèi)動態(tài)拼HTML
4.注冊Servlet
注冊Servlet,(找到web.xml文件)并聲明別名
通過別名,給此Servlet注冊網(wǎng)名(以/開頭)
<!-- 1.注冊別名(小名) -->
<servlet>
<servlet-name>time</servlet-name>
<servlet-class>web.TimeServlet</servlet-class>
</servlet>
<!-- 2.注冊訪問路徑(網(wǎng)名) -->
<servlet-mapping>
<servlet-name>time</servlet-name>
<url-pattern>/ts</url-pattern>
</servlet-mapping>
5.部署項目
在Servers下選擇Tomcat,右鍵Add and Remove
在彈出框內(nèi)左側(cè)選中項目,雙擊移動到右側(cè)
部署:
6.訪問Servlet
啟動Tomcat
瀏覽器輸入地址 http://ip:port/項目名/Servlet網(wǎng)名
7.重新部署
修改代碼后,需要重新部署并重啟Tomcat才有效
或者點擊Servers下面的Tomcat7,右鍵publish
可以手動關(guān)閉Tomcat,再啟動它
也可以等待Eclipse自動重啟Tomcat(Reloading...)
常見錯誤及解決方法:
404產(chǎn)生的原因為Web服務(wù)器(容器)根據(jù)請求地址找不到對應(yīng)資源,以下情況都會出現(xiàn)404的錯誤提示:
1.輸入的地址有誤(應(yīng)用名大小寫不正確,名稱拼寫不正確)
2.在web.xml文件中<servlet>和<servlet-mapping>中的兩個<servlet-name>不一致
3.沒有將工程部署到Tomcat的webapps下面
4.Web工程部署時的結(jié)構(gòu)沒有遵循Servlet的規(guī)范
具體的解決辦法就是根據(jù)上面提到的4種情況,逐條進(jìn)行檢查。
容器如何找到service()方法
首先容器會根據(jù)firstweb這個應(yīng)用名找到位于webapps下面對應(yīng)的文件夾,然后根據(jù)地址中的“/sayHi”到web.xml文件中尋找與之匹配的<url-pattern>節(jié)點,找到匹配的節(jié)點后會找到與該節(jié)點緊鄰的<servlet-name>節(jié)點,獲取名稱并在此尋找與該名稱相等的<servlet-name>節(jié)點,找到相等的節(jié)點后,搜尋該節(jié)點下面緊鄰的<servlet-class>節(jié)點,于是獲取到了與該地址相對應(yīng)的類名,借助于ClassLoader加載該類文件,創(chuàng)建對象并調(diào)用service()方法,客戶端即看到了與該地址匹配的運(yùn)行結(jié)果。
405錯誤產(chǎn)生原因及解決方法
405這個錯誤的產(chǎn)生原因是容器找不到service方法來處理請求。以下情況容器都將視為沒有找到service()方法
1.service方法名寫錯,字母順序不對或大小寫錯誤
2.service方法參數(shù)類型與標(biāo)準(zhǔn)不一致,或參數(shù)順序與標(biāo)準(zhǔn)不一致。一定是先HttpServletRequest,然后是HttpServletResponse類型
3.service方法異常、返回值類型與標(biāo)準(zhǔn)不一致,一定是拋出ServletException、IOException。返回值類型是void。
解決405錯誤的方法即檢查service方法是否存在,簽名(方法名、參數(shù)、返回值、異常類型)是否與覆蓋的父類中的方法一致。
500錯誤產(chǎn)生原因及解決方法
500的錯誤原因是請求的Servlet在執(zhí)行service方法的過程中出現(xiàn)了錯誤,程序不能繼續(xù)運(yùn)行了。以下情況容器都將視為500的一種情況,而返回給客戶端這個錯誤說明。
1.Servlet沒有繼承HttpServlet或?qū)崿F(xiàn)Servlet接口
2.web.xml文件中的<servlet-class>寫錯,與真正的包名類名不符
3.service方法中的代碼運(yùn)行時拋出異常
解決500的方法為依據(jù)上面三種情況依次進(jìn)行檢測,逐條排除。
HTTP協(xié)議:
HTTP協(xié)議是HyperText Transfer Protocol的縮寫,即超文本傳輸協(xié)議。是由w3c(萬維網(wǎng)聯(lián)盟)制定的一種應(yīng)用層協(xié)議,用來定義瀏覽器與web服務(wù)器之間如何通信以及通信的數(shù)據(jù)格式。
因為BS架構(gòu)中的通信模塊就是以HTTP這個協(xié)議作為標(biāo)準(zhǔn)協(xié)議的,所以對該協(xié)議有所了解可以更好的編寫程序。
HTTP協(xié)議的通信過程可以分為以下四個步驟:
1.瀏覽器根據(jù)IP地址和端口號與服務(wù)器建立連接
2.向Web服務(wù)器發(fā)送請求數(shù)據(jù)包
3.Web服務(wù)器接收請求數(shù)據(jù)包后,發(fā)送相應(yīng)的響應(yīng)數(shù)據(jù)包
4.瀏覽器接收響應(yīng)數(shù)據(jù)后關(guān)閉連接
在這個過程中,一次請求對應(yīng)一次連接,當(dāng)瀏覽器再次發(fā)請求給服務(wù)器時,Web服務(wù)器并不知道這就是上次發(fā)請求的客戶端,這也是HTTP協(xié)議的一個特點-無狀態(tài)協(xié)議。這種需要時建立連接,使用結(jié)束后立即斷開連接的方式使得Web服務(wù)器可以利用有限的連接為盡可能多的客戶提供服務(wù)。也正是具備了這樣的特點,才使得BS結(jié)構(gòu)能夠承載企業(yè)級應(yīng)用的大量訪問。
請求數(shù)據(jù)包組成
請求數(shù)據(jù)包包含三個部分:
請求行,包括請求方式,請求資源路徑,以及協(xié)議版本
消息頭是由若干的鍵值對組成,主要用于傳遞給Web服務(wù)器一些信息。如,瀏覽器版本、接受資源的類型等
在消息頭的下面會跟著一個空白行,這樣就可以區(qū)分出消息頭與實體內(nèi)容這兩個部分。而在請求數(shù)據(jù)包中,大部分情況實體內(nèi)容為空,只有當(dāng)請求方式為POST時,實體內(nèi)容才有要提交的表單數(shù)據(jù)
響應(yīng)數(shù)據(jù)包組成
響應(yīng)數(shù)據(jù)包也包含三個部分:
狀態(tài)行,包括協(xié)議類型、版本、狀態(tài)碼、狀態(tài)描述
消息頭(若干),也是多組鍵值對組成的信息說明。如返回的Content-Type消息頭可以告訴瀏覽器返回的結(jié)果數(shù)據(jù)類型和字符集
實體內(nèi)容,位于消息頭下面的一個空白行之后。空白行意在通知瀏覽器消息頭的結(jié)束以及結(jié)果內(nèi)容的開始,瀏覽器就從這里開始數(shù)據(jù)的逐行解析。
Servlet如何處理HTTP協(xié)議
如何控制通信數(shù)據(jù)
HTTP協(xié)議在Web容器這端主要表現(xiàn)為通信數(shù)據(jù)的到達(dá)以及響應(yīng)數(shù)據(jù)的返回。于是Web容器將這兩部分?jǐn)?shù)據(jù)解釋為兩個對象,一個是與請求數(shù)據(jù)對應(yīng)的HttpServletRequest對象,一個是與響應(yīng)數(shù)據(jù)對應(yīng)的HttpServletResponse對象。對于Servlet來講,主要的業(yè)務(wù)邏輯過程就是從請求對象中獲取數(shù)據(jù),經(jīng)過加工后將結(jié)果附著在響應(yīng)對象中發(fā)送回客戶端。
HttpServletRequest對象用來讀取請求數(shù)據(jù);
HttpServletResponse對象用來設(shè)置響應(yīng)數(shù)據(jù);
前市面上有不少開源的CMS系統(tǒng),可以快速搭建一個網(wǎng)站,但是延展性、安全性、功能適配性肯定沒有按需求開發(fā)的性能好。所以下面主要介紹不使用開源CMS系統(tǒng)搭建網(wǎng)站的過程。
在做網(wǎng)站之前首先要找好網(wǎng)站的定位,確定好網(wǎng)站要服務(wù)哪一部分人群、要足他們的什么需求以及網(wǎng)站的后期盈利方式等。
·根據(jù)網(wǎng)站的定位確定一個符合網(wǎng)站定位的名字和域名,便于上線后的推廣。
·策劃網(wǎng)站的功能模塊以及頁面布局
·畫出頁面的原型圖
設(shè)計師根據(jù)原型圖,設(shè)計頁面,形成設(shè)計稿。
搭建靜態(tài)頁面是指將設(shè)計的網(wǎng)頁效果圖轉(zhuǎn)換為能夠在瀏覽器瀏覽的頁面。這就需要對頁面設(shè)計規(guī)范有一個整體的認(rèn)識并掌握一些基本的網(wǎng)頁腳本語言,例如HTML、CSS等。需要注意的是,在拿到網(wǎng)頁設(shè)計效果圖后,切忌直接切圖、搭建結(jié)構(gòu)。應(yīng)該先仔細(xì)觀察效果圖,對頁面的配色和布局有一個整體的認(rèn)識,主要包括顏色、尺寸、輔助圖片等,具體介紹如下
(1)顏色:觀察網(wǎng)頁效果圖的主題色、輔助色、點睛色,了解頁面的配色方案。
(2)尺寸:觀察網(wǎng)頁效果圖的尺寸,確定頁面的寬度和模塊的分布。
(3)輔助圖片:觀察網(wǎng)頁效果圖,看哪些地方使用了素材圖片。確定需要單獨保留的圖片。例如,重復(fù)的背景圖、小圖標(biāo)、文本內(nèi)容配圖等。
對頁面效果圖有了一個基本的分析之后,就能夠“切圖”了。“切圖”就是對效果圖進(jìn)行分割,將無法用代碼實現(xiàn)的部分保存為圖片。當(dāng)切完圖之后,就可以使用HMCs搭建靜態(tài)頁面。搭建靜態(tài)頁面就是將效果圖轉(zhuǎn)換為瀏覽器能夠識別的標(biāo)記語言的過程。
靜態(tài)頁面建設(shè)完成后(一般和前端工程師工作并行),如果網(wǎng)站還需要具備一些動態(tài)功能(例如搜索功能、留言板、注冊登錄系統(tǒng)、新聞信息發(fā)布等),就需要開發(fā)動態(tài)功能模塊。目前廣泛應(yīng)用的動態(tài)網(wǎng)站技術(shù)主要有PHP、ASP、JSP三種,具體介紹如下。
(1)PHP
PHP即Hypertext Preprocessor(超文本預(yù)處理器),是一種通用的開源腳本語言。PHP語法吸收了C語言、Java(C語言和Java均是編程語言)的特點,利于學(xué)習(xí),使用廣泛,主要適用于web開發(fā)領(lǐng)域。PHP提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫接口,數(shù)據(jù)庫連接方便,兼容性和展性非常強(qiáng),是目前使用較廣泛的技術(shù)。
(2)ASP
ASP即Active Server Pages(動態(tài)服務(wù)器頁面),是一種局限于微軟的操作系統(tǒng)平臺之上的動態(tài)網(wǎng)站開發(fā)技術(shù),主要工作環(huán)境為微軟的IIS應(yīng)用程序結(jié)構(gòu)。ASP入門比較簡單,但是安全性較低,而且不宜構(gòu)架大中型站點,其升級版ASP.NET雖然解決了這一問題,但開放程度低,操作麻煩。
(3)JSP
JSP即Java Server Pages(Java服務(wù)器頁面),是基于Java Servlet以及整個Java體系的Web開發(fā)技術(shù),它與ASP有一定的相似之處。JSP被認(rèn)為是網(wǎng)站建設(shè)技術(shù)中安全性最好的,雖然學(xué)習(xí)和操作均較為復(fù)雜,但目前被認(rèn)為是三種動態(tài)網(wǎng)站技術(shù)中有前途的技術(shù)。
網(wǎng)站建設(shè)后期事宜主要包括網(wǎng)站的測試、上傳、推廣、維護(hù)等,具體介紹如下。
(1)網(wǎng)站測試
網(wǎng)站測試主要包括本地測試和上傳到服務(wù)器之后的網(wǎng)絡(luò)測試,具體介紹如下
·本地測試:是指在網(wǎng)站搭建完成之后的一系列測試。例如,鏈接是否錯亂,是否兼容不同的瀏覽器,頁面功能邏輯是否正常等,以確保網(wǎng)站發(fā)布到服務(wù)器上不會出現(xiàn)些基本錯誤。
·網(wǎng)絡(luò)測試:是指網(wǎng)站上傳到服務(wù)器之后針對網(wǎng)站的各項性能情況的一項檢測工作。例如,網(wǎng)頁打開速度的測試,網(wǎng)站安全的測試(服務(wù)器安全、腳本安全)等。
(2)網(wǎng)站上傳
網(wǎng)頁制作完成后,最終要上傳到Web服務(wù)器上,網(wǎng)頁才具備訪問功能。在網(wǎng)頁上傳之前首先要申請域名和購買空間(免費(fèi)空間不用購買),然后使用相應(yīng)的工具上傳即可。上傳網(wǎng)站的工具有很多,可以運(yùn)用FTP軟件上傳(例如Flash FXP),也可運(yùn)用Dreamweaver自帶的站點管理上傳文件。
(3)網(wǎng)站推廣
當(dāng)網(wǎng)站上傳發(fā)布后,還要不斷對其進(jìn)行推廣宣傳,以提高網(wǎng)站的訪問率和知名度。推廣網(wǎng)站的方法有很多,例如,到搜索引擎上注冊、與其他網(wǎng)站交換鏈接、加入廣告鏈接等。
(4) 網(wǎng)站維護(hù)
網(wǎng)站只有經(jīng)常注意更新與維護(hù)保持內(nèi)容的新鮮感,才能持續(xù)吸引訪問者。網(wǎng)站維護(hù)階段的主要工作是更新網(wǎng)站內(nèi)容、確保網(wǎng)站的正常運(yùn)行以及歷史文件的歸類等。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。