版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第14章Servlet編程1.理解Servlet的概念以及Servlet的處理流程。2.初步掌握用java書寫動態(tài)網(wǎng)頁的技能。3.對java在構(gòu)建Web網(wǎng)站方面的應(yīng)用有初步的了解。教學(xué)目的要求14.1Servlet簡介
Servlet是標(biāo)準(zhǔn)的服務(wù)器端程序,用以增強(qiáng)Web服務(wù)器的功能。Servlet運(yùn)行在服務(wù)器上,當(dāng)Web服務(wù)器收到一個用戶的Servlet請求時,執(zhí)行Servlet,動態(tài)地創(chuàng)建HTML響應(yīng)給用戶。14.1.1Servlet概述
Servlet是標(biāo)準(zhǔn)的服務(wù)器端程序,用以增強(qiáng)Web服務(wù)器的功能。用Servlet可以創(chuàng)建協(xié)議、平臺無關(guān)的Web應(yīng)用程序可以生成動態(tài)的Web頁面,它是公共網(wǎng)關(guān)接口(CommonGatewayInterface,CGI)程序設(shè)計的Java技術(shù)解決方案。Servlet提供了比使用CGI開發(fā)服務(wù)器端功能更好的方法,因?yàn)镴avaServlet
在Web服務(wù)器和Servlet之間定義了一個標(biāo)準(zhǔn)的接口,這使Servlet運(yùn)行是平臺獨(dú)立的,具有很高的可移植性,可以和異構(gòu)的服務(wù)器交互。大多數(shù)主流服務(wù)器通過插件支持Servlet。
14.1.2Servlet開發(fā)環(huán)境搭建
學(xué)習(xí)Servlet開發(fā),必須搭建一個符合規(guī)范的開發(fā)環(huán)境,有許多的Web服務(wù)器或應(yīng)用服務(wù)器可以運(yùn)行提供我們需要的軟件:如ApacheTomcat、AllaireJrun、NewAtlantaServletExec、GefionSoftwareLiteWebServer等。
1、ApacheTomcat建Servlet開發(fā)環(huán)境Tomcat是一個免費(fèi)的開放源代碼的Servlet容器可以到
下載Tomcat5.x。安裝后還應(yīng)設(shè)置CLASSPATH以使得編譯程序javac能利用ServletAPI,為此,應(yīng)將install_dir\common\lib\Servlet-api.jar放入置在CLASSPATH中。啟動后在瀏覽器地址欄里輸入http://localhost:8080/出現(xiàn)服務(wù)器測試成功頁面。
2、創(chuàng)建開發(fā)目錄
創(chuàng)建一個自己的開發(fā)目錄
比如:install_dir\webapps\ROOT\myapp,于其中放置所有的Servlet和JSP頁面
2、service()方法
在init()方法之后,服務(wù)器調(diào)用service()方法準(zhǔn)備處理用戶的訪問。通常是Servlet接收HTTP請求并執(zhí)行相應(yīng)的處理,并向Web服務(wù)器返回應(yīng)答,Web服務(wù)器再把從Servlet收到的應(yīng)答發(fā)送給客戶端。來自HTTP的訪問有GET、PUT、POST、DELETE等類型,這些都可以在service()方法中處理,也可以重置doPost、doGet等方法來處理特定的請求方式。3、destroy()方法
服務(wù)器在結(jié)束Servlet運(yùn)行時調(diào)用destroy()方法,通常在這個方法中執(zhí)行諸如清除資源的操作。例如停止后臺的文件處理、線程和釋放數(shù)據(jù)庫連接等操作。例14.2測試Servlet的生命周期方法packagemjwa;importjava.util.*;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassLifecircleextendsHttpServlet{ publicvoidinit(ServletConfigconfig) throwsServletException{ System.out.println("init():"+newDate()); } publicvoiddestroy(){ System.out.println("destroy():"+newDate()); }
publicvoidservice(HttpServletRequestreq, HttpServletResponseresp) throwsIOException,ServletException{ PrintWriterout=resp.getWriter(); resp.setContentType("text/html"); out.print("<HTML>tosee:<br> <h1>install_dir/logs/stdout.log</h1> </HTML>"); System.out.println("service():"+newDate()); }}使用命令javac-d.Lifecircle.java進(jìn)行編譯。將編譯之后在當(dāng)前目錄下產(chǎn)生的子目錄mjwa整體拷貝到myapp/WEB-INF/classes目錄下,并在配置文件web.xml中添加如下的servlet和servlet-mapping。<servlet> <servlet-name>Lifecircle</servlet-name> <servlet-class>mjwa.Lifecircle</servlet-class></servlet><servlet-mapping> <servlet-name>Lifecircle</servlet-name> <url-pattern>/servlet/Lifecircle</url-pattern></servlet-mapping>重新啟動Tomcat,在瀏覽器地址欄中輸入http://localhost:8080/servlet/Lifecircle即可運(yùn)行。該程序運(yùn)行時由System.out.print產(chǎn)生的輸出在install_dir/logs/stdout.log文件中。
可以看出,瀏覽器每刷新一次,service方法就執(zhí)行一遍,而init()方法只開始的時候執(zhí)行一次,destroy()始終得不到執(zhí)行。14.2Servlet編程示例〖例14.3〗獲取參數(shù):根據(jù)用戶的request,得到有關(guān)的信息。//獲取參數(shù)packagemjwa;importjava.io.*;importjava.util.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassInfoServletextendsHttpServlet{ publicvoidservice(HttpServletRequestrequest, HttpServletResponseresponse) throwsIOException,ServletException{
response.setContentType("text/html"); PrintWriterout=response.getWriter(); out.println("<html><body>"); out.println("<h3>RequestInformationExample</h3>");out.println("Method:"+request.getMethod()out.println("<br>RequestURI:"+request.getRequestURI());out.println("<br>Protocol:"+request.getProtocol());out.println("<br>PathInfo:"+request.getPathInfo());
out.println("<br>RemoteAddress:"+request.getRemoteAddr()+"<br>");Enumeratione=request.getHeaderNames();while(e.hasMoreElements()){Stringname=(String)e.nextElement();Stringvalue=request.getHeader(name);out.println("<br>"+name+"="+value);}out.println("</body></html>");}}編譯InfoServlet.java源程序文件,生成字節(jié)代碼文件InfoServlet.class,將該文件拷貝到myapp/WEB-INF/classes/mjwa目錄下,并在配置文件web.xml中添加如下的servlet和servlet-mapping。 <servlet> <servlet-name>InfoServlet</servlet-name> <servlet-class>mjwa.InfoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>InfoServlet</servlet-name> <url-pattern>/servlet/InfoServlet</url-pattern> </servlet-mapping>重新啟動Tomcat,在瀏覽器地址欄中輸入http://localhost:8080/servlet/InfoServlet運(yùn)行。本程序運(yùn)行結(jié)果如圖所示?!祭?4.4〗表單處理應(yīng)用舉例:利用Servlet讀取表單輸入內(nèi)容,對客戶的GET和POST請求分別用doGet方法和doPost方法進(jìn)行處理。源程序如下://表單處理應(yīng)用packagemjwa;importjava.io.*;importjava.util.*;importjavax.servlet.*;importjavax.servlet.http.*;
publicclassFormServletextendsHttpServlet{publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsIOException,ServletException{resp.setContentType("text/html");PrintWriterout=resp.getWriter();
out.println("GETRequest.NoFormDataPosted");}
publicvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsIOException,ServletException{Enumeratione=req.getParameterNames();PrintWriterout=resp.getWriter();while(e.hasMoreElements()){Stringname=(String)e.nextElement();Stringvalue=req.getParameter(name);out.println(name+":<br>"+value);}}}對應(yīng)的FormServlet.html文件如下:<html><body><FORMaction=http://localhost:8080/servlet/FormServletmethod="GET">Name:<br><inputtype="text"name="name"><br>Address:<br><inputtype="text"name="addr"><br><inputtype="submit"value="OK-GET"></FORM><hr><FORMaction=http://localhost:8080/servlet/FormServletmethod="POST">Name:<br><inputtype="text"name="name"><br>Address:<br><inputtype="text"name="addr"><br><inputtype="submit"value="OK-POST"></FORM></body></html>對源文件FormServlet.java進(jìn)行編譯,生成字節(jié)代碼文件FormServlet.class,將該文件拷貝到myapp/WEB-INF/classes/mjwa目錄下,并在配置文件web.xml中添加如下的servlet和servlet-mapping。 <servlet> <servlet-name>FormServlet</servlet-name> <servlet-class>mjwa.FormServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FormServlet</servlet-name> <url-pattern>/servlet/FormServlet</url-pattern> </servlet-mapping>文件FormServlet.html保存在文件夾install_dir\webapps\ROOT\myapp中。重新啟動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〗會話管理應(yīng)用舉例。源程序如下:
packagemjwa;//例14.5,會話管理
importjava.io.*;importjava.util.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassSessionServletextendsHttpServlet{publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)
throwsIOException,ServletException{response.setContentType("text/html");PrintWriterout=response.getWriter();HttpSessionsession=request.getSession(true);Datecreated=newDate(session.getCreationTime());Dateaccessed=newDate(session.getLastAccessedTime());out.println("<br>ID"+session.getId());out.println("<br>Created:"+created);out.println("<br>LastAccessed:"+accessed+"<hr>");
Stringid=request.getParameter("id");Stringemail=request.getParameter("email");
session.setAttribute("id",id);session.setAttribute("email",email);
Enumeratione=session.getAttributeNames();while(e.hasMoreElements()){Stringname=
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度銷售人員勞動合同中的銷售目標(biāo)管理與執(zhí)行合同3篇
- 2025年度機(jī)械挖掘機(jī)操作員勞動合同范本9篇
- 2024順德汽車客運(yùn)站租賃合同的消防安全規(guī)定
- 2025年度大巴車租賃合同(含保險理賠服務(wù))3篇
- 二零二五年度國際物流運(yùn)輸與倉儲服務(wù)合同9篇
- 2024版辦公室場地租賃合同樣本
- 二零二五年度阿里云服務(wù)器云計算安全評估合同2篇
- 二零二五年度汽車后市場運(yùn)輸服務(wù)合同2篇
- 二零二五年度跨境金融借款合同6篇
- 2024版夫妻雙方婚后行為規(guī)范合同書版B版
- 《旅游銷售技巧》課件
- 2025年教師資格證考試教育理論基礎(chǔ)知識必考的250個重點(diǎn)
- 《海關(guān)業(yè)務(wù)》課件-項(xiàng)目三 商品歸類
- 新員工入職培訓(xùn)員工手冊
- 北京生命科技研究院 筆試
- 2023年上半年反洗錢人員考試題庫(參考600題)
- 電子招投標(biāo)測試試題匯編
- 飛書手把手使用教程培訓(xùn)
- 2025屆山東省濰坊市高三物理第一學(xué)期期中經(jīng)典試題含解析
- 《醫(yī)院醫(yī)療質(zhì)量安全管理提升年實(shí)施方案》
- 中華人民共和國能源法
評論
0/150
提交評論