理解Servlet的概念以及Servlet的處理流程.ppt_第1頁
理解Servlet的概念以及Servlet的處理流程.ppt_第2頁
理解Servlet的概念以及Servlet的處理流程.ppt_第3頁
理解Servlet的概念以及Servlet的處理流程.ppt_第4頁
理解Servlet的概念以及Servlet的處理流程.ppt_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第14章 Servlet編程,1.理解Servlet的概念以及Servlet的處理流程。 2.初步掌握用java書寫動(dòng)態(tài)網(wǎng)頁的技能。 3.對(duì)java在構(gòu)建Web網(wǎng)站方面的應(yīng)用有初步的了解。,教學(xué)目的要求,14.1 Servlet簡(jiǎn)介,Servlet是標(biāo)準(zhǔn)的服務(wù)器端程序,用以增強(qiáng)Web服務(wù)器的功能。Servlet運(yùn)行在服務(wù)器上,當(dāng)Web服務(wù)器收到一個(gè)用戶的Servlet請(qǐng)求時(shí),執(zhí)行Servlet,動(dòng)態(tài)地創(chuàng)建HTML響應(yīng)給用戶。,14.1.1 Servlet概述,Servlet是標(biāo)準(zhǔn)的服務(wù)器端程序,用以增強(qiáng)Web服務(wù)器的功能。用Servlet可以創(chuàng)建協(xié)議、平臺(tái)無關(guān)的Web應(yīng)用程序可以生成動(dòng)態(tài)的We

2、b頁面,它是公共網(wǎng)關(guān)接口(Common Gateway Interface ,CGI)程序設(shè)計(jì)的Java技術(shù)解決方案。 Servlet提供了比使用CGI開發(fā)服務(wù)器端功能更好的方法,因?yàn)镴ava Servlet 在Web服務(wù)器和Servlet之間定義了一個(gè)標(biāo)準(zhǔn)的接口,這使Servlet運(yùn)行是平臺(tái)獨(dú)立的,具有很高的可移植性,可以和異構(gòu)的服務(wù)器交互。大多數(shù)主流服務(wù)器通過插件支持Servlet。,14.1.2 Servlet開發(fā)環(huán)境搭建,學(xué)習(xí)Servlet開發(fā),必須搭建一個(gè)符合規(guī)范的開發(fā)環(huán)境,有許多的Web服務(wù)器或應(yīng)用服務(wù)器可以運(yùn)行提供我們需要的軟件:如Apache Tomcat、Allaire Jr

3、un、New Atlanta ServletExec、Gefion Software LiteWebServer等。,1、Apache Tomcat建Servlet開發(fā)環(huán)境,Tomcat是一個(gè)免費(fèi)的開放源代碼的Servlet容器可以到 下載Tomcat 5.x。 安裝后還應(yīng)設(shè)置CLASSPATH以使得編譯程序javac能利用Servlet API,為此,應(yīng)將install_dircommonlibServlet-api.jar放入置在CLASSPATH中。 啟動(dòng)后在瀏覽器地址欄里輸入http:/localhost:8080/出現(xiàn)服務(wù)器測(cè)試成功頁面

4、。,2、創(chuàng)建開發(fā)目錄,創(chuàng)建一個(gè)自己的開發(fā)目錄 比如:install_dirwebappsROOTmyapp,于其中放置所有的Servlet和JSP頁面,14.1.3 Servlet的工作原理與生命周期,每個(gè)Servlet都有一個(gè)生命周期,從它被裝入到Web應(yīng)用服務(wù)器的內(nèi)存開始,到終止或重新裝入時(shí)結(jié)束。 每個(gè)生命周期定義了Servlet如何被加載和被初始化,它怎樣接收請(qǐng)求、響應(yīng)請(qǐng)求,怎樣提供服務(wù)。 javax.Servlet.Servlet接口中定義了生命周期方法,如init()、service()、destroy()等,在Servlet的生命周期中,這些方法會(huì)在待定時(shí)間按照一定的順序被調(diào)用。,

5、1 、init()方法,客戶端通過HTTP協(xié)議發(fā)送,當(dāng)Web服務(wù)器接收請(qǐng)求并將其發(fā)送給Servlet,如果需要處理請(qǐng)求的Servlet未加載,服務(wù)器把它加載到JVM并執(zhí)行它。服務(wù)器首先調(diào)用init()方法進(jìn)行初始化工作。 該方法只被調(diào)用一次。,2 、service()方法,在init()方法之后,服務(wù)器調(diào)用service()方法準(zhǔn)備處理用戶的訪問。 通常是Servlet接收HTTP請(qǐng)求并執(zhí)行相應(yīng)的處理,并向Web服務(wù)器返回應(yīng)答,Web服務(wù)器再把從Servlet收到的應(yīng)答發(fā)送給客戶端。來自HTTP的訪問有GET、PUT、POST、DELETE等類型,這些都可以在service()方法中處理,也可

6、以重置doPost、doGet等方法來處理特定的請(qǐng)求方式。,3 、destroy()方法,服務(wù)器在結(jié)束Servlet運(yùn)行時(shí)調(diào)用destroy()方法,通常在這個(gè)方法中執(zhí)行諸如清除資源的操作。 例如停止后臺(tái)的文件處理、線程和釋放數(shù)據(jù)庫連接等操作。,例14.2 測(cè)試Servlet的生命周期方法,package mjwa; import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Lifecircle extends HttpServlet publi

7、c void init (ServletConfig config) throws ServletException System.out.println(init(): +new Date(); public void destroy() System.out.println(destroy(): +new Date(); public void service(HttpServletRequest req, HttpServletResponse resp) throws IOException ,ServletException PrintWriter out=resp.getWrite

8、r(); resp.setContentType(text/html); out.print(to see: install_dir/logs/stdout.log ); System.out.println(service(): +new Date(); ,使用命令javac -d . Lifecircle.java進(jìn)行編譯。將編譯之后在當(dāng)前目錄下產(chǎn)生的子目錄mjwa整體拷貝到myapp/WEB-INF/classes目錄下,并在配置文件web.xml中添加如下的servlet和servlet-mapping。 Lifecircle mjwa. Lifecircle Lifecircle /

9、servlet/Lifecircle ,重新啟動(dòng)Tomcat,在瀏覽器地址欄中輸入http:/localhost:8080/servlet/Lifecircle 即可運(yùn)行。該程序運(yùn)行時(shí)由System.out.print產(chǎn)生的輸出在install_dir/logs/stdout.log文件中。 可以看出,瀏覽器每刷新一次,service方法就執(zhí)行一遍,而init()方法只開始的時(shí)候執(zhí)行一次,destroy( )始終得不到執(zhí)行。,14.2 Servlet編程示例,例14.3獲取參數(shù):根據(jù)用戶的request,得到有關(guān)的信息。 /獲取參數(shù) package mjwa; import java.io.*

10、; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class InfoServlet extends HttpServlet public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException,response.setContentType(text/html); PrintWriter out = response.ge

11、tWriter(); out.println(); out.println(Request InformationExample); out.println(Method: + request.getMethod() out.println(Request URI: + request.getRequestURI(); out.println(Protocol: + request.getProtocol(); out.println(PathInfo: +request.getPathInfo();,out.println(Remote Address: + request.getRemot

12、eAddr()+); Enumeration e = request.getHeaderNames(); while (e.hasMoreElements() String name = (String)e.nextElement(); String value = request.getHeader(name); out.println(+name + = + value); out.println(); ,編譯InfoServlet.java源程序文件,生成字節(jié)代碼文件InfoServlet.class,將該文件拷貝到myapp/WEB-INF/classes/mjwa目錄下,并在配置文件

13、web.xml中添加如下的servlet和servlet-mapping。 InfoServlet mjwa. InfoServlet InfoServlet /servlet/ InfoServlet ,重新啟動(dòng)Tomcat,在瀏覽器地址欄中輸入http:/localhost:8080/servlet/ InfoServlet 運(yùn)行。本程序運(yùn)行結(jié)果如圖所示。,例14.4表單處理應(yīng)用舉例:利用Servlet讀取表單輸入內(nèi)容,對(duì)客戶的GET和POST請(qǐng)求分別用doGet方法和doPost方法進(jìn)行處理。 源程序如下: /表單處理應(yīng)用 package mjwa; import java.io.*;

14、import java.util.*; import javax.servlet.*; import javax.servlet.http.*;,public class FormServlet extends HttpServlet public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException resp.setContentType(text/html); PrintWriter out = resp.getWriter(); out.print

15、ln(GET Request. No Form Data Posted); ,public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException Enumeration e = req.getParameterNames(); PrintWriter out = resp.getWriter (); while (e.hasMoreElements() String name = (String)e.nextElement(); String valu

16、e = req.getParameter(name); out.println(name + : + value); ,對(duì)應(yīng)的FormServlet .html文件如下: Name: Address: , Name: Address: ,對(duì)源文件FormServlet.java進(jìn)行編譯,生成字節(jié)代碼文件FormServlet.class,將該文件拷貝到myapp/WEB-INF/classes/mjwa目錄下,并在配置文件web.xml中添加如下的servlet和servlet-mapping。, FormServlet mjwa. FormServlet FormServlet /servl

17、et/FormServlet ,文件FormServlet.html保存在文件夾install_dirwebappsROOTmyapp中。重新啟動(dòng)Tomcat。在瀏覽器地址欄中輸入http:/localhost:8080/FormServlet.html 運(yùn)行。本程序運(yùn)行結(jié)果如圖14.4(a)(c)所示。,(a),(b),(c) 圖14.4例14.4的執(zhí)行結(jié)果,例14.5會(huì)話管理應(yīng)用舉例。 源程序如下: package mjwa;/例14.5,會(huì)話管理 import java.io.*; import java.util.*; import javax.servlet.*; import ja

18、vax.servlet.http.*; public class SessionServlet extends HttpServlet public void service(HttpServletRequest request, HttpServletResponse response),throws IOException, ServletException response.setContentType(text/html); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(

19、true); Date created = new Date(session.getCreationTime(); Date accessed = new Date(session.getLastAccessedTime(); out.println(ID + session.getId(); out.println(Created: + created); out.println(Last Accessed: + accessed+);,String id = request.getParameter(id); String email = request.getParameter(email); session.setAttribute(id, id); session.setAttribute(email, email); Enumeration

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論