版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
單元2購物網(wǎng)站訪問量統(tǒng)計模塊設計(JSP+Servlet)
Servlet是Java語言應用到Web服務器端的擴展技術,它的產(chǎn)生為JavaWeb應用開發(fā)奠定了基礎。 隨著Web開發(fā)技術的不斷發(fā)展,Servlet也在不斷發(fā)展與完善,并憑借其安全性、高效性、方便性和可移植性等諸多優(yōu)點,深受廣大Java程序員的青睞。
Servlet是JavaWeb服務器端可用于執(zhí)行的應用程序,是使用JavaServletAPI編寫的Java程序,Servlet要符合相應規(guī)范和接口才能在Servlet容器中運行,其運行需要Servlet容器的支持。 通常情況下,Servlet容器也就是指Web容器,如Tomcat、WebLogic等,它們對Servlet進行控制,當客戶端發(fā)送HTTP請求時,服務器加載Servlet對其進行處理并做出響應。 如果有多個客戶端同時請求同一個Servlet時,則會啟用多線程進行響應,為每一個請求分配一個線程,但提供服務的Servlet對象卻只有一個?!局R梳理】 1.Servlet的主要特點 ①Servlet是運行在Web服務器上的Java應用程序,與普通的Java應用程序不同的是,它位于Web服務器端,可以對瀏覽器或其他HTTP客戶端程序發(fā)送的請求進行處理并做出響應,將處理結(jié)果返回客戶端。
②Servlet采用Java語言編寫,繼承了Java語言的諸多優(yōu)點,同時還對Java的Web應用進行了擴展,它具有方便實用的API方法、高效的處理方式、跨平臺、可移植性好、更加靈活、安全性高等特點。 ③Servlet通過HttpServletRequest接口和HttpServletResponse接口對HTTP請求進 行處理及響應,可以在處理業(yè)務邏輯之后,將動態(tài)內(nèi)容返回并輸出到HTML頁面中, 與用戶請求進行交互。Servlet還提供了強 大的過濾器功能,可以針對請求類型進行 過濾設置,為Web應用開發(fā)提供靈活性與 擴展性。 2.Servlet與JSP的比較
Servlet是一種在服務器端運行的Java應用程序,它先于JSP產(chǎn)生。 在服務器端運行Servlet程序,處理客戶端請求,并輸出HTML格式的內(nèi)容,其執(zhí)行過程示意圖如圖2-1所示。圖2-1
Servlet程序執(zhí)行過程示意圖圖2-2
JSP頁面執(zhí)行過程示意圖 JSP雖然是在Servlet的基礎上產(chǎn)生的,是Servlet技術的擴展,但與Servlet也存在一定的區(qū)別,主要體現(xiàn)在以下幾個方面。 ①Servlet承擔客戶端請求與業(yè)務處理的中間角色,需要調(diào)用固定的方法,將動態(tài)程序代碼混合到靜態(tài)的HTML代碼中;而在JSP頁面,則可以直接使用HTML標簽進行輸出。 ②Servlet需要調(diào)用ServletAPI接口處理HTTP請求,而在JSP頁面中,則可以直接使用內(nèi)置對象進行處理。 ③Servlet的使用需要進行一定的配置,而JSP文件通過.jsp擴展名部署在容器中,容器對其自動識別,直接編譯成Servlet進行處理。 3.Servlet的生命周期
Servlet的生命周期就是Servlet從創(chuàng)建到銷毀的全過程,包括加載和實例化、初始化、處理請求和釋放占用資源4個階段。(1)加載和實例化(2)初始化(3)處理請求(4)釋放占用資源 4.Servlet處理的基本流程
Servlet主要運行在服務器端,并由服務器調(diào)用執(zhí)行以處理客戶端的請求,并做出響應。 一個Servlet就是一個Java類,更直接地說,Servlet是能夠使用print語句產(chǎn)生動態(tài)HTML內(nèi)容的Java類。
Servlet處理的基本流程如下所示。 ①客戶端(瀏覽器)通過HTTP提出請求。 ②Web服務器接收該請求并將其發(fā)送給Servlet,如果這個Servlet尚未被加載,Web服務器將把其加載到Java虛擬機并且執(zhí)行它。 ③Servlet程序?qū)⒔邮赵揌TTP請求并執(zhí)行某種處理。 ④Servlet會將處理后的結(jié)果向Web服務器返回應答。 ⑤Web服務器將從Servlet的應答發(fā)回給客戶端。 5.Servlet的基本代碼結(jié)構 在Java中,通常Servlet是指HttpServlet 對象,在聲明一個對象為Servlet時,需要繼 承HttpServlet類。
HttpServlet類是Servlet接口的一個實現(xiàn) 類,繼承此類后,可以重寫HttpServlet類中 的方法對HTTP請求進行處理。 6.Servlet接口和ServletConfig接口(1)Servlet接口 在Servlet編程時,ServletAPI提供了標準的接口與類,它們?yōu)镠TTP請求與程序響應提供了豐富的方法。
Servlet的運行需要Servlet容器的支持,Servlet容器調(diào)用Servlet對象的方法對請求進 行處理。 在Servlet應用程序開發(fā)中,一個Servlet 對象都要直接或間接地實現(xiàn)javax.servlet.Servlet接口,該接口中包含了5個方法,這些方法的原型及功能說明如表2-2所示。方法名稱方法原型功能說明init()publicvoidinit(ServletConfig
config)Servlet實例化后,Servlet容器調(diào)用init()方法完成初始化工作service()publicvoidservice(ServletRequestrequest,ServletResponseresponse)用于處理客戶端的請求destroy()publicvoiddestroy()當Servlet實例對象被銷毀時,Servlet容器調(diào)用destroy()釋放資源getServletConfig()publicServletConfig
getServletConfig()用于獲取Servlet對象的配置信息,返回ServletConfig對象getServletInfo()publicStringgetServletInfo()返回有關Servlet的信息,它是純文本格式的字符串表2-2
Servlet接口中的方法及功能說明(2)ServletConfig接口
ServletConfig接口位于javax.servlet包中,它封裝了Servlet的配置信息,在Servlet初始化期間被傳遞。 每一個Servlet只有一個ServletConfig對象,該對象定義了4個方法,分別是getInitParameter()、getInitParameterNames()、getServletContext()和getServletName()。 7.GenericServlet類和HttpServlet類(1)GenericServlet類 創(chuàng)建一個Servlet對象時,必須實現(xiàn)javax.servlet.Servlet接口,由于Servlet接口中包含了5個方法,所以創(chuàng)建Servlet對象時要實現(xiàn)這5個方法,這樣很不方便。
javax.servlet.GenericServlet類簡化了操作,實現(xiàn)了Servlet接口,其原型如下所示:publicabstractclassGenericServletextendsObjectimplementsServlet,ServletConfig,Serializable
(2)HttpServlet類
GenericServlet類雖然實現(xiàn)了javax.servlet.Servlet接口,為JavaWeb應用程序的開發(fā)提供 了方便。 但是在實際開發(fā)過程中,大多數(shù)的應用都是使用Servlet處理HTTP協(xié)議的請求,并對請求做出響應,所以通過繼承GenericServlet類仍然不是很方便。
javax.servlet.http.HttpServlet類繼承了GenericServlet類,并對GenericServlet類進行了擴展,為HTTP請求的處理提供了靈活的方法,可以很方便地對HTTP請求進行處理及響應。 其原型如下所示:publicabstractclassHttpServletextendsGenericServletimplementsSerializable 8.Servlet過濾器
Servlet過濾器是JavaWeb程序中的可重用組件,是客戶端與目標資源間的中間層組件,用于攔截客戶端的請求與響應信息。 當Web容器接收到一個客戶端請求時,將判斷此請求是否與過濾器對象相關聯(lián),如果相關聯(lián),則將這一請求交給過濾器進行處理。 在處理過程中,過濾器可以對請求進行操作,如更改請求中的信息數(shù)據(jù)。 在過濾器處理完成之后,再將進行其他業(yè)務處理。 當所有業(yè)務處理完成后,需要對客戶端進行響應時,容器又將響應交給過濾器進行處理,過濾器完成處理后才將響應發(fā)送到客戶端。
Servlet過濾器處理過程示意圖如圖 2-3所示。圖2-3
Servlet過濾器處理過程示意圖圖2-4多個Servlet過濾器處理過程示意圖 9.HttpServletRequest接口與HttpServletResponse 接口(1)HttpServletRequest接口
HttpServletRequest接口位于javax.servlet.http 包中,繼承了javax.servlet.ServletRequest接口, 是Servlet中的重要對象,在開發(fā)過程中較常用, 其常用方法主要有getContextPath()、getCookies()、getMethod()、getQueryString()、getRequestURL()、getServletPath、getSession()。(2)HttpServletResponse接口
HttpServletResponse接口位于javax.servlet.http包中,繼承了javax.servlet.ServletResponse接口,也是一個非常重要的對象,其常用方法主要有addCookie()、sendError()、sendRedirect()。 10.關于web.xml文件
Servlet作為一個組件,需要部署到Tomcat中才能正常運行。 因為所有的Servlet程序都以.class的形式存在的,所以必須在web.xml文件中進行Servlet程序的映射配置。 11.表單中action屬性的正確設置 在實際開發(fā)中,經(jīng)常會出現(xiàn)找不到Servlet而報的404錯誤,出現(xiàn)這種問題,是由于提交 后的路徑與web.xml文件中的配置路徑不一致造成的,可以在表單中將action屬性設置為“<%=request.GetContenPath()%>/Servlet類 名”。 在Eclipase中,如果JSP頁面位于文件夾WebContent的子文件夾中,則應將action屬性 設置為“<%=request.GetContenPath()%>/路徑/
Servlet類名”。 12.FilterAPI(1)Filter接口(2)FilterChain接口(3)FilterConfig接口【應用技巧】 本單元的應用技巧如下所示: ①Servlet對象的正確使用。 ②application對象的正確使用。 ③Servlet過濾器的正確使用。④Servlet監(jiān)聽器的正確使用。⑤文本文件的讀取與寫入方法?!经h(huán)境創(chuàng)設】 ①準備開發(fā)Web項目所需的圖片文件。 ②下載Servlet支持類庫servlet-api.jar。 ③在計算機的【資源管理器】中創(chuàng)建文件夾unit02。 ④啟動Eclipse,設置工作空間為unit02,然后進入Eclipse的開發(fā)環(huán)境。 ⑤在Eclipse集成開發(fā)環(huán)境中配置與啟動Tomcat服務器。 ⑥新建動態(tài)Web項目project02。 ⑦將文件servlet-api.jar拷貝到Web項目project02的文件夾“WebContent\WEB-INF\lib”下,并在Eclipse集成開發(fā)環(huán)境的 “項目資源管理器”刷新Web項目project02。 ⑧創(chuàng)建包package02?!救蝿彰枋觥俊救蝿?-1】應用Servlet對象實現(xiàn)網(wǎng)站訪問量的統(tǒng)計 創(chuàng)建Servlet類,在此類中重寫doGet()方法,通過ServletContex接口的對象實現(xiàn)網(wǎng)站訪問量的統(tǒng)計。【任務2-2】應用application對象實現(xiàn)網(wǎng)站訪問量的統(tǒng)計 application對象可以將信息保存在服務器,并且保存的信息在整個應用中都有效,直到服務器關閉。 應用application對象實現(xiàn)網(wǎng)站訪問量的統(tǒng)計?!救蝿?-3】應用Servlet過濾器實現(xiàn)網(wǎng)站訪問量的統(tǒng)計 創(chuàng)建實現(xiàn)Filter接口的類,在此類中重寫doFilter()方法,通過ServletContex接口的對象實現(xiàn)網(wǎng)站訪問量的統(tǒng)計。【任務2-4】應用Servlet監(jiān)聽器實現(xiàn)網(wǎng)站在線人數(shù)的統(tǒng)計
Servlet監(jiān)聽器主要功能是負責監(jiān)聽Web程序的各種操作,當相關的事件觸發(fā)之后將會產(chǎn)生事件,并對此事件進行處理。 在Web程序中可以對application、session和request3種操作進行監(jiān)聽。 針對session的監(jiān)聽器主要使用HttpSessionListener、HttpSessionAttributeListener和HttpSessionBindingListener 接口來實現(xiàn)。
HttpSessionListener接口主要用于對創(chuàng)建和銷毀session的操作進行監(jiān)聽,該接口定義的主要方法有sessionCreated()和sessionDestroyed()。 要求應用HttpSessionListener監(jiān)聽器實現(xiàn)網(wǎng)站在線人數(shù)的統(tǒng)計。
【任務2-5】應用JSP+Servlet技術實現(xiàn)網(wǎng)站訪問量的統(tǒng)計 當瀏覽者訪問網(wǎng)站時,首先從特定文件中讀取已有訪問量數(shù)據(jù),然后將當前網(wǎng)站的訪問量增加1,并使用數(shù)字圖片方式顯示網(wǎng)站的當前訪問量實現(xiàn)頁面的美化,接著將網(wǎng)站的最新訪問量寫入特定文件中。 另外,當瀏覽者刷新訪問頁面時,要求顯示的訪問量不會增加。【任務實施】【網(wǎng)頁結(jié)構設計】【網(wǎng)頁CSS設計】【靜態(tài)網(wǎng)頁設計】圖2-5網(wǎng)頁unit02.html的瀏覽效果【網(wǎng)頁功能實現(xiàn)】【任務2-1】應用Servlet對象實現(xiàn)網(wǎng)站訪問量的統(tǒng)計(1)創(chuàng)建CounterServlet2_1類(2)創(chuàng)建web.xml文件并對CounterServlet2_1類進行配置(3)創(chuàng)建JSP頁面task2-1.jsp(4)運行程序輸出結(jié)果圖2-6
JSP頁面task2-1.jsp的運行結(jié)果【任務2-2】應用applic
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東財經(jīng)大學《倉儲與配送管理實驗》2023-2024學年第一學期期末試卷
- 廣東財經(jīng)大學《基礎俄語三》2023-2024學年第一學期期末試卷
- 砂鍋菜培訓課件
- 贛西科技職業(yè)學院《互聯(lián)網(wǎng)發(fā)展歷程》2023-2024學年第一學期期末試卷
- 贛南醫(yī)學院《企業(yè)仿真綜合實驗》2023-2024學年第一學期期末試卷
- 贛南衛(wèi)生健康職業(yè)學院《固體廢物處理及利用課程設計》2023-2024學年第一學期期末試卷
- 甘肅中醫(yī)藥大學《國際貿(mào)易綜合實訓》2023-2024學年第一學期期末試卷
- 七年級道德與法治上冊第一單元成長的節(jié)拍第一課中學時代第2課時少年有夢教案新人教版
- 三年級科學下冊第一單元植物的生長變化第2課種植我們的植物教學材料教科版
- 九年級化學上冊第六單元碳和碳的氧化物課題3二氧化碳和一氧化碳第1課時二氧化碳導學案新版新人教版
- 閃耀明天 二聲部合唱簡譜
- 侵入性器械操作醫(yī)院感染預防與控制考試試題及答案
- 執(zhí)法中隊競聘演講稿
- 2023家居日用品市場洞察報告分析
- 國有企業(yè)員工守則
- 臨床合理用藥的持續(xù)改進措施
- 修理廠自查自糾報告 自查自糾報告
- 中學推優(yōu)入團方案
- CSR社會責任管理手冊模板
- 粉末涂料有限公司除塵系統(tǒng)安全風險分級清單
- 招投標專員績效考核表
評論
0/150
提交評論