版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java Web開發(fā)開發(fā) 計(jì)算機(jī)系計(jì)算機(jī)系孫杰孫杰Servlet開發(fā)開發(fā)2n本章內(nèi)容1.什么Servlet2. Servlet的主要方法3. Servlet運(yùn)行原理(生命周期)4. Servlet開發(fā)流程5. MyEclipse中開發(fā)Servlet6. Servlet實(shí)例2.1 什么是什么是ServletnServlet是用Java語言編寫的運(yùn)行在服務(wù)器端的小應(yīng)用程序,能夠接收Web客戶端的請求,并能對Web客戶端進(jìn)行響應(yīng),通常是通過HTTP(HyperText Transfer Protocol)協(xié)議進(jìn)行工作的。n可以認(rèn)為Servlet是服務(wù)器端的一個(gè)動(dòng)態(tài)Java程序,用戶通過訪問這個(gè)程序獲
2、取服務(wù)器的服務(wù)。2.2 Servlet的主要方法的主要方法nServlet是一個(gè)Java類,通常會(huì)有3類方法,分別是:init方法,用于初始化。destroy方法,用于釋放資源。service方法,服務(wù)類方法,對用戶的請求進(jìn)行處理,并對用戶進(jìn)行響應(yīng),幾乎所有處理功能都在這里完成。這類方法可以有多個(gè),最常用的是doGet和doPost方法。Servlet的生命周期的生命周期n裝載Servlet:這項(xiàng)操作一般是動(dòng)態(tài)執(zhí)行。有些服務(wù)器提供了相應(yīng)的管理功能,可以在啟動(dòng)的時(shí)候就裝載Servlet,并能夠初始化特定的Servlet:n創(chuàng)建過程:創(chuàng)建一個(gè)Servlet實(shí)例 ;n初始化過程:調(diào)用Servlet的
3、init()方法 ;n響應(yīng)服務(wù):如果容器接收到對此Servlet的請求,那么它調(diào)用Servlet的service()方法 ;n銷毀釋放資源:實(shí)例被銷毀,通過調(diào)用Servlet的destroy()方法銷毀Servlet 。2.3 Servlet運(yùn)行原理運(yùn)行原理n1.Servlet的工作過程如下的工作過程如下 Servlet容器接收到客戶端的請求時(shí),先判斷用戶所請求的Servlet對象是否存在。如果不存在,則加載Servlet類、創(chuàng)建Servlet對象并實(shí)例化,然后調(diào)用init方法進(jìn)行初始化。 容器創(chuàng)建request和response對象,并且創(chuàng)建一個(gè)線程,調(diào)用Servlet對象的service方
4、法(間接調(diào)用doGet方法或者doPost方法)。 service方法產(chǎn)生響應(yīng),容器將響應(yīng)發(fā)回客戶端。 容器銷毀reqeust和response對象以及相應(yīng)的線程。n注意:加載Servlet類、創(chuàng)建對象、調(diào)用初始化方法init和銷毀方法destroy都只有一次。當(dāng)Web應(yīng)用被卸載或者服務(wù)器被關(guān)閉的時(shí)候,系統(tǒng)卸載Servlet,調(diào)用destroy方法釋放資源。 2.3 Servlet運(yùn)行原理運(yùn)行原理n2.Servlet的加載有兩種方式:的加載有兩種方式:第一次請求的時(shí)候加載。服務(wù)器啟動(dòng)的時(shí)候加載。3.2.4開發(fā)開發(fā)Servlet基本流程基本流程n由于MyEcilpse自身具有的強(qiáng)大功能,上面開發(fā)
5、Servlet的過程中某些操作已經(jīng)由MyEclipse自動(dòng)完成,極大的方便了程序員開發(fā)程序。但當(dāng)脫離集成開發(fā)工具時(shí),對開發(fā)一個(gè)Servlet的基本流程也應(yīng)有所了解。2.4開發(fā)開發(fā)Servlet基本流程基本流程n開發(fā)一個(gè)Servlet程序基本包括以下幾步:(1)編寫Servletn引入用到的包,需要的導(dǎo)入的包有:javax.servlet.*,javax.servlet.http.*等n定義類的基本框架并繼承HttpServletn重寫成員方法。如果需要對Servlet進(jìn)行初始化,需要重寫init方法。如果需要在卸載Servlet的時(shí)候執(zhí)行一些功能,可以重寫destory方法。一般情況下,根據(jù)需
6、要完成的功能只需要重寫服務(wù)類方法即可。服務(wù)類方法包括doGet方法和doPost方法等。 nimport javax.servlet.ServletException;nimport javax.servlet.http.HttpServlet;nimport javax.servlet.http.HttpServletRequest;nimport javax.servlet.http.HttpServletResponse;npublic class TestServlet extends HttpServlet npublic void init() throws ServletExce
7、ption n n n/Process the HTTP Get requestnpublic void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException n n npublic void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException n n nServlet中獲取參數(shù)n隱含對象Reque
8、stString request.getParamter(參數(shù)名稱);例子:String userName=“”;userName=request.getParameter(“username”);System.out.println(“userName”+userName);HttpServletRequest常用常用APInHttpServletRequest的常用方法有:獲取單值請求參數(shù)的方法:getParamter();獲取多值請求參數(shù)的方法:getParameterValues();獲取請求參數(shù)名字的方法:getParameterNames();獲取session對象的方法:getS
9、ession();獲取Web應(yīng)用根路徑的方法:getContextPath();獲取Servlet路徑的方法:getServletPath();獲取request中的屬性的方法:getAttribute();設(shè)置request中的屬性的方法:setAttribute();獲取請求轉(zhuǎn)發(fā)對象的方法:getRequestDispatcher();2.4開發(fā)開發(fā)Servlet基本流程基本流程(2)編譯Servletn在MyEcilpse中,.java文件會(huì)在保存后自動(dòng)編譯。n若未安裝MyEcilpse,則需要程序員手工編譯Servlet。需要事先把位于%TOMCAT_HOME%commonlib下的s
10、ervlet-api.jar壓縮包添加到環(huán)境變量中。 使用JDK中的javac命令編譯 。2.4開發(fā)開發(fā)Servlet基本流程基本流程(3)配置ServletnServlet編寫完之后,作為Web應(yīng)用的組成部分,需要在配置文件web.xml中進(jìn)行配置。nn Servlet的名稱n Servlet類的全路徑n n 參數(shù)名1n 參數(shù)值1n n 啟動(dòng)時(shí)加載的順序n nn servlet的名稱n 訪問路徑n2.4 Servlet的訪問路徑和的訪問路徑和url-pattern 當(dāng)一個(gè)請求發(fā)送到servlet容器的時(shí)候,容器先會(huì)將請求的url減去當(dāng)前應(yīng)用上下文的路徑作為servlet的映射url,比如我訪
11、問的是http:/localhost/test/aaa.html,我的應(yīng)用上下文是test,容器會(huì)將http:/localhost/test去掉,剩下的/aaa.html部分拿來做servlet的映射匹配。這個(gè)映射匹配過程是有順序的,而且當(dāng)有一個(gè)servlet匹配成功以后,就不會(huì)去理會(huì)剩下的servlet了,其匹配規(guī)則和順序如下:1. 精確路徑匹配。例子:比如servletA 的url-pattern為 /test,servletB的url-pattern為 /* ,這個(gè)時(shí)候,如果我訪問的url為http:/localhost/test ,這個(gè)時(shí)候容器就會(huì)先 進(jìn)行精確路徑匹配,發(fā)現(xiàn)/test正
12、好被servletA精確匹配,那么就去調(diào)用servletA,也不會(huì)去理會(huì)其他的servlet了。2. 最長路徑匹配。例子:servletA的url-pattern為/test/*,而servletB的url-pattern為/test/a/*,此時(shí)訪問http:/localhost/test/a時(shí),容器會(huì)選擇路徑最長的servlet來匹配,也就是這里的servletB。2.4 Servlet的訪問路徑和的訪問路徑和url-pattern n3. 擴(kuò)展匹配,如果url最后一段包含擴(kuò)展,容器將會(huì)根據(jù)擴(kuò)展選擇合適的servlet。例子:servletA的url-pattern:*.action,*.
13、don4. 如果前面三條規(guī)則都沒有找到一個(gè)servlet,容器會(huì)根據(jù)url選擇對應(yīng)的請求資源。如果應(yīng)用定義了一個(gè)default servlet,則容器會(huì)將請求丟給default servlet。2.4 Servlet的訪問路徑和的訪問路徑和url-pattern 在web.xml文件中,以下語法用于定義映射:n1. 以”/開頭和以”/*”結(jié)尾的是用來做路徑映射的。n2. 以前綴”*.”開頭的是用來做擴(kuò)展映射的。n3.“/” 是用來定義default servlet映射的。n4.剩下的都是用來定義詳細(xì)映射的。比如: /aa/bb/cc.action2.4開發(fā)開發(fā)Servlet基本流程基本流程(4
14、)部署ServletnServlet編寫完成之后,需要部署到服務(wù)器才能訪問,編譯好的文件需要放在Web應(yīng)用的WEB-INFclasses下面。n利用MyEclipse創(chuàng)建的Servlet,成功編譯后其.class文件已自動(dòng)放置到WEB-INFclasses目錄下。2.4開發(fā)開發(fā)Servlet基本流程基本流程(5)測試Servletn測試方式: n訪問Servlet時(shí),要使用在web.xml中配置的url地址格式進(jìn)行訪問。2.5 MyEclipse中開發(fā)中開發(fā)Servletn利用MyEclipse,可以在Web工程中非常方便地創(chuàng)建Servlet程序,并且可以根據(jù)需要為程序員自動(dòng)生成其中的大部分方
15、法。程序員只需在此基礎(chǔ)上進(jìn)行修改就可以快速開發(fā)出自己的程序。 2.5 MyEclipse中開發(fā)中開發(fā)Servletn利用MyEclipse開發(fā)Servlet的步驟如下:(1)在創(chuàng)建的myweb工程的src目錄上,右擊鼠標(biāo),選擇NewServlet。(2)在Name處輸入Servlet名字,如MyServlet,單擊Next按鈕。2.5 MyEclipse中開發(fā)中開發(fā)Servlet(3)在Servlet/JSP Mapping URL處配置Servlet的mapping url信息,如:/test/MyServlet。此處配置的mapping url即為將來訪問Servlet時(shí)的地址格式。單擊F
16、inish按鈕結(jié)束。2.5 MyEclipse中開發(fā)中開發(fā)Servlet(4)查看生成的Servlet源文件:在Eclipse環(huán)境中,創(chuàng)建Servlet時(shí)可以選擇自動(dòng)生成構(gòu)造方法、init方法、destroy方法、doGet方法和doPost方法。 (5)查看生成的Servlet源文件:MyEclipse會(huì)為新建的Servlet在web.xml中自動(dòng)生成相應(yīng)的配置代碼。每個(gè)Servlet在web.xml中都對應(yīng)一對標(biāo)簽和一對標(biāo)簽。其中:標(biāo)簽用于聲明Servlet。其中的子標(biāo)簽又包括:n用于聲明Servlet的名字,是web.xml中內(nèi)部使用的名字。n標(biāo)簽:用于聲明Servlet所對應(yīng)的類名。標(biāo)
17、簽用于進(jìn)行Servlet映射。其中的子標(biāo)簽又包括:n標(biāo)簽:表示Servlet的名字,需要和上面標(biāo)簽的子標(biāo)簽中聲明的名字保持一致。n標(biāo)簽:用于配置Servlet的訪問地址。2.5 MyEclipse中開發(fā)中開發(fā)Servlet(6)測試Servlet的運(yùn)行:可以通過以下3種方式進(jìn)行:通過在瀏覽器中直接輸入地址訪問::8080/myweb/test/MyServlet通過超鏈的形式訪問:第一個(gè)Servlet通過表單提交的方式訪問:2.5 MyEclipse中開發(fā)中開發(fā)Servletn啟動(dòng)Tomcat服務(wù)器,使用第一種方式,即在瀏覽器地址欄中直接輸入地址訪問:http:/
18、localhost:8080/myweb/test/MyServlet運(yùn)行效果如下:2.6 Servlet實(shí)例實(shí)例1.HelloWorld程序1)引入包 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;2.6 Servlet實(shí)例實(shí)例1.HelloWorld程序2)處理GET請求 public class HelloWorld extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException1.HelloWorld程序3)返回結(jié)果 response.setContentType(text/html);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 管線改造合同范本
- 海淀區(qū)農(nóng)村集體經(jīng)濟(jì)合同管理辦法
- 合同裁判共同規(guī)則
- 角膜炎的治療與護(hù)理
- 2024-2025學(xué)年新教材高中地理第五章自然環(huán)境的整體性與差異性單元評價(jià)含解析湘教版選擇性必修一
- 2024房產(chǎn)抵押貸款的合同協(xié)議書
- 英文調(diào)查報(bào)告(共16篇)
- 精準(zhǔn)營銷策略15篇
- 無人機(jī)技術(shù)的應(yīng)用前景
- 2024店面租賃合同模板「標(biāo)準(zhǔn)版」
- 彎管力矩計(jì)算公式
- 《Excel數(shù)據(jù)分析》教案
- 淺談讓學(xué)生信服的有效途徑
- 汽車低壓電線束技術(shù)條件
- 水稻常見病蟲害ppt
- 學(xué)生會(huì)考核表(共3頁)
- 小蛋殼歷險(xiǎn)記.ppt
- 六年級家長會(huì)家長代表演講稿-PPT
- 學(xué)校校報(bào)??硎渍Z(創(chuàng)刊詞)
- 《電容的連接》ppt課件
- 采集運(yùn)維專業(yè)問答題(修訂)20140627
評論
0/150
提交評論