Java Web程序開發(fā)與分析課件:Servlet編程(一)_第1頁
Java Web程序開發(fā)與分析課件:Servlet編程(一)_第2頁
Java Web程序開發(fā)與分析課件:Servlet編程(一)_第3頁
Java Web程序開發(fā)與分析課件:Servlet編程(一)_第4頁
Java Web程序開發(fā)與分析課件:Servlet編程(一)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

JavaWeb程序設(shè)計(jì)

——Servlet編程(1)2主要內(nèi)容

Servlet概述

Servlet的開發(fā)和部署實(shí)現(xiàn)Servlet的相關(guān)接口和類3什么是ServletServlet是1996年由Sun與其它組織提出的Web服務(wù)器端的編程技術(shù)。(1)Servlet是服務(wù)器端的Java程序,用來擴(kuò)充和增強(qiáng)Web服務(wù)器的功能,對客戶端的請求進(jìn)行響應(yīng);(2)Servlet編程技術(shù)是基于Java語言的Web服務(wù)器編程技術(shù),主要用于Web服務(wù)器端獲得客戶端的訪問請求信息和動態(tài)生成對客戶端的響應(yīng)信息;(3)Servlet是一個(gè)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ù)器端運(yùn)行的Java程序,JSP在運(yùn)行時(shí)被轉(zhuǎn)換為Servlet,然后被執(zhí)行。因此,執(zhí)行JSP實(shí)際上與執(zhí)行Servlet是一樣的。

JSP采用的是腳本語言的形式,而Servlet采用的Java應(yīng)用程序的實(shí)現(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)運(yùn)行速度不同:JSP在運(yùn)行時(shí),需要被轉(zhuǎn)換為Servlet,因此,對于初次或修改后的JSP運(yùn)行的速度會比Servlet要慢一些;

(3)Servlet主要應(yīng)用在業(yè)務(wù)邏輯層,對于表示層的實(shí)現(xiàn)卻不是很適合,JSP則主要是為方便表示層而設(shè)計(jì)的。8Servlet是服務(wù)器端的Java程序,運(yùn)行在Web服務(wù)器的Servlet容器中;

Servlet容器從屬于Java虛擬機(jī),根據(jù)Servlet的生命周期,負(fù)責(zé)執(zhí)行Servlet對象的初始化、運(yùn)行和卸載。

Servlet的工作原理9

什么是Servlet的生命周期?

Servlet在容器中從創(chuàng)建到刪除的過程被稱為Servlet的生命周期,可以分為四個(gè)階段:

裝載Servlet,實(shí)例化,服務(wù)處理,卸載Servlet的工作原理10Servlet的生命周期可分為如下幾個(gè)階段:

(1)裝載Servlet,如:在Servlet容器啟動后,客戶端首次向Servlet發(fā)出請求;

(2)實(shí)例化一個(gè)Servlet對象,調(diào)用Servlet的init()方法進(jìn)行初始化,該方法只在Servlet第一次被請求加載時(shí)被調(diào)用一次;

(3)服務(wù)處理:容器收到對該Servlet的請求,則調(diào)用該Servlet對象的service()方法處理客戶端的請求;

(4)卸載:當(dāng)服務(wù)器端不再需要該Servlet時(shí),調(diào)用destroy()方法卸載,釋放所占用的資源。11客戶端Servlet容器Servlet1.請求2.init()3.service()4.返回結(jié)果5.響應(yīng)6.destroy()Servlet生命周期順序圖12主要內(nèi)容Servlet概述

Servlet的開發(fā)和部署實(shí)現(xiàn)Servlet的相關(guān)接口和類13下面以Eclipse為開發(fā)環(huán)境,開發(fā)和部署一個(gè)簡單的Servlet

(1)在某一JavaWeb工程中創(chuàng)建一個(gè)Servlet14(2)指定Servlet的邏輯名、描述信息、初始化參數(shù)和URL映射;15(3)指定Servlet所需實(shí)現(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的實(shí)現(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進(jìn)行注冊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運(yùn)行結(jié)果:22主要內(nèi)容Servlet概述

Servlet的開發(fā)和部署實(shí)現(xiàn)Servlet的相關(guān)接口和類23

在Web程序中,實(shí)現(xiàn)Servlet的相關(guān)接口和類主要包括以下三個(gè):(1)Servlet接口

Servlet接口聲明的語法格式如下:

publicinterfaceServlet{}

該接口是所有的Servlet必須直接或間接實(shí)現(xiàn)的接口,它定義了以下的方法:24①init()方法

該方法由Servlet容器調(diào)用,僅在實(shí)例化Servlet之后調(diào)用,且調(diào)用一次。

Service()方法

destroy()方法

getServletConfig()方法

返回ServletConfig對象,該對象包含該Servlet的初始化和啟動參數(shù);

getServletInfo()方法

返回包含Servlet信息的String類型變量。25(2)GenericServlet類

GenericServlet類的定義格式如下:

publicabstractclassGenericServletimplementsServlet,ServletConfig,java.io.Serializable

GenericServlet是個(gè)抽象類,提供了對Servlet接口的基本實(shí)現(xiàn),其中,Service()方法是一個(gè)抽象方法。當(dāng)創(chuàng)建普通的和HTTP協(xié)議無關(guān)的操作時(shí),可以通過繼承該類創(chuàng)建新的Servlet。26(3)HttpServlet類

HttpServlet類是抽象類,其定義格式為:

publicabstractclassHttpServletextendsGenericServletimplementsjava.io.Serializable

該類繼承了GenericServlet類,提供了Servlet接口中具體HTTP的實(shí)現(xiàn),用于快速開發(fā)應(yīng)用HTTP協(xié)議的Servlet類。

HttpServlet類提供了兩個(gè)service()重載方法;

27

HttpServlet的子類必須至少重寫下面的一個(gè)方法:

doGet():處理HTTP的get請求;

doPost():處理HTTP的post請求;

doHead():處理HEADER請求;

doOptions():自動決定支持什么HTTP方法;

doPut():處理HTTP的put請求;

doTrace():處理HTTP的Trace請求;

doDelete():處理HTTP的delete請求;28

通常在創(chuàng)建和實(shí)現(xiàn)HttpServlet的派生類時(shí),不需要重寫service(),doTrace(),doDelete()等方法。

一般只需要把具體實(shí)現(xiàn)邏輯放在doPost(),doGet()方法的任意一個(gè)中,然后再其他方法中調(diào)用這個(gè)方法就可以了。29例:通過繼承HttpServlet實(shí)現(xiàn)一個(gè)Servlet,該Servlet能夠?qū)撁娴谋韱螖?shù)據(jù)進(jìn)行處理。

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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論