版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
JavaWeb程序設(shè)計
——Servlet編程(1)2主要內(nèi)容
Servlet概述
Servlet的開發(fā)和部署實現(xiàn)Servlet的相關(guān)接口和類3什么是ServletServlet是1996年由Sun與其它組織提出的Web服務(wù)器端的編程技術(shù)。(1)Servlet是服務(wù)器端的Java程序,用來擴充和增強Web服務(wù)器的功能,對客戶端的請求進行響應(yīng);(2)Servlet編程技術(shù)是基于Java語言的Web服務(wù)器編程技術(shù),主要用于Web服務(wù)器端獲得客戶端的訪問請求信息和動態(tài)生成對客戶端的響應(yīng)信息;(3)Servlet是一個Java類,符合Java類的定義規(guī)則,但和一般的Java類相比,它能夠處理HTTP請求。4
訪問Servlet的基本過程:Web瀏覽器客戶端Web服務(wù)器靜態(tài)HTML頁面Servlet容器:Servlet數(shù)據(jù)庫HTTP請求HTTP響應(yīng)服務(wù)器端5Servlet與JSP的關(guān)系Servlet是服務(wù)器端運行的Java程序,JSP在運行時被轉(zhuǎn)換為Servlet,然后被執(zhí)行。因此,執(zhí)行JSP實際上與執(zhí)行Servlet是一樣的。
JSP采用的是腳本語言的形式,而Servlet采用的Java應(yīng)用程序的實現(xiàn)方式,JSP中常用的內(nèi)置對象與ServletAPI的對應(yīng)關(guān)系如下圖所示:6JSP內(nèi)置對象與ServletAPI的對應(yīng)關(guān)系
request對象response對象session對象out對象application對象HttpServletRequestHttpServletResponseHttpsessionPrintWriterServletContext7Servlet與JSP的區(qū)別:
(1)編程方式不同:JSP遵循腳本語言的形式,Servlet則遵循Java程序的規(guī)則標(biāo)準(zhǔn),因此,JSP在程序的編寫方面比Servlet要簡單一些;
(2)運行速度不同:JSP在運行時,需要被轉(zhuǎn)換為Servlet,因此,對于初次或修改后的JSP運行的速度會比Servlet要慢一些;
(3)Servlet主要應(yīng)用在業(yè)務(wù)邏輯層,對于表示層的實現(xiàn)卻不是很適合,JSP則主要是為方便表示層而設(shè)計的。8Servlet是服務(wù)器端的Java程序,運行在Web服務(wù)器的Servlet容器中;
Servlet容器從屬于Java虛擬機,根據(jù)Servlet的生命周期,負(fù)責(zé)執(zhí)行Servlet對象的初始化、運行和卸載。
Servlet的工作原理9
什么是Servlet的生命周期?
Servlet在容器中從創(chuàng)建到刪除的過程被稱為Servlet的生命周期,可以分為四個階段:
裝載Servlet,實例化,服務(wù)處理,卸載Servlet的工作原理10Servlet的生命周期可分為如下幾個階段:
(1)裝載Servlet,如:在Servlet容器啟動后,客戶端首次向Servlet發(fā)出請求;
(2)實例化一個Servlet對象,調(diào)用Servlet的init()方法進行初始化,該方法只在Servlet第一次被請求加載時被調(diào)用一次;
(3)服務(wù)處理:容器收到對該Servlet的請求,則調(diào)用該Servlet對象的service()方法處理客戶端的請求;
(4)卸載:當(dāng)服務(wù)器端不再需要該Servlet時,調(diào)用destroy()方法卸載,釋放所占用的資源。11客戶端Servlet容器Servlet1.請求2.init()3.service()4.返回結(jié)果5.響應(yīng)6.destroy()Servlet生命周期順序圖12主要內(nèi)容Servlet概述
Servlet的開發(fā)和部署實現(xiàn)Servlet的相關(guān)接口和類13下面以Eclipse為開發(fā)環(huán)境,開發(fā)和部署一個簡單的Servlet
(1)在某一JavaWeb工程中創(chuàng)建一個Servlet14(2)指定Servlet的邏輯名、描述信息、初始化參數(shù)和URL映射;15(3)指定Servlet所需實現(xiàn)的方法16(4)完成創(chuàng)建,其所創(chuàng)建的Servlet的Java代碼為:
packagepack;
importjava.io.*;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassServletTestextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
publicServletTest(){
super();
//TODOAuto-generatedconstructorstub
}
所在包名Servlet的實現(xiàn)類17protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
response.setContentType("text/html");
PrintWriterout=response.getWriter();
out.print("thisisservlet");
out.close();
}
protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
//TODOAuto-generatedmethodstub
}
}添加的代碼18查看Servlet的配置文件(Web工程中):web.xml:對Servlet進行注冊19web.xml文檔<?xmlversion="1.0"encoding="UTF-8"?><web-appid="WebApp_ID"version="2.4"xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><display-name>TestWeb</display-name><servlet><description></description><display-name>ServletTest</display-name><servlet-name>ServletTest</servlet-name><servlet-class>pack.ServletTest</servlet-class></servlet>Servlet信息的描述20
<servlet-mapping><servlet-name>ServletTest</servlet-name><url-pattern>/ServletTest</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list></web-app>Servlet的映射21運行結(jié)果:22主要內(nèi)容Servlet概述
Servlet的開發(fā)和部署實現(xiàn)Servlet的相關(guān)接口和類23
在Web程序中,實現(xiàn)Servlet的相關(guān)接口和類主要包括以下三個:(1)Servlet接口
Servlet接口聲明的語法格式如下:
publicinterfaceServlet{}
該接口是所有的Servlet必須直接或間接實現(xiàn)的接口,它定義了以下的方法:24①init()方法
該方法由Servlet容器調(diào)用,僅在實例化Servlet之后調(diào)用,且調(diào)用一次。
②
Service()方法
③
destroy()方法
④
getServletConfig()方法
返回ServletConfig對象,該對象包含該Servlet的初始化和啟動參數(shù);
⑤
getServletInfo()方法
返回包含Servlet信息的String類型變量。25(2)GenericServlet類
GenericServlet類的定義格式如下:
publicabstractclassGenericServletimplementsServlet,ServletConfig,java.io.Serializable
GenericServlet是個抽象類,提供了對Servlet接口的基本實現(xiàn),其中,Service()方法是一個抽象方法。當(dāng)創(chuàng)建普通的和HTTP協(xié)議無關(guān)的操作時,可以通過繼承該類創(chuàng)建新的Servlet。26(3)HttpServlet類
HttpServlet類是抽象類,其定義格式為:
publicabstractclassHttpServletextendsGenericServletimplementsjava.io.Serializable
該類繼承了GenericServlet類,提供了Servlet接口中具體HTTP的實現(xiàn),用于快速開發(fā)應(yīng)用HTTP協(xié)議的Servlet類。
①
HttpServlet類提供了兩個service()重載方法;
27
②
HttpServlet的子類必須至少重寫下面的一個方法:
doGet():處理HTTP的get請求;
doPost():處理HTTP的post請求;
doHead():處理HEADER請求;
doOptions():自動決定支持什么HTTP方法;
doPut():處理HTTP的put請求;
doTrace():處理HTTP的Trace請求;
doDelete():處理HTTP的delete請求;28
通常在創(chuàng)建和實現(xiàn)HttpServlet的派生類時,不需要重寫service(),doTrace(),doDelete()等方法。
一般只需要把具體實現(xiàn)邏輯放在doPost(),doGet()方法的任意一個中,然后再其他方法中調(diào)用這個方法就可以了。29例:通過繼承HttpServlet實現(xiàn)一個Servlet,該Servlet能夠?qū)撁娴谋韱螖?shù)據(jù)進行處理。
packagepack;
importjava.io.PrintWriter;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
30
publicclassSerletAppextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
publicSerletApp(){
super();
//TODOAuto-generatedconstructorstub
}protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{重寫doGet()31request.setCharacterEncoding("gb2312");
Stringusername=request.getParameter("username");StringwelcomeInfo="welcome"+","+username;
response.setContentType("text/html");PrintWriterout=response.getWriter();
out.println(welcomeInfo);out.close();}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,response);}}獲取參數(shù)值重寫doPost()32
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>Inserttitlehere</title></head><body><formaction="SerletAp
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《電力工業(yè)概況》課件
- 小學(xué)一年級100以內(nèi)口算題
- 小學(xué)三年級多位數(shù)加減法脫式計算練習(xí)題
- 銀行績效考核總結(jié)
- 航空航天行業(yè)會計工作總結(jié)
- 《課程TMA系統(tǒng)篇》課件
- 公益機構(gòu)后勤管理工作概述
- 班主任與家校溝通的藝術(shù)與實踐
- 2023-2024學(xué)年河南省周口市部分校高三(下)開學(xué)地理試卷(2月份)
- 《創(chuàng)新的內(nèi)涵培訓(xùn)》課件
- 2024年中國電信運營商服務(wù)合同
- 2025屆山東省即墨一中物理高三第一學(xué)期期末綜合測試試題含解析
- 健身房的考勤管理制度
- 無人機使用安全協(xié)議書范文范本
- 中國汽車行業(yè)分析與展望:適者生存-2024-10-市場解讀
- 專題05 閱讀-2023-2024學(xué)年六年級英語寒假專項提升(人教PEP版)
- 做賬實操-期貨公司的賬務(wù)處理示例
- 雙方共用消防通道協(xié)議書
- 綠化租擺服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 整本書閱讀《鄉(xiāng)土中國》議題思辨:無訟之“訟”教學(xué)設(shè)計 中職語文高教版基礎(chǔ)模塊下冊
- 醫(yī)學(xué)教材 鼻出血的正確處理方法
評論
0/150
提交評論