版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第14章JavaServlet程序設計李穎主要內容Servlet技術簡介Servlet結構Servlet應用Servlet技術什么是ServletServlet是使用Java語言編寫的效勞器端程序,Servlet運行在效勞器端,并由效勞器調用執(zhí)行,它能將HTTP請求和響應封裝在標準Java類中來實現各種Web應用一個Servlet就是一個Java類,我們把實現了servlet接口的java程序,稱之為ServletJava語言能夠實現的功能,Servlet根本上都能實現〔除了圖形界面外〕主要用于處理客戶端傳來的HTTP請求,并返回一個響應Servlet技術Servlet的主要方法Servlet是一個Java類,常見方法有:init方法,用于初始化。service方法,效勞類方法,對用戶的請求進行處理,并對用戶進行響應,幾乎所有處理功能都在這里完成。destroy方法,用于釋放資源。Servlet技術Servlet的生命周期加載并初始化〔調用init()方法〕在Servlet對象的生命周期內,該方法只調用一次執(zhí)行〔調用service()方法〕在Servlet對象周期內,該方法可能被屢次請求,屢次調用卸載〔調用destroy()方法〕終止效勞時(如關閉效勞器),自動調用該方法銷毀Servlet對象Servlet對象周期內,該方法只調用一次Servlet的運行過程Servlet程序是由WEB效勞器調用,web效勞器收到客戶端的Servlet訪問請求后:Web效勞器首先檢查是否已經裝載并創(chuàng)立了該Servlet的實例對象。如果是,那么直接執(zhí)行第④步,否那么,執(zhí)行第②步。裝載并創(chuàng)立該Servlet的一個實例對象。調用Servlet實例對象的init()方法。創(chuàng)立一個用于封裝HTTP請求消息的HttpServletRequest對象和一個代表HTTP響應消息的HttpServletResponse對象,然后調用Servlet的service()方法并將請求和響應對象作為參數傳遞進去。WEB應用程序被停止或重新啟動之前,Servlet引擎將卸載Servlet,并在卸載之前調用Servlet的destroy()方法。Servlet的運行過程Servlet技術Servlet接口實現類在整個Servlet程序之中最重要的就是Servlet接口,在此接口下定義了一個GenericServlet的子類,但是一般不會直接繼承此類,而是根據所使用的協議選擇GenericServlet的子類繼承,例如:現在是采用HTTP協議處理的,所以一般而言當需要使用HTTP協議操作時用戶自定義的Servlet類都要繼承HttpServlet類。Servlet技術HttpServlet在實現Servlet接口時,覆寫了service方法,該方法體內的代碼會自動判斷用戶的請求方式,如為GET請求,那么調用HttpServlet的doGet方法,如為Post請求,那么調用doPost方法。因此,開發(fā)人員在編寫Servlet時,通常只需要覆寫doGet或doPost方法,而不要去覆寫service方法。Servlet技術Servlet常用接口與類的層次關系類類類接口接口接口接口接口Servlet程序結構引入相關包java.io包〔要用到PrintWriter類〕javax.servlet〔用到類ServletException〕(用到HttpServlet,HttpServletRequest和HttpServletResponse類)通過繼承HttpServlet類得到Servlet重載doGet或doPost方法實現Servlet功能一般情況下,在doGet或doPost()方法中利用Response的getWriter()方法獲得用于向客戶端發(fā)送數據的PrintWriter類在使用println方法生成向客戶端發(fā)送的頁面Servlet實例用servlet編寫HelloWorld程序1〕引入包importjava.io.*;importjavax.servlet.*;import.*;import; import; import; import;Servlet實例2)繼承HttpServlet類
publicclassHelloWorldextendsHttpServlet
{
}Servlet實例3〕處理GET請求publicclassHelloWorldextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{ }}4〕doGet方法體內容response.setContentType("text/html");PrintWriterout=response.getWriter();out.println("<html>");out.println("<head>");out.println("<title>HelloWorld</title></head><body>");out.print("<h1>helloworld</h1>");out.println("</body>");out.print("</html>");Servlet實例5〕處理POST方法publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{ doGet(request,response); }Servlet實例Servlet實例配置Servlet由于客戶端是通過URL地址訪問web效勞器中的資源,所以Servlet程序假設想被外界訪問,必須把servlet程序映射到一個URL地址上,這個工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。<servlet>標簽用于聲明Servlet。其中的子標簽又包括:<servlet-name>標簽:用于聲明Servlet的名字,是web.xml中內部使用的名字。<servlet-class>標簽:用于聲明Servlet所對應的類名。<servlet-mapping>標簽用于進行Servlet映射。其中的子標簽又包括:<servlet-name>標簽:表示Servlet的名字,需要和上面<servlet>標簽的<servlet-name>子標簽中聲明的名字保持一致。<url-pattern>標簽:用于配置Servlet的訪問地址。注意:所有<servlet>標記必須出現在<servlet-mapping>標記的前面,因為<servlet>標記必須先注冊,然后才能進行路徑映射Servlet實例Servlet實例<servlet><servlet-name>Servlet名字</servlet-name><servlet-class>Servlet類的路徑</servlet=class></servlet><servlet-mapping><servlet-name>Servlet名字</servlet-name><url-pattern>Servlet映射路徑</url-pattern></servlet-mapping>Servlet實例HelloWorld程序配置web.xml
<servlet> <servlet-name>one</servlet-name> <servlet-class>first.HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>one</servlet-name> <url-pattern>/my</url-pattern> </servlet-mapping>Servlet實例調用Servlet在Tomcat效勞器下,Servlet放到應用程序的WEB-INF/classes目錄下://localhost:8080/Web應用名字/映射路徑Servlet技術MyEclipse中開發(fā)Servlet〔1〕在創(chuàng)立的myweb工程的src目錄上,右擊鼠標,選擇NewServlet。〔2〕在Name處輸入Servlet名字,如MyServlet,單擊Next按鈕。〔3〕在Servlet/JSPMappingURL處配置Servlet的mappingurl信息,如:/test/MyServlet。此處配置的mappingurl即為將來訪問Servlet時的地址格式。單擊Finish按鈕結束。Servlet注意細節(jié)1.一個<servlet>可以映射多個<servlet-mapping><servlet>
<servlet-name>hello</servlet-name>
<servlet-class>HelloServlet</servlet-class></servlet><servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/he</url-pattern></servlet-mapping><servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/he.asp</url-pattern></servlet-mapping>Servlet注意細節(jié)2.兩個初始化方法的比較publicvoidinit()throwsServletException如果不需要取得初始化參數的話使用此方法publicvoidinit(ServletConfigconfig)throwsServletExceptionServletConfig是Servlet的配置信息,是一個接口。可以取得初始化參數,通過web.xml中的<init-param>傳遞參數如果兩個init方法同時存在,那么優(yōu)先執(zhí)行帶參數的init方法,因為要取得初始化參數例:LifeCycleServlet注意細節(jié)3.Servlet在默認的情況下是在第一次運行的時候進行初始化操作,也可以通過配置參數,讓Servlet在容器啟動的時候就自動進行初始化操作。
<load-on-startup>1</load-on-startup>例:LifeCycle修改web.xml文件,重新開啟效勞器,觀察結果Servlet注意細節(jié)4.覆蓋service()方法doGet、doPost將不會被調用,因為所有的doXxx()方法都是通過service()調用并區(qū)分的.例:修改程序LifeCycle添加如下代碼:publicvoidservice(ServletRequestreq,ServletResponseres)throwsServletException,IOException{System.out.println("***service效勞***");}Servlet技術Ser
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026廣西龍州縣人民醫(yī)院緊缺型人才招聘5人筆試備考試題及答案解析
- 2026年廣東省茂名市單招職業(yè)適應性測試模擬測試卷附答案
- 2026年四川水利職業(yè)技術學院單招職業(yè)技能考試題庫附答案
- 2026年心理測試性格考試題庫及參考答案1套
- 2025廣西百色市右江區(qū)機關事業(yè)單位選調6人備考題庫附答案
- 2026廣東清遠市連山壯族瑤族自治縣太保鎮(zhèn)招聘公益性崗位1人筆試備考題庫及答案解析
- 2025年信陽光山縣淮南水利工程有限公司公開招聘工作人員2人參考題庫附答案
- 2025廣西北海市公共就業(yè)和人才服務中心招聘編外用工人員2人備考題庫附答案
- 2025年福建莆田市秀嶼區(qū)石南輪渡有限公司高級船員招聘15人備考題庫附答案
- 2025年安慶市公安機關公開招聘警務輔助人員418名備考題庫附答案
- 產線協同管理制度
- 災害應急響應路徑優(yōu)化-洞察及研究
- T/CAQI 96-2019產品質量鑒定程序規(guī)范總則
- 2025既有建筑改造利用消防設計審查指南
- 化學-湖南省永州市2024-2025學年高二上學期1月期末試題和答案
- 廣東省廣州市海珠區(qū)2024-2025學年九年級上學期期末考試英語試題(含答案)
- 脊髓血管解剖及脊髓血管疾病基礎
- 2025年貴安發(fā)展集團有限公司招聘筆試參考題庫含答案解析
- 語文-2025年1月廣西高三調研考全科試卷和答案(12地級市)
- GB/T 15972.40-2024光纖試驗方法規(guī)范第40部分:傳輸特性的測量方法和試驗程序衰減
- 陜西能源職業(yè)技術學院招聘筆試真題2023
評論
0/150
提交評論