編程課件與代碼筆記_第1頁
編程課件與代碼筆記_第2頁
編程課件與代碼筆記_第3頁
編程課件與代碼筆記_第4頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1 課程回顧Http 協(xié)議:http 協(xié)議: 對瀏覽器客戶端和服務(wù)器端之間數(shù)據(jù)傳輸?shù)母袷揭?guī)范。http 請求:瀏覽器-服務(wù)器端格式:請求行(請求方式(GET/T) 請求資源(URI) http 協(xié)議版本(http1.1)請求頭(鍵值對形式存在。 host、user-agent、referer)一個空行實體內(nèi)容(T 提交的參數(shù))HttpServletRequest 對象: 請求對象。獲取請求信息。請求行:request.getMethod()request.getRequestURI/getRequestURL()request.getProtocol();請求頭: request.getHea

2、der(name)request.getHeaderNames()實體內(nèi)容: request.getInputStream()獲取參數(shù)數(shù)據(jù):(GET 或T)request.getParameter(name)一個值的參數(shù) request.getParameterValues(name); 多個值的參數(shù) request.getParameterNames()所有參數(shù)3)http 響應(yīng): 服務(wù)器-瀏覽器端格式:響應(yīng)行(http 協(xié)議版本 狀態(tài)碼 描述)常用的狀態(tài)碼: 200302404500響應(yīng)頭( location(結(jié)合 302 狀態(tài)碼完成請求重定向功能)、refresh(定時刷新)、conte

3、nt-type、content-disiition(以一個空行實體內(nèi)容方式打開)HttpServletResponse 對象: 響應(yīng)對象。設(shè)置響應(yīng)信息。響應(yīng)行: response.setSus();響應(yīng)頭: response.setHeader(name,value)實體內(nèi)容:(PrWriter) response.getWriter().writer(); 字符內(nèi)容(OutputStream)response.getOutputStream().writer();字節(jié)內(nèi)容作業(yè):程序功能:添加聯(lián)系人修改聯(lián)系人刪除聯(lián)系人查詢所有聯(lián)系人要求:console 控制數(shù)據(jù)保存在 xml今天的目標(biāo): se

4、rvlet 編程第一天: 入門 第二天: http 協(xié)議第三天:如何寫 servlet 程序Servlet 學(xué)習(xí)的大綱:servlet 概念及相關(guān)接口簡介servet 執(zhí)行過程servlet 路徑缺省 servletservlet 生命周期(重點)Servlet 自動加載Servlet 線程安全servletConfig 對象Servlet 相關(guān)接口詳解ServletContext 對象-應(yīng)用-理解(重點)-知識點1 如何開發(fā)一個 Servlet1.1 步驟:1)編寫 java 類,繼承 HttpServlet 類2)重新 doGet 和 dot 方法Servlet 程序交給 tomcat 服

5、務(wù)器運行!servlet 程序的 class 碼拷貝到 WEB-INF/classes 目錄在 web.xml 文件中進行配置Servletgz.a_servlet.ServletServlet/問題:次 URL:前提: tomcat 服務(wù)器啟動時,首先加載 webapps 中的每個 web 應(yīng)用的 web.xml 配置文件。http:/: http 協(xié)議localhost: 到本地的 hosts 文件中查找是否存在該對應(yīng)的 IP 地址8080:/day10/找到 tomcat 服務(wù)器在 tomcat 的webapps 目錄下找 day10 的目錄資源名稱。1)在 day10 的 web.xm

6、l 中查找是否有匹配的 url-pattern 的內(nèi)容(/)2)如果找到匹配的 url-pattern,則使用當(dāng)前 servlet-name 的名稱到 web.xml 文件中查詢是否相同名稱的 servlet 配置3)如果找到,則取出對應(yīng)的 servlet 配置信息中的 servlet-class 內(nèi)容:字符串:gz.a_servlet.Servlet通過反射:a)構(gòu)造 b)然后調(diào)用Servlet 的對象Servlet 里面的方法2 Servlet 的路徑瀏覽器輸入url-pattern/精確匹配/demo1模糊匹配任意路徑任意路徑任意路徑.do/*/*.后綴名*.do*.action*.ht

7、ml(偽靜態(tài))注意:1)url-pattern 要么以 / 開頭,要么以*開頭。例如,是路徑路徑。不能同時使用兩種模糊匹配,例如 /*.do 是當(dāng)有輸入的 URL 有多個 servlet 同時被匹配的情況下:Servlet/精確匹配優(yōu)先。(長的最像優(yōu)先被匹配)以后綴名結(jié)尾的模糊 url-pattern 優(yōu)先級最低!3 servlet 缺省路徑servlet 的缺省路徑(/)是在 tomcat 服務(wù)器內(nèi)置的一個路徑。該路徑對應(yīng)的是一個 DefaultServlet(缺省 Servlet)。這個缺省的 Servlet 的作用是用于web 應(yīng)用的靜態(tài)資源文件。問題: URL 輸入如何文件?1)到當(dāng)前

8、 day10 應(yīng)用下的 web.xml 文件查找是否有匹配的 url-pattern。 2)如果沒有匹配的 url-pattern,則交給 tomcat 的內(nèi)置的 DefaultServlet 處理3)DefaultServlet 程序到 day10 應(yīng)用的根目錄下查找是存在一個名稱為 index.html 的靜態(tài)文件。4)如果找到該文件,則該文件內(nèi)容,返回給瀏覽器。5)如果找不到該文件,則返回 404 錯誤頁面。結(jié)論: 先找動態(tài)資源,再找靜態(tài)資源。4 Sevlet 的生命周期(重點)4.1 引入Servlet 的生命周期: servlet 類對象什么時候創(chuàng)建,什么時候調(diào)用什么方法,什么時候銷

9、毀。以前的對象: new Student(); stu.study();stu=null;Servlet 程序的生命周期由 tomcat 服務(wù)器控制的!4.2 Servlet 重要的四個生命周期方法構(gòu)造方法: 創(chuàng)建 servlet 對象的時候調(diào)用。默認(rèn)情況下,第一次servlet 的時候創(chuàng)建 servlet 對象只調(diào)用 1 次。證明 servlet 對象在 tomcat 是單實例的。init 方法: 創(chuàng)建完 servlet 對象的時候調(diào)用。只調(diào)用 1 次。service 方法: 每次發(fā)出請求時調(diào)用。調(diào)用 n 次。destroy 方法: 銷毀 servlet 對象的時候調(diào)用。停止服務(wù)器或者重新部

10、署 web 應(yīng)用時銷毀 servlet 對象。只調(diào)用 1 次。4.3 偽代碼演示 servlet 的生命周期Tomtcat代碼運行:1)通過找到到 servlet-class 的內(nèi)容,字符串: gz.a_servlet.Servlet2)通過反射構(gòu)造Servlet 對象得到字節(jié)碼對象Class clazz = class.forName(gz.調(diào)用無參數(shù)的構(gòu)造方法來構(gòu)造對象Object obj = clazz.newInstance(); 3)創(chuàng)建 ServletConfig 對象,通過反射調(diào)用 init 方法3.1 得到方法對象.a_servlet.Servlet);1.servlet 的構(gòu)

11、造方法被調(diào)用Method m = clazz.getDeclareMethod(init,ServletConfig.class);3.2 調(diào)用方法m.invoke(obj,config);-2.servlet 的 init 方法被調(diào)用創(chuàng)建 request,response 對象,通過反射調(diào)用 service 方法得到方法對象Methodmm=clazz.getDeclareMethod(service,HttpServletReq s);4.2 調(diào)用方法m.invoke(obj,request,response);lass,HttpServletResponse.clas-3.servlet

12、 的 service 方法被調(diào)用當(dāng) tomcat 服務(wù)器停止或 web 應(yīng)用重新部署,通過反射調(diào)用 destroy 方法得到方法對象Method m = clazz.getDeclareMethod(destroy,null);調(diào)用方法m.invoke(obj,null);-4.servlet 的 destroy 方法被調(diào)用4.4 用時序圖來演示 servlet 的生命周期改變 servlet 創(chuàng)建對象的時機: 提前到加載 web 應(yīng)用的時候!在 servlet 的配置信息中,加上一個即可!7 有參的 init 方法和無參的 init 方法8 Servlet 的多線程并發(fā)問題注意: servl

13、et 對象在 tomcat 服務(wù)器是單實例多線程的。因為 servlet 是多線程的,所以當(dāng)多個 servlet 的線程同時線程安全問題。了 servlet 的共享數(shù)據(jù),如成員變量,可能會解決辦法:把使用到共享數(shù)據(jù)的代碼塊進行同步(使用 synchronized 關(guān)鍵字進行同步)建議在 servlet 類中盡量不要使用成員變量。如果確實要使用成員,必須同步。而且盡量縮小同步代碼塊的范圍。(哪里使用到了成員變量,就同步哪里?。?,以避免因為同步而導(dǎo)致并發(fā)效率降低。Servlet 學(xué)習(xí):HttpServletRequest請求對象:獲取請求信息HttpServletResponse 響應(yīng)對象: 設(shè)置

14、響應(yīng)對象ServletConfig 對象servlet 配置對象ServletContext 對象; servlet 的上下文對象9 ServletConfig 對象9.1 作用ServletConfig 對象: 主要是用于加載 servlet 的初始化參數(shù)。在一個 web 應(yīng)用可以存在多個 ServletConfig對象(一個 Servlet 對應(yīng)一個 ServletConfig 對象)LifeDemogz.c_life.LifeDemo1 注意: 整數(shù)值越大,創(chuàng)建優(yōu)先級越低!9.2 對象創(chuàng)建和得到創(chuàng)建時機: 在創(chuàng)建完 servlet 對象之后,在調(diào)用 init 方法之前創(chuàng)建。得到對象: 直

15、接從有參數(shù)的 init 方法中得到!9.3 servlet 的初始化參數(shù)配置注意: servlet 的參數(shù)只能由當(dāng)前的這個 sevlet 獲取!ServletConfig 的 API:java.lang.String getInitParameter(java.lang.String name)根據(jù)參數(shù)名獲取參數(shù)值java.util.Enumeration getInitParameterNames()獲取所有參數(shù)得到 servlet 上下文對象得到 servlet 的名稱ServletContext getServletContext()java.lang.String getServlet

16、Name()10 ServletContext 對象10.1 引入ServletContext 對象 ,叫做 Servlet 的上下文對象。表示一個當(dāng)前的 web 應(yīng)用環(huán)境。一個 web 應(yīng)用中只有一個 ServletContext 對象。10.2 對象創(chuàng)建和得到創(chuàng)建時機:加載 web 應(yīng)用時創(chuàng)建 ServletContext 對象。得到對象: 從 ServletConfig 對象的 getServletContext 方法得到設(shè)計:創(chuàng)建 ServletConfig 對象ConfigDemogz.f_config.ConfigDemopathe:/b.txtpublic void init(

17、ServletConfig config,ServletContext context )多了一個參數(shù)得到 ServletConfig 對象得到 ServletContext 對象;Sun 公司設(shè)計1)創(chuàng)建 ServletContext 對象 ServletContextcontext = new ServletContext()2)創(chuàng)建 ServletConfig 對象ServetConfig config = new ServletConfig();config.setServletContxt(context);classServletConfigServletContext conte

18、xt;public ServletContext getServletContxt() return contxt;public void init( ServletConfig config )得到 ServletConfig 對象從 ServletConfig 對象中得到 ServletContext 對象SerlvetContext context = config.getServletContext();10.1 ServletContext 對象的API(作用)java.lang.String getContextPath()-得到當(dāng)前 web 應(yīng)用的路徑j(luò)ava.lang.Stri

19、ng getInitParameter(java.lang.String name)-得到 web 應(yīng)用的初始化參數(shù)java.util.Enumeration getInitParameterNames()void setribute(java.lang.String name, java.lang.Object object) -域?qū)ο笥嘘P(guān)的方法java.lang.Object getribute(java.lang.String name)void removeAttribute(java.lang.String name)RequestDispatcher getRequestDispa

20、tcher(java.lang.String path)-轉(zhuǎn)發(fā)(類似于重定向)-得到 web 應(yīng)用的資源文件java.lang.String getRealPath(java.lang.String path)java.io.InputStream getResourceAsStream(java.lang.String path)10.3 得到 web 應(yīng)用路徑j(luò)ava.lang.String getContextPath()用在請求重定向的資源名稱中10.4 得到 web 應(yīng)用的初始化參數(shù)(全局)java.lang.String getInitParameter(java.lang.Str

21、ing name)-得到 web 應(yīng)用的初始化參數(shù)java.util.Enumeration getInitParameterNames()web 應(yīng)用參數(shù)可以讓當(dāng)前 web 應(yīng)用的所有 servlet 獲??!10.5 域?qū)ο笥嘘P(guān)的方法域?qū)ο螅鹤饔檬怯糜诒4鏀?shù)據(jù),獲取數(shù)據(jù)??梢栽诓煌膭討B(tài)資源之間共享數(shù)據(jù)。案例:Servlet1name=ericServlet2response.sendRedirect(/Servlet2?name=eric)String request.getParameter(name);保存到域?qū)ο笾蠸tudent從域?qū)ο螳@取方案 1: 可以通過傳遞參數(shù)的形式,共享數(shù)據(jù)。局限:只能傳遞字符串類型。方案 2: 可以使用域?qū)ο蠊蚕頂?shù)據(jù),好處:可以共享任何類型的數(shù)據(jù)!ServletContext 就是一個域?qū)ο?!保存?shù)據(jù):void setribute(java.lang.String name, java.lang.Object object)獲取數(shù)據(jù): java.lang.Object getribute(java.lang.String name)刪除數(shù)據(jù): void removeAttribute(java

溫馨提示

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

最新文檔

評論

0/150

提交評論