




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java_Web應(yīng)用開發(fā)技術(shù)與案例教程課件第6-7章Java_Web應(yīng)用開發(fā)技術(shù)與案例教程課件第6-7章第6章 Servlet技術(shù)教學(xué)內(nèi)容 Servlet技術(shù)概述 Servlet常用對(duì)象及其方法 綜合案例基于Jsp+Servlet的用戶登錄驗(yàn)證 在Servlet中使用JavaBean Jsp與Servlet的數(shù)據(jù)共享 Jsp與Servlet的關(guān)聯(lián)關(guān)系 綜合案例基于JSP+Servlet+JavaBean實(shí)現(xiàn)復(fù)數(shù)運(yùn)算 綜合案例基于Jsp+Servlet+JavaBean實(shí)現(xiàn)用戶注冊(cè)、登錄驗(yàn)證教學(xué)目標(biāo) 掌握Servlet的設(shè)計(jì)以及與其他技術(shù)的整合應(yīng)用。第6章 Servlet技術(shù)教學(xué)內(nèi)容第1節(jié) Se
2、rvlet技術(shù)概述 Servlet是用Java語(yǔ)言編寫的服務(wù)器端程序,是由服務(wù)器端調(diào)用和執(zhí)行的、按照Servlet自身規(guī)范編寫的Java類。 Servlet可以處理客戶端傳來(lái)的HTTP請(qǐng)求,并返回一個(gè)響應(yīng)。 所以,設(shè)計(jì)Servlet,就是設(shè)計(jì)一個(gè)Java類,該類具有對(duì)客戶端傳來(lái)的HTTP請(qǐng)求進(jìn)行處理,并返回一個(gè)響應(yīng)的方法。 即:有如下兩個(gè)方法: public void doPost(HttpServletRequest request, HttpServletResponse response) public void doGet(HttpServletRequest request, Htt
3、pServletResponse response) 設(shè)計(jì)Servlet要在Servlet框架約束下進(jìn)行,并遵守其中所要求的規(guī)則。 Servlet框架是由javax.servlet和javax.servlet.http兩個(gè)Java包組成,它們提供了設(shè)計(jì)Servlet所需要的相關(guān)的接口和類。第1節(jié) Servlet技術(shù)概述 Servlet是用J1、Servlet編程所涉及到的有關(guān)接口與類功能類和接口Servlet實(shí)現(xiàn)javax.servlet.Servlet,javax.servlet.SingleThreadModel javax.servlet.GenericServlet,javax.ser
4、vlet.http.HttpServletServlet配置javax.servlet.ServletConfigServlet異常javax.servlet.ServletException,javax.servlet.UnavailableException請(qǐng)求和響應(yīng)javax.servlet.ServletRequest,javax.servlet.ServletResponsejavax.servlet.ServletInputStream,javax.servlet.ServletOutputStreamjavax.servlet.http.HttpServletRequest,ja
5、vax.servlet.http.HttpServletResponse會(huì)話跟蹤javax.servlet.http.HttpSession,javax.servlet.http.HttpSessionBindingListenerjavax.servlet.http.HttpSessionBindingEventServlet上下文javax.servlet.ServletContextServlet協(xié)作javax.servlet.RequestDispatcher其他javax.servlet.http.Cookie,javax.servlet.http.HttpUtils1、Servle
6、t編程所涉及到的有關(guān)接口與類功能類和接口Se2、Servlet的創(chuàng)建 在Servlet框架中,Servlet有著完備的規(guī)范,開發(fā)設(shè)計(jì)一個(gè)Servlet就是開發(fā)一個(gè)遵守規(guī)范中所規(guī)定的各種特征的Java類。 Servlet的規(guī)范由接口javax.servlet.Servlet給出, 并且由該接口給出了一實(shí)現(xiàn)類:javax.servlet.GenericServlet 又進(jìn)一步給出了javax.servlet.http.HttpServlet子類。所以,設(shè)計(jì)Servlet,可有三種方法實(shí)現(xiàn):(1)實(shí)現(xiàn)Servlet接口,創(chuàng)建Servlet 創(chuàng)建一個(gè)Servlet類,必須直接或者間接實(shí)現(xiàn)javax.s
7、ervlet.Servlet接口。(2)繼承GenericServlet,創(chuàng)建Servlet GenericServlet是Servlet接口的直接實(shí)現(xiàn)類。(3)繼承HttpServlet,創(chuàng)建Servlet 在開發(fā)Servlet時(shí),通常采用繼承“HttpServlet”子類實(shí)現(xiàn)。 本教材中(我們的教學(xué)中),所有的Servlet都是采用這種方式創(chuàng)建。 演示給出Servlet的創(chuàng)建過程演示,使用第3種方式創(chuàng)建2、Servlet的創(chuàng)建 在Servlet框架中,Se3、Servlet的基本結(jié)構(gòu)與配置方式 Servlet基本結(jié)構(gòu) 一個(gè)Servlet由于遵循所要求的規(guī)范,其結(jié)構(gòu)是固定的,Servlet程
8、序的基本結(jié)構(gòu): package ; /自定義的Servlet存放包名稱 import ; /需要導(dǎo)入的有關(guān)的類和包 WebServlet(description = 描述信息, urlPatterns = /映射url配置值 ) public class Servlet類名稱 extends HttpServlet public void doGet( HttpServletRequest request, HttpServletResponse response) /要實(shí)現(xiàn)的代碼 public void doPost(HttpServletRequest request, HttpServl
9、etResponse response) /要實(shí)現(xiàn)的代碼 說明:(1) Servlet類需要繼承類HttpServlet (2) Servlet的父類HttpServlet中包含了2個(gè)重要方法,根據(jù)需要重寫它們:doGet():當(dāng)請(qǐng)求類型是“get”時(shí),調(diào)用該方法。doPost():當(dāng)請(qǐng)求類型是“post”時(shí),調(diào)用該方法。3、Servlet的基本結(jié)構(gòu)與配置方式 Servlet基本結(jié)3、Servlet的基本結(jié)構(gòu)與配置方式 Servlet配置方式 Servlet需要配置,只有配置后才可以使用。 所謂配置就是將所創(chuàng)建的Servle類映射為一個(gè)可以直接訪問的URL地址。 配置Servlet有兩種方式:
10、 在Web配置文件web.xml配置稱為“配置文件配置”, 直接在Servlet程序源代碼中采用注釋配置稱為“注解配置”。 基于注解配置格式: package ; /自定義的Servlet存放包名稱 import ; /需要導(dǎo)入的有關(guān)的類和包 WebServlet(description = 描述信息, urlPatterns = /映射url配置值 ) public class Servlet類名稱 extends HttpServlet 對(duì)于采用配置文件配置,我們稍后給出。3、Servlet的基本結(jié)構(gòu)與配置方式 Servlet配置方4、Servlet創(chuàng)建案例1基于注解配置實(shí)現(xiàn)(在源代碼中配
11、置)Servlet建立步驟:Step1:建立Web工程Step2:建立Servlet,并基于注解方式給出配置在項(xiàng)目src下創(chuàng)建。重寫Servlet的doGet或doPost方法。Step3:部署并運(yùn)行Servlet(可直接運(yùn)行,可以其他程序調(diào)用執(zhí)行,jsp調(diào)用、還可以超鏈接執(zhí)行)案例【例6-1】首先創(chuàng)建一個(gè)Web工程,其工程名為:servletTest,然后再創(chuàng)建一個(gè)Servlet:HelloWorld.java,其功能是采用網(wǎng)頁(yè)的方式顯示“Hello World!” 假設(shè)訪問該Servlet的訪問地址為:“:8080/servletTest/aaa/a3”, 注意,在源代碼中給出的配置信息。
12、源代碼給出設(shè)計(jì)演示4、Servlet創(chuàng)建案例1基于注解配置實(shí)現(xiàn)(在源代碼中4、Servlet創(chuàng)建案例2基于配置文件實(shí)現(xiàn)(不再使用)Servlet建立步驟:Step1:建立Web工程(一定要選中創(chuàng)建web.xml選項(xiàng))Step2:建立Servlet在項(xiàng)目src下創(chuàng)建。重寫Servlet的doGet或doPost方法。修改web.xml配置文件,注冊(cè)所設(shè)計(jì)的Servlet。Step3:部署并運(yùn)行Servlet案例 【例6-1】首先創(chuàng)建一個(gè)Web工程,其工程名為:servletTest2,然后再創(chuàng)建一個(gè)Servlet:HelloWorld.java,其功能是采用網(wǎng)頁(yè)的方式顯示“Hello World
13、!” 假設(shè)訪問該Servlet的訪問地址為:“:8080/servletTest2/aaa/a3”, 注意,在源代碼中給出的配置信息。源代碼web.xml配置信息給出設(shè)計(jì)演示4、Servlet創(chuàng)建案例2基于配置文件實(shí)現(xiàn)(不再使用)5、關(guān)于Servlet注解配置的有關(guān)問題 采用注釋配置Servlet,是在Servlet類定義的上方直接使用注釋“WebServlet”將一個(gè)類聲明為Servlet。 該注解常用配置屬性見下表所示。屬性value或者urlPatterns是必需的,但二者不能共存,如果同時(shí)指定,通常是忽略value的取值屬性,其它屬性均為可選屬性。屬性名類型描述asyncSupport
14、edboolean聲明Servlet是否支持異步操作模式descriptionStringServlet的描述信息displayNameStringServlet的顯示名稱initParamsWeb initParamsServlet的初始化參數(shù)nameStringServlet的名稱urlPatternsString配置Servlet的訪問URL,可以同時(shí)配置多個(gè)不同的URLvalueString配置Servlet的訪問URL,可以同時(shí)配置多個(gè)不同的URL5、關(guān)于Servlet注解配置的有關(guān)問題 采用注釋配置注釋配置格式示例: WebServlet( displayName = This i
15、s Login Action, /描述 name = LoginAction, /Servlet名稱 urlPatterns = /請(qǐng)求url,可以配置多個(gè),用逗號(hào)間隔 /servlet/studentLoginAction, /test/teacherLoginAction, ) public class 類名稱 extends HttpServlet /類實(shí)現(xiàn)代碼在Eclipse中,默認(rèn)的配置格式為: WebServlet(/AA) public class AA extends HttpServlet WebServlet(/訪問url) 等價(jià)于 WebServlet(urlPatter
16、ns=/訪問url)給出修改配置的演示再給出多個(gè)配置設(shè)置的演示與運(yùn)行演示注釋配置格式示例:給出修改配置的演示第2節(jié) Servlet常用接口、類及其方法JSP內(nèi)置對(duì)象Servlet類或接口outjavax.servlet.http.HttpServletResponse例如:得到PrintWriter類并創(chuàng)建Servlet的out對(duì)象PrintWriter out1 = response.getWriter();requestjavax.servlet.http.HttpServletRequestresponsejavax.servlet.http.HttpServletResponseses
17、sionjavax.servlet.http.HttpSessionapplicationjavax.servlet.ServletContextconfigjavax.servlet.ServletConfigexceptionjavax.servlet.ServletException JSP內(nèi)置對(duì)象與Servlet類(接口)的關(guān)系第2節(jié) Servlet常用接口、類及其方法JSP內(nèi)置對(duì)象Se1javax.servlet.http.HttpServletRequest 類HttpServletRequest的對(duì)象對(duì)應(yīng)JSP的request對(duì)象,常用方法:void setCharacterEn
18、coding(): 設(shè)置請(qǐng)求信息字符編碼,常用于解決post方式下參數(shù)值漢字亂碼問題。String getParameter(String paraName):獲取單個(gè)參數(shù)值。String getParameterValues(String paraName): 獲取同名的參數(shù)的多個(gè)值。Object getAttribute(String attributeName): 獲取request范圍內(nèi)屬性的值。void setAttribute(String attributeName,Object object): 設(shè)置request范圍內(nèi)屬性的值。void removeAttribute(Str
19、ing attributeName): 刪除request范圍內(nèi)的屬性。1javax.servlet.http.HttpServl2javax.servlet.http.HttpServletResponse 類HttpServletResponse對(duì)象對(duì)應(yīng)JSP的response對(duì)象,常用方法:void response.setContentType(String contentType): 設(shè)置響應(yīng)信息類型。PrintWriter response.getWriter(): 獲得out對(duì)象。void sendRedirect(String url): 重定向。void setHeader(
20、String headerName,String headerValue) 設(shè)置http頭信息值。2javax.servlet.http.HttpServl3javax.servlet.http.HttpSession 類HttpSession的對(duì)象對(duì)應(yīng)JSP的session對(duì)象,但在Servlet中,該對(duì)象需要由request.getSession()方法獲得。常用方法:HttpSession request.getSession():獲取session對(duì)象。long getCreationTime():獲得session創(chuàng)建時(shí)間。String getId():獲得session id。vo
21、id setMaxInactiveInterval():設(shè)置最大session不活動(dòng)間隔(失效時(shí)間),以秒為單位。boolean isNew():判斷是否是新的會(huì)話,是返回true,不是返回false。void invalidate():清除session對(duì)象,使session失效。object getAttribute(String attributeName):獲取session范圍內(nèi)屬性的值。void setAttribute(String attributeName,Object object):設(shè)置session范圍內(nèi)屬性的值。void removeAttribute(String
22、attributeName):刪除session范圍內(nèi)的屬性。3javax.servlet.http.HttpSessi4. javax.servlet.ServletContext 類ServletContext的對(duì)象對(duì)應(yīng)JSP的application對(duì)象,但在Servlet中,該對(duì)象需要由this.getServletContext()方法獲得。常用方法:ServletContext this.getServletContext(): 獲得ServletContext對(duì)象。object getAttribute(String attributeName): 獲取應(yīng)用范圍內(nèi)屬性的值。void
23、 setAttribute(String attributeName,Object object): 設(shè)置應(yīng)用范圍內(nèi)屬性的值。void removeAttribute(String attributeName): 刪除應(yīng)用范圍內(nèi)的屬性。4. javax.servlet.ServletContex第3節(jié) 綜合案例基于Jsp+Servlet的用戶登錄驗(yàn)證【例6-2】實(shí)現(xiàn)一個(gè)簡(jiǎn)單的用戶登錄驗(yàn)證程序,如果用戶名是abc,密碼是123,則顯示歡迎用戶的信息,否則顯示“用戶名或密碼不正確”。【分析】 該案例采用JSP頁(yè)面只完成提交信息和驗(yàn)證結(jié)果的顯示,而驗(yàn)證過程由Servlet完成,這些組件通過reque
24、st(或HttpServletRequest)對(duì)象實(shí)現(xiàn)數(shù)據(jù)共享。 由提交頁(yè)面將數(shù)據(jù)傳遞給Servlet,而Servlet獲取數(shù)據(jù)并實(shí)現(xiàn)驗(yàn)證,根據(jù)驗(yàn)證結(jié)果,轉(zhuǎn)向顯示驗(yàn)證結(jié)果的頁(yè)面。第3節(jié) 綜合案例基于Jsp+Servlet的用戶登錄驗(yàn)【設(shè)計(jì)】根據(jù)分析,該系統(tǒng)需要設(shè)計(jì)3個(gè)組件構(gòu)成(采用注解配置方式配置Servlet)。(1)登錄表單頁(yè)面:login.jsp。(2)處理登錄請(qǐng)求并實(shí)現(xiàn)驗(yàn)證的Servlet:LoginCheckServlet.java。(3)顯示提示的頁(yè)面:info.jsp。 假設(shè),組件之間共享數(shù)據(jù)的參數(shù)為:username(用戶名稱)和userpwd(密碼)?!緦?shí)現(xiàn)】(1)登錄頁(yè)面l
25、ogin.jsp(2)處理登錄的Servlet:LoginCheckServlet.java(3)顯示結(jié)果的頁(yè)面Info.jsp【運(yùn)行】程序執(zhí)行【設(shè)計(jì)】回顧上次課介紹的內(nèi)容1、如何創(chuàng)建Servlet? 一般在創(chuàng)建時(shí),直接采用注解方式,配置servlet_形成訪問地址,利用該地址,對(duì)servlet 運(yùn)行2、重寫 doGet(參數(shù):請(qǐng)求,相應(yīng)參數(shù)) doPost(參數(shù))3、部署4、運(yùn)行利用該地址,對(duì)servlet 運(yùn)行5、給出了設(shè)計(jì)案例6、到底如何使用servlet_采用MVC模式2個(gè)案例回顧上次課介紹的內(nèi)容1、如何創(chuàng)建Servlet?第4節(jié) Jsp與Servlet的關(guān)聯(lián)關(guān)系 JSP和Servle
26、t都是在服務(wù)器端執(zhí)行的組件,兩者之間可以互相調(diào)用。 JSP可以調(diào)用Servlet,Servlet也可以調(diào)用JSP;同時(shí),一個(gè)JSP可以調(diào)用另一個(gè)JSP,一個(gè)Servle也可以調(diào)用另一個(gè)Servlet。但它們的調(diào)用格式是不同的。JSP頁(yè)面調(diào)用ServletServlet跳轉(zhuǎn)到JSP頁(yè)面Servlet調(diào)用另一個(gè)ServletJSP跳轉(zhuǎn)到另一個(gè)JSP可以超鏈接調(diào)用JSP,或者Serevlet第4節(jié) Jsp與Servlet的關(guān)聯(lián)關(guān)系 JSP和Se1、JSP頁(yè)面調(diào)用Servlet在JSP頁(yè)面中,通常通過提交表單和超鏈接兩種方式訪問Servlet。(1)通過表單提交調(diào)用Servlet 在JSP頁(yè)面中設(shè)計(jì)表
27、單,將表單提交給一個(gè)Servlet去處理,其調(diào)用格式: 提示:這里的訪問地址是配置的地址。(2)通過超鏈接調(diào)用Servlet 在JSP網(wǎng)頁(yè)中,也可以采用超鏈接調(diào)用Servlet,并且也可以給Servlet傳遞參數(shù),其調(diào)用格式: 提示信息或 提示信息1、JSP頁(yè)面調(diào)用Servlet在JSP頁(yè)面中,通常通過提交2. Servlet跳轉(zhuǎn)到JSP頁(yè)面Servlet調(diào)用JSP,由兩種方式:轉(zhuǎn)向和重定向。轉(zhuǎn)向: 是在一個(gè)Web工程內(nèi)部,各組件之間的調(diào)用,在調(diào)用時(shí),request對(duì)象中的信息不丟失(request對(duì)象不消亡),進(jìn)入另一個(gè)組件后,request對(duì)象中的數(shù)據(jù)可以在新組件中繼續(xù)使用。 Reques
28、tDispatcher rd=request.getRequestDispatcher(jsp網(wǎng)頁(yè)) rd.forward(request,response);重定向: 可以在一個(gè)Web工程內(nèi)部,各組件之間實(shí)現(xiàn)調(diào)用,也可以直接跳轉(zhuǎn)到其他Web工程的JSP頁(yè)面。并且,在跳轉(zhuǎn)到新組件后,重新創(chuàng)建request對(duì)象。 response.sendRedirect(JSP網(wǎng)頁(yè)地址);2. Servlet跳轉(zhuǎn)到JSP頁(yè)面Servlet調(diào)用JSP3. Servlet調(diào)用另一個(gè)Servlet 一個(gè)Servle調(diào)用另一個(gè)Servlet,其調(diào)用格式同Servlet調(diào)用JSP,只是將JSP網(wǎng)頁(yè)地址更換為Servle
29、t映射地址即可。3. Servlet調(diào)用另一個(gè)Servlet 一個(gè)Se4、JSP跳轉(zhuǎn)到另一個(gè)JSP 一個(gè)JSP跳轉(zhuǎn)到另一個(gè)JSP,其跳轉(zhuǎn)方法在地3章中已經(jīng)詳細(xì)介紹,請(qǐng)參考第3章中的有關(guān)內(nèi)容。各組件(JSP之間、Servlet之間、JSP與Servlet之間)之間的如何關(guān)聯(lián)? 設(shè)計(jì)不同的組件,然后將很多不同組件關(guān)聯(lián)在一起。形成web程序這就是web程序的設(shè)計(jì)思想和設(shè)計(jì)方法:必須有想法!不同的組件,完成不同的功能分工協(xié)作!JSP_輸入數(shù)據(jù)和顯示數(shù)據(jù)(至少2個(gè)網(wǎng)頁(yè))視圖VJavaBean完成業(yè)務(wù)處理模型(算法)_MServlet實(shí)現(xiàn)具體的工作(需要數(shù)據(jù)jsp提供,調(diào)用算法Javabena方法,顯示結(jié)
30、果轉(zhuǎn)移到顯示網(wǎng)頁(yè)jsp)_CMVC_分工協(xié)作4、JSP跳轉(zhuǎn)到另一個(gè)JSP 一個(gè)JSP跳轉(zhuǎn)到另一個(gè) 第5節(jié) MVC開發(fā)模式與應(yīng)用案例 在開發(fā)一個(gè)Web應(yīng)用程序時(shí),通常需要同時(shí)使用這3種技術(shù),并分別承擔(dān)不同的職責(zé)。 JSP一般用來(lái)編寫用戶界面層的信息顯示,充當(dāng)視圖層的角色(簡(jiǎn)稱為V); Servlet主要用來(lái)扮演任務(wù)的執(zhí)行者,一般充當(dāng)著控制層的角色(簡(jiǎn)稱為C); JavaBean主要實(shí)現(xiàn)業(yè)務(wù)邏輯的處理,充當(dāng)模型層的角色(簡(jiǎn)稱為M)。 實(shí)現(xiàn)了不同組件的功能分工協(xié)作,將一個(gè)系統(tǒng)的功能分為3種不同類型的組件,這種模式常稱為MVC模式。 本節(jié)給出兩個(gè)設(shè)計(jì)案例,整合應(yīng)用JSP、JavaBean、Servle
31、t三種技術(shù)。 第5節(jié) MVC開發(fā)模式與應(yīng)用案例 在開發(fā)一個(gè)Web 【例6-3】設(shè)計(jì)程序完成復(fù)數(shù)運(yùn)算,用戶在頁(yè)面上輸入兩個(gè)復(fù)數(shù)的實(shí)部和虛部,并選擇運(yùn)算類型,程序完成復(fù)數(shù)的指定運(yùn)算。運(yùn)行界面如圖所示。 第5節(jié) MVC開發(fā)模式與應(yīng)用案例 【例6-3】設(shè)計(jì)程序完成復(fù)數(shù)運(yùn)算,用戶在頁(yè)面上輸入兩個(gè)【分析】 該案例使用JSP、Servlet、JavaBean三種技術(shù)集成,實(shí)現(xiàn)系統(tǒng)的設(shè)計(jì),JSP主要完成信息的提交和顯示;Servlet主要完成對(duì)請(qǐng)求數(shù)據(jù)的獲取與處理;JavaBean主要用于業(yè)務(wù)處理并實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)。【設(shè)計(jì)】關(guān)鍵是理解數(shù)據(jù)處理與傳遞(傳給誰(shuí)?)4個(gè)組件 該程序需要設(shè)計(jì):(1)輸入表單頁(yè)面inpu
32、t.jsp:將該頁(yè)面的請(qǐng)求參數(shù)信息,傳給Servlet。(2)接收運(yùn)算請(qǐng)求的Servlet,CaculateServlet.java:該Servlet接受input.jsp的請(qǐng)求信息,并創(chuàng)建JavaBean對(duì)象實(shí)例,然后調(diào)用JavaBean的業(yè)務(wù)處理方法,完成業(yè)務(wù)處理,形成新的結(jié)果,并將結(jié)果在request范圍內(nèi)實(shí)現(xiàn)屬性數(shù)據(jù)共享,然后轉(zhuǎn)向輸出信息頁(yè)面output.jsp。(3)封裝復(fù)數(shù)運(yùn)算的JavaBean,Complex.java:該JavaBean有2個(gè)屬性,并有完成加、減、乘、除的4種業(yè)務(wù)方法。(4)顯示結(jié)果的頁(yè)面output.jsp:接受Servlet傳遞的共享數(shù)據(jù),并顯示。【分析】【
33、實(shí)現(xiàn)】(1)首先編寫復(fù)數(shù)類JavaBean:Complex.java 計(jì)算模型(公式)不需要實(shí)際數(shù)據(jù)(變量-屬性)(2)提交信息的頁(yè)面input.jsp,在該頁(yè)面內(nèi)需要提交5個(gè)參數(shù)(3)實(shí)現(xiàn)控制的Servlet:CaculateServlet.java(4)顯示計(jì)算結(jié)果的頁(yè)面:output.jsp【運(yùn)行】執(zhí)行程序【實(shí)現(xiàn)】 【例6-4】基于JSP+Servlet+JavaBean實(shí)現(xiàn)用戶注冊(cè)與登錄功能。 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的用戶注冊(cè)。通過注冊(cè)頁(yè)面提交注冊(cè)信息,若數(shù)據(jù)庫(kù)中已經(jīng)存在該用戶名,給出提出,重新進(jìn)入注冊(cè)頁(yè)面,當(dāng)與數(shù)據(jù)庫(kù)中已有的用戶不重復(fù)時(shí),寫入數(shù)據(jù)庫(kù)(實(shí)現(xiàn)注冊(cè))。 同時(shí),實(shí)現(xiàn)用戶的登錄。假設(shè),要
34、注冊(cè)的用戶信息,只有用戶名和密碼。分析與設(shè)計(jì):兩個(gè)模塊:注冊(cè)、登錄每個(gè)功能 MVC: 主頁(yè)面顯示登錄、注冊(cè)兩個(gè)選項(xiàng) 公共模型:用戶模型(包括哪些方法) 注冊(cè):至少5個(gè)(輸入、寫入數(shù)據(jù)庫(kù)-Servlet、提示成功、不成功) 登錄:至少5個(gè)(輸入、查詢驗(yàn)證數(shù)據(jù)庫(kù)-Servlet、提示成功、不成功) 第5節(jié) MVC開發(fā)模式與應(yīng)用案例 【例6-4】基于JSP+Servlet+JavaBea【分析】 假設(shè)操作的數(shù)據(jù)庫(kù)名是java_web_ch06_db,數(shù)據(jù)表是user_b,其中的字段:id(主鍵,整型,自動(dòng)增加該字段)、username(用戶名,字符串類型)、userpassword(密碼、字符串類型
35、)。 由于要對(duì)數(shù)據(jù)庫(kù)訪問,所以需要設(shè)計(jì)連接數(shù)據(jù)庫(kù)的工具類JdbcUtil.java以及訪問數(shù)據(jù)庫(kù)的DAO類(該設(shè)計(jì)思想在第5章中已經(jīng)介紹)UserDao.java,該類封裝的基本操作是記錄的添加、查詢?nèi)俊?該案例采用JSP頁(yè)面只完成提交注冊(cè)信息(a.jsp)和驗(yàn)證結(jié)果的顯示(b.jsp), 而驗(yàn)證過程由Servlet(YanZheng.java)調(diào)用模型類User.java完成,這些組件通過JSP的內(nèi)置對(duì)象request(或HttpServletRequest創(chuàng)建的對(duì)象)實(shí)現(xiàn)數(shù)據(jù)共享。 由提交頁(yè)面將數(shù)據(jù)傳遞給Servlet,而Servlet獲取數(shù)據(jù)并實(shí)現(xiàn)驗(yàn)證,根據(jù)驗(yàn)證結(jié)果,轉(zhuǎn)向顯示驗(yàn)證結(jié)果的
36、頁(yè)面?!痉治觥俊驹O(shè)計(jì)】該案例需要設(shè)計(jì)以下組件:(1)數(shù)據(jù)庫(kù)java_web_ch06_db及其數(shù)據(jù)庫(kù)表user_b。(2)建立一個(gè)獲取連接和釋放資源的工具類JdbcUtil.java。(3)建立類User.java實(shí)現(xiàn)記錄信息對(duì)象化,體現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)思想,基于對(duì)象實(shí)現(xiàn)對(duì)數(shù)據(jù)表信息的操作。(4)在上面步驟的基礎(chǔ)上建立類UserDao.java封裝基本的數(shù)據(jù)庫(kù)操作:向數(shù)據(jù)庫(kù)中添加用戶記錄的方法:public void add(User user)查詢?nèi)坑脩舻姆椒ǎ簆ublic List QueryAll()(5)提交注冊(cè)信息頁(yè)面a.jsp。(6)成功注冊(cè)結(jié)果的顯示頁(yè)面b.jsp(7)驗(yàn)證要注
37、冊(cè)的信息與數(shù)據(jù)庫(kù)已有的用戶是否存在沖突的Servlet類YanZheng.java。對(duì)于登錄功能,其實(shí)現(xiàn)過程類似!【實(shí)現(xiàn)】【設(shè)計(jì)】該案例需要設(shè)計(jì)以下組件:本章小結(jié) 介紹了Java Web程序重要組件Servlet的設(shè)計(jì)與使用。介紹了Servlet的工作原理、編程接口、基本結(jié)構(gòu)、信息配置及部署和運(yùn)行等知識(shí); 最后闡述了JSP與Servlet、以及Servlet和JavaBean的關(guān)系并通過兩個(gè)實(shí)例說明它們?nèi)绾谓Y(jié)合起來(lái)使用。本章小結(jié) 介紹了Java Web程序重要組件Se第6章實(shí)驗(yàn)與作業(yè)1. 設(shè)計(jì)一個(gè)Web應(yīng)用程序,當(dāng)用戶在提交頁(yè)面上輸入圓的半徑,提交后顯示出圓的周長(zhǎng)和面積。要求:(1)使用Ser
38、vlet,獲取提交的信息,并計(jì)算求值,求值后跳轉(zhuǎn)到顯示結(jié)果頁(yè)面。(2)使用例5-1的JavaBean類,并由Servlet,獲取提交的信息,并計(jì)算求值,求值后跳轉(zhuǎn)到顯示結(jié)果頁(yè)面。2設(shè)計(jì)一個(gè)注冊(cè)頁(yè)面register.jsp,用戶填寫的信息包括:姓名、性別、出生年月、民族、個(gè)人介紹等,用戶點(diǎn)擊注冊(cè)后將注冊(cè)信息通過output.jsp顯示出來(lái)。 要求,使用Servlet獲取提交的信息,然后跳轉(zhuǎn)到顯示結(jié)果頁(yè)面。第6章實(shí)驗(yàn)與作業(yè)1. 設(shè)計(jì)一個(gè)Web應(yīng)用程序,當(dāng)用戶在提第7章 Java Web常用開發(fā)模式與案例教學(xué)目的: JavaWeb應(yīng)用程序是由多個(gè)組件構(gòu)成的,每種組件都分別承擔(dān)不同的任務(wù)。 通過本章的
39、學(xué)習(xí),應(yīng)達(dá)到如下目標(biāo): (1)熟悉并掌握在開發(fā)web應(yīng)用程序時(shí),根據(jù)項(xiàng)目的實(shí)際需要,選擇相應(yīng)的組件,構(gòu)建該項(xiàng)目的應(yīng)用框架,并實(shí)現(xiàn)不同組件之間的數(shù)據(jù)傳遞。 (2)對(duì)于一個(gè)Web應(yīng)用項(xiàng)目一般采用軟件工程的思想方法開發(fā),熟悉并掌握軟件項(xiàng)目開發(fā)的分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試等相關(guān)的開發(fā)過程。教學(xué)內(nèi)容: 掌握不同的開發(fā)方案:?jiǎn)渭兊腏SP頁(yè)面編程(只使用JSP技術(shù)、HTML、CSS 、JavaScript)JSP+JavaBean設(shè)計(jì)模式:JSP+Servlet設(shè)計(jì)模式JSP+Servlet+JavaBean設(shè)計(jì)模式DAO設(shè)計(jì)模式與數(shù)據(jù)庫(kù)訪問:JSP+Servlet+JavaBean+JDBC+DAO+MySQ
40、L+MVC+Java第7章 Java Web常用開發(fā)模式與案例教學(xué)目的:第0節(jié) 回顧前幾章所介紹的開發(fā)技術(shù)與應(yīng)用1、靜態(tài)網(wǎng)頁(yè)開發(fā)技術(shù)(三種技術(shù)的整合應(yīng)用) HTML+CSS+JavaScript2、動(dòng)態(tài)網(wǎng)頁(yè)開發(fā)技術(shù),JSP技術(shù)(靜態(tài)網(wǎng)頁(yè)開發(fā)技術(shù)與JSP技術(shù)結(jié)合: HTML+CSS+JavaScript+JSP3、數(shù)據(jù)庫(kù)訪問技術(shù)(基于Java語(yǔ)言) Java+JDBC+MySQL 若采用網(wǎng)頁(yè)方式實(shí)現(xiàn)數(shù)據(jù)的輸入與顯示,則需要的技術(shù): HTML+CSS+JavaScript+JSP+Java+JDBC+MySQL 4、JavaBean技術(shù):業(yè)務(wù)處理模塊(計(jì)算模型類的設(shè)計(jì))5、Servlet技術(shù):控制
41、器(協(xié)調(diào)各部分之間的數(shù)據(jù)傳遞與處理)6、MVC開發(fā)模式:JSP+Servlet+JavaBean設(shè)計(jì)模式7、DAO開發(fā)模式:SP+Servlet+JavaBean+JDBC+DAO+MySQL第0節(jié) 回顧前幾章所介紹的開發(fā)技術(shù)與應(yīng)用1、靜態(tài)網(wǎng)頁(yè)開發(fā)教學(xué)方法與學(xué)習(xí)方法 本章以案例為基礎(chǔ),將Web程序開發(fā)的相關(guān)開發(fā)思想、開發(fā)方法、開發(fā)技術(shù)溶于案例中。 通過案例給出軟件開發(fā)的分析、設(shè)計(jì)、實(shí)現(xiàn)等過程,從而加深對(duì)相關(guān)技術(shù)的理解與應(yīng)用。 在教學(xué)過程中,重點(diǎn)給出設(shè)計(jì)思想,所使用的技術(shù)以及各組件之間的關(guān)系,給出分析、設(shè)計(jì)的關(guān)鍵。 在學(xué)習(xí)過程中,重點(diǎn)理解軟件的設(shè)計(jì)思想、應(yīng)該采用的技術(shù)、軟件開發(fā)的過程,軟件組件以
42、及組件之間的關(guān)系,特別時(shí)組件之間數(shù)據(jù)的傳遞與數(shù)據(jù)共享。 提示: 本章的教學(xué)課件重點(diǎn)給出的設(shè)計(jì)思想、開發(fā)關(guān)鍵,對(duì)于源代碼和運(yùn)行演示通過超鏈接給出。 對(duì)于運(yùn)行演示,將該章提供的程序直接復(fù)制到web服務(wù)器,并啟動(dòng)服務(wù)器即可。教學(xué)方法與學(xué)習(xí)方法 本章以案例為基礎(chǔ),將Web程序開第1節(jié) Java Web常用開發(fā)模式介紹 目前一般Java Web應(yīng)用程序,都是基于B/S(瀏覽器/服務(wù)器)架構(gòu)的,而Java Web應(yīng)用程序的開發(fā)方法主要經(jīng)歷了JSP的Model 1、JSP的Model 2和MVC,其中MVC模式是目前使用最廣泛的開發(fā)模式。 主要介紹Java Web應(yīng)用程序開發(fā)常采用的開發(fā)模式: 單純的JSP
43、頁(yè)面編程 JSP+JavaBean設(shè)計(jì)模式 JSP+Servlet設(shè)計(jì)模式 JSP+Servlet+JavaBean設(shè)計(jì)模式 MVC設(shè)計(jì)模式 DAO設(shè)計(jì)模式與數(shù)據(jù)庫(kù)訪問。第1節(jié) Java Web常用開發(fā)模式介紹 目前一般J1、單純的JSP頁(yè)面開發(fā)模式 在Java Web開發(fā)中最簡(jiǎn)單的一種開發(fā)模式是通過應(yīng)用JSP中的腳本標(biāo)記,直接在JSP頁(yè)面中實(shí)現(xiàn)各種功能,稱為“單純的JSP頁(yè)面編程模式”。 單純的JSP頁(yè)面編程模式就是只用JSP技術(shù)設(shè)計(jì)Web應(yīng)用程序,對(duì)于含有數(shù)據(jù)庫(kù)操作的Web程序是JSP+JDBC相結(jié)合的技術(shù)。 應(yīng)用系統(tǒng)的框架結(jié)構(gòu)如圖所示。1、單純的JSP頁(yè)面開發(fā)模式 在Java Web開發(fā)
44、2、JSP+JavaBean開發(fā)模式 在開發(fā)Java Web應(yīng)用時(shí),將JSP和JavaBean結(jié)合起來(lái),形成了JSP+JavaBean設(shè)計(jì)模式,也稱為JSP Model-1模式。 JSP+JavaBean編程模式是JSP程序開發(fā)經(jīng)典設(shè)計(jì)模式之一,其體系結(jié)構(gòu)如圖所示。 采用這種體系結(jié)構(gòu),將要進(jìn)行的業(yè)務(wù)邏輯封裝到JavaBean中,在JSP頁(yè)面中通過動(dòng)作標(biāo)簽來(lái)調(diào)用這個(gè)JavaBean類,從而執(zhí)行這個(gè)業(yè)務(wù)邏輯。此時(shí)的JSP除了負(fù)責(zé)部分流程的控制外,大部分用來(lái)進(jìn)行頁(yè)面的顯示,而JavaBean則負(fù)責(zé)業(yè)務(wù)邏輯的處理。 在JSP+JavaBean編程模式中,JavaBean提供了業(yè)務(wù)處理,而JSP卻具有兩
45、種職責(zé):調(diào)用執(zhí)行業(yè)務(wù)邏輯并負(fù)責(zé)流程的控制;信息的顯示和提交。2、JSP+JavaBean開發(fā)模式 在開發(fā)Java 3、JSP+Servlet開發(fā)模式 在JSP+JavaBean編程模式中,JavaBean提供了業(yè)務(wù)處理,而JSP卻具有兩種職責(zé):調(diào)用執(zhí)行業(yè)務(wù)邏輯并負(fù)責(zé)流程的控制;信息的顯示和提交。 現(xiàn)將JSP的兩職責(zé)獨(dú)立,讓JSP只負(fù)責(zé)數(shù)據(jù)的輸入(提交請(qǐng)求)和輸出(顯示請(qǐng)求結(jié)果),而業(yè)務(wù)邏輯和流程的控制Servlet完成,從而形成JSP+Servlet編程模式。 在SP+Servlet編程模式,JSP只負(fù)責(zé)信息的顯示,而業(yè)務(wù)邏輯處理及其流程控制由Servlet實(shí)現(xiàn),其體系結(jié)構(gòu)和流程如圖所示。其處
46、理流程是:(1)客戶端在JSP頁(yè)面中,通過表單提交數(shù)據(jù)后,進(jìn)入指定的Servlet;(2)在Servlet中獲取提交的信息,進(jìn)行業(yè)務(wù)邏輯處理,當(dāng)處理完成后轉(zhuǎn)向到(或重定位)新的JSP頁(yè)面或新的Servlet;(3)新的JSP頁(yè)面(或新的Servlet)實(shí)現(xiàn)信息顯示或繼續(xù)處理信息。3、JSP+Servlet開發(fā)模式 在JSP+Jav4、 JSP+Servlet+JavaBean開發(fā)模式 將JSP+Servlet模式與JSP+JavaBean模式相結(jié)合,將業(yè)務(wù)邏輯處理有JavaBean實(shí)現(xiàn),將控制邏輯由Servlet實(shí)現(xiàn),而JSP只完成頁(yè)面的顯示, 從而,形成JSP+Servlet+JavaBea
47、n編程模式,該模式常稱為JSP的Model-2設(shè)計(jì)模式。該模式吸取了JSP+Servlet與JSP+JavaBean兩種模式各自的突出優(yōu)點(diǎn)結(jié)合而成,完全實(shí)現(xiàn)了不同組件的功能分工協(xié)作,其體系結(jié)構(gòu)如圖所示。 用JSP技術(shù)實(shí)現(xiàn)信息的提交和顯示(V), 用Servlet技術(shù)實(shí)現(xiàn)控制邏輯(C), 用JavaBean技術(shù)實(shí)現(xiàn)業(yè)務(wù)邏輯處理(M)。 將一個(gè)系統(tǒng)的功能分為3種不同類型的組件,這種模式常稱為MVC模式。4、 JSP+Servlet+JavaBean開發(fā)模式 5、 JSP+Servlet+JavaBean+DAO開發(fā)模式 對(duì)于Java語(yǔ)言或JSP,在實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作時(shí),可以采用將數(shù)據(jù)庫(kù)表和普通的Jav
48、a類映射,將數(shù)據(jù)表轉(zhuǎn)換為類(對(duì)象),然后利用對(duì)象實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。 DAO模式就實(shí)現(xiàn)了把數(shù)據(jù)庫(kù)表的操作轉(zhuǎn)化成對(duì)Java類的操作。 DAO模式是進(jìn)行java數(shù)據(jù)庫(kù)開發(fā)的最基本的設(shè)計(jì)模式,就是把對(duì)數(shù)據(jù)庫(kù)表的操作轉(zhuǎn)化為對(duì)Java類的操作。 DAO模式最多是與JDBC、SQL、Hibernate等數(shù)據(jù)庫(kù)應(yīng)用技術(shù)結(jié)合在一起一同使用。5、 JSP+Servlet+JavaBean+DAO開發(fā)模第2節(jié) 開發(fā)應(yīng)用案例1無(wú)數(shù)據(jù)庫(kù)的web應(yīng)用程序開發(fā)【案例1】設(shè)計(jì)Web程序,計(jì)算任意兩個(gè)整數(shù)之間累加和值,并在網(wǎng)頁(yè)上顯示結(jié)果,其運(yùn)行界面如下圖所示。 注意:網(wǎng)頁(yè)稱為前端(技術(shù)),后臺(tái)計(jì)算-稱為后端(技術(shù)),在后臺(tái)處
49、理,你是看不到!第2節(jié) 開發(fā)應(yīng)用案例1無(wú)數(shù)據(jù)庫(kù)的web應(yīng)用程序開發(fā)【案分析、設(shè)計(jì)、實(shí)現(xiàn)給出開發(fā)方案1、MVC開發(fā)模式 開發(fā)模式采用MVC模式,即,將程序劃分為3部分功能,分別給出設(shè)計(jì)、實(shí)現(xiàn)。2、對(duì)于該案例,我們分別采用不同的開發(fā)技術(shù)以及這些技術(shù)的整合給出設(shè)計(jì)方案。 (注意,都是采用MVC模式,但實(shí)現(xiàn)技術(shù)不同) (1)只使用網(wǎng)頁(yè)設(shè)計(jì)技術(shù)(JSP技術(shù))實(shí)現(xiàn):3個(gè)JSP程序(輸入、計(jì)算-控制器、輸出) (2) JSP+JavaBean開發(fā)模式:3個(gè)JSP程序+1個(gè)JavaBean程序(輸入、計(jì)算-控制器、輸出、計(jì)算模型) (3)JSP+Servlet開發(fā)模式:2個(gè)JSP程序+1個(gè)Servlet程序(
50、輸入、計(jì)算、輸出) (4)JSP+Servlet+JavaBean開發(fā)模式:2個(gè)JSP程序+1個(gè)JavaBean程序+1個(gè)Servlet程序(輸入、計(jì)算、輸出、計(jì)算模型)標(biāo)準(zhǔn)的MVC開發(fā)模式3、實(shí)現(xiàn)按不同的方案,分別給出實(shí)現(xiàn)給出設(shè)計(jì)演示分析、設(shè)計(jì)、實(shí)現(xiàn)給出開發(fā)方案1、MVC開發(fā)模式 【例7-2】設(shè)計(jì)Web程序,計(jì)算任意兩個(gè)整數(shù)之間累加和值,并在網(wǎng)頁(yè)上顯示結(jié)果?!痉治觥吭搯栴}需要兩個(gè)網(wǎng)頁(yè): ch07_2_tijiao.jsp和ch07_2_show.jsp, 其處理流程是:網(wǎng)頁(yè)ch07_2_tijiao.jsp提交任意兩個(gè)整數(shù),而網(wǎng)頁(yè)ch07_2_show.jsp獲取兩個(gè)數(shù)值并計(jì)算,然后顯示計(jì)算
51、結(jié)果?!驹O(shè)計(jì)關(guān)鍵】 在兩頁(yè)面間利用request對(duì)象實(shí)現(xiàn)數(shù)據(jù)共享(利用shuju1、shuju2存放),并注意數(shù)據(jù)類型。處理流程如下圖所示?!緦?shí)現(xiàn)】 (1)提交任意兩個(gè)整數(shù)的JSP頁(yè)面源代碼 (2)顯示結(jié)果的JSP頁(yè)面源代碼【運(yùn)行】執(zhí)行程序【思考與分析】對(duì)于該題目是否可以按三部分:輸入、計(jì)算、輸出給出實(shí)現(xiàn)呢?即設(shè)計(jì)3個(gè)JSP程序分別是提供數(shù)據(jù)JSP、獲取數(shù)據(jù)并計(jì)算求和的JSP、獲取數(shù)據(jù)并顯示結(jié)果的JSP?方案1【例7-2】:只使用JSP技術(shù)實(shí)現(xiàn)【例7-2】設(shè)計(jì)Web程序,計(jì)算任意兩個(gè)整數(shù)之間累加和值,并【思考與分析】 對(duì)于該題目是否可以按三部分:輸入、計(jì)算、輸出給出實(shí)現(xiàn)呢?即設(shè)計(jì)3個(gè)JSP程序
52、分別是提供數(shù)據(jù)JSP、獲取數(shù)據(jù)并計(jì)算求和的JSP、獲取數(shù)據(jù)并顯示結(jié)果的JSP?思考解答:對(duì)于該問題,需要3個(gè)JSP組件,它們之間實(shí)現(xiàn)數(shù)據(jù)傳遞與共享,其關(guān)系如下圖所示:【思考與分析】【例7-4】利用JSP+JavaBean實(shí)現(xiàn)求任意兩個(gè)整數(shù)之間的累加和,并顯示輸出?!痉治觥?將計(jì)算兩個(gè)整數(shù)累加和值運(yùn)算操作封裝在JavaBean中,JSP引用JavaBean來(lái)實(shí)現(xiàn)求和及其顯示。 為此需要的組件有: (1)建立一個(gè)JavaBean:ch07_4.Add2.java,給出兩個(gè)整數(shù)屬性及求和方法。 (2)設(shè)計(jì)提交任意兩個(gè)整數(shù)的JSP頁(yè)面(ch07_4_tijiao.jsp); (3)設(shè)計(jì)JSP頁(yè)面(ch
53、07_4_show.jsp),在該頁(yè)面內(nèi)獲取兩個(gè)數(shù)值,創(chuàng)建JavaBean對(duì)象,并調(diào)用求值方法計(jì)算和值,然后顯示和值。方案2【例7-4】:基于JSP+JavaBean實(shí)現(xiàn)【例7-4】利用JSP+JavaBean實(shí)現(xiàn)求任意兩個(gè)整數(shù)之【設(shè)計(jì)關(guān)鍵】 其關(guān)鍵是標(biāo)簽的使用以及組件之間的數(shù)據(jù)共享?!緦?shí)現(xiàn)】(1)JavaBean:ch07_4.Add2.java(2)提交頁(yè)面(ch07_4_tijiao.jsp)(3)求值顯示和值(ch07_4_show.jsp)【運(yùn)行】程序運(yùn)行【設(shè)計(jì)關(guān)鍵】方案3【例7-6】:基于JSP+Servlet實(shí)現(xiàn)求和運(yùn)算【例7-6】利用JSP+Servlet實(shí)現(xiàn)求任意兩個(gè)整數(shù)之間
54、的累加和,并顯示輸出。【分析】處理流程是: 由提交頁(yè)面(ch07_6_tijiao.jsp)提交兩個(gè)數(shù)據(jù)(shuju1,shuju2)給Servlet(ch07_6_servlet_yunsuan.java),通過Servlet計(jì)算其累加和值并轉(zhuǎn)向輸出結(jié)果頁(yè)面(ch07_6_show.jsp)。【設(shè)計(jì)關(guān)鍵】(1)在Servlet中利用HttpServletRequest對(duì)象實(shí)現(xiàn)數(shù)據(jù)共享;(2)在JSP中利用request對(duì)象實(shí)現(xiàn)數(shù)據(jù)共享,并注意在本例,兩者表示同一個(gè)對(duì)象。(3)由Servlet如何轉(zhuǎn)向另一個(gè)JSP頁(yè)面或Servlet,如何由JSP跳轉(zhuǎn)到Servlet。方案3【例7-6】:基于J
55、SP+Servlet實(shí)現(xiàn)求和運(yùn)算【實(shí)現(xiàn)】 該題目有3個(gè)組件構(gòu)成:(1)提交頁(yè)面(ch07_6_tijiao.jsp)(2)Servlet:(ch07_6_servlet_yunsuan.java(3)輸出結(jié)果頁(yè)面(ch07_6_show.jsp)【運(yùn)行】程序運(yùn)行【實(shí)現(xiàn)】 該題目有3個(gè)組件構(gòu)成:方案4【例7-8】基于JSP+Servlet+JavaBean實(shí)現(xiàn)【例7-8】利用JSP+Servlet+JavaBean編程,實(shí)現(xiàn)任意兩個(gè)整數(shù)之間的累加值,并顯示結(jié)果?!痉治觥?該題目采用JSP+Servlet+JavaBean模式,按其不同的職責(zé): 由JavaBean封裝業(yè)務(wù)邏輯處理,計(jì)算累加值; 由
56、JSP實(shí)現(xiàn)信息的提交和運(yùn)算結(jié)果的顯示(需要兩個(gè)頁(yè)面,提交信息頁(yè)面,顯示結(jié)果頁(yè)面); 由Servlet實(shí)現(xiàn)由提交頁(yè)面獲取數(shù)據(jù),并實(shí)施計(jì)算,并保存計(jì)算結(jié)果,然后實(shí)現(xiàn)跳轉(zhuǎn),將計(jì)算結(jié)果通過顯示頁(yè)面顯示結(jié)果。 假設(shè)通過提交頁(yè)面存放的參數(shù)名字是shuju1,shuju2。方案4【例7-8】基于JSP+Servlet+JavaBea【設(shè)計(jì)】該程序需要有4個(gè)不同的構(gòu)件組成:(1)一個(gè)封裝兩個(gè)數(shù)之間累加求和操作的JavaBean;(2)一個(gè)Servlet實(shí)現(xiàn)數(shù)據(jù)的獲取,運(yùn)算求值并跳轉(zhuǎn)到輸出頁(yè)面;(3)一個(gè)是提交任意兩個(gè)數(shù)的JSP頁(yè)面;(4)一個(gè)是輸出結(jié)果JSP頁(yè)面; 其關(guān)鍵是個(gè)組件之間是如何實(shí)現(xiàn)數(shù)據(jù)共享,以及如
57、何實(shí)現(xiàn)個(gè)組件之間的跳轉(zhuǎn)的?!驹O(shè)計(jì)】該程序需要有4個(gè)不同的構(gòu)件組成:【實(shí)現(xiàn)】該題目有4個(gè)組件構(gòu)成:(1)JavaBean:封裝兩個(gè)數(shù)之間累加求和操作(2)Servlet:實(shí)現(xiàn)數(shù)據(jù)的獲取,運(yùn)算求值并跳轉(zhuǎn)到輸出頁(yè)面(3)提交任意兩個(gè)數(shù)的JSP頁(yè)面;(4)輸出結(jié)果JSP頁(yè)面;【運(yùn)行】程序運(yùn)行【實(shí)現(xiàn)】該題目有4個(gè)組件構(gòu)成:【案例2】開發(fā)web應(yīng)用程序,實(shí)現(xiàn)基于數(shù)據(jù)庫(kù)的用戶登錄模塊。 要求:一個(gè)用戶的信息有用戶名和登錄密碼,用戶信息存放在數(shù)據(jù)庫(kù)中。注意:開發(fā)程序,就是自己想,想明白了,就可以設(shè)計(jì)程序,但是“想”的前提是什么?必須已經(jīng)掌握了所需要的開發(fā)技術(shù)。學(xué)習(xí)開發(fā)技術(shù)【分析】1、數(shù)據(jù)庫(kù)與數(shù)據(jù)表 user以
58、及數(shù)據(jù)庫(kù)表:user_b,該表中包含兩個(gè)字段:用戶名字:uname char(10)和用戶密碼:upassword char(10)。 2、基于什么技術(shù)開發(fā)完成該應(yīng)用程序呢? (1)最基本的技術(shù): MySQL+JDBC( Java)就是我們上學(xué)期學(xué)習(xí)的開發(fā)技術(shù) (2)基于什么開發(fā)模式:MVC+DAO (3)MVC模式涉及到那些技術(shù):JSP+JavaBean+Servlet (4)DAO模式涉及到那些技術(shù):接口、抽象類、實(shí)現(xiàn)類、實(shí)體類與數(shù)據(jù)表間的映射3、到底使用什么技術(shù),什么開發(fā)模式呢形成了不同的設(shè)計(jì)方案第3節(jié) 開發(fā)應(yīng)用案例2具有數(shù)據(jù)庫(kù)的web應(yīng)用程序開發(fā)【案例2】開發(fā)web應(yīng)用程序,實(shí)現(xiàn)基于數(shù)
59、據(jù)庫(kù)的用戶登錄模塊。(1)采用JSP+JDBC技術(shù)實(shí)現(xiàn) 在JSP中實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接及注冊(cè)、登錄驗(yàn)證操作。(2)采用JSP+JavaBean+JDBC技術(shù)實(shí)現(xiàn) 實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接及其用戶的驗(yàn)證操作封裝在JavaBean中,而JSP只實(shí)現(xiàn)信息的提交和顯示以及利用JavaBean對(duì)象調(diào)用其業(yè)務(wù)邏輯處理方法。(3)采用JSP+Servlet+JDBC技術(shù)實(shí)現(xiàn) 實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接及其查詢操作在Servlet中實(shí)現(xiàn)。(4)采用JSP+JavaBean+servlet+JDBC技術(shù)實(shí)現(xiàn) 實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接及其操作在JavaBean中,而通過Servlet實(shí)現(xiàn)調(diào)用及其流程控制。登錄信息由提交頁(yè)面?zhèn)鬟f給Servlet
60、,然后Servlet根據(jù)驗(yàn)證情況跳轉(zhuǎn)到相應(yīng)的頁(yè)面。(5)采用JSP+JavaBean+servlet+JDBC+DAO技術(shù)實(shí)現(xiàn)注意:這里設(shè)計(jì)方案是最基本的方案,沒有涉及到DAO技術(shù),自然想到,若涉及到DAO,方案如何呢?【開發(fā)方案】不同技術(shù)的整合形成不同的開發(fā)方案(1)采用JSP+JDBC技術(shù)實(shí)現(xiàn)【開發(fā)方案】不同技術(shù)的整合第1個(gè)方案的實(shí)現(xiàn)【例7-3】基于JSP+JDBC技術(shù)【例7-3】利用JSP+JDBC技術(shù)相結(jié)合,實(shí)現(xiàn)基于數(shù)據(jù)庫(kù)的登錄驗(yàn)證。要求:一個(gè)用戶的信息有用戶名和登錄密碼,用戶信息存放在數(shù)據(jù)庫(kù)中。【分析】采用JSP+JDBC技術(shù),在JSP中實(shí)現(xiàn)數(shù)據(jù)庫(kù)的連接及其驗(yàn)證操作。(1)假設(shè)已建立
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年心理評(píng)估與干預(yù)考試試卷及答案
- 2025年心理學(xué)基本理論考試試卷及答案
- 2025年網(wǎng)絡(luò)安全與信息保障職業(yè)認(rèn)證考試卷及答案
- 2025年企業(yè)戰(zhàn)略管理考試卷及答案
- 2025年青少年心理健康知識(shí)考試試題及答案
- 2025年臨床醫(yī)學(xué)專業(yè)資格考試科目試題及答案
- 2025年家庭護(hù)理考試試題及答案
- 2025年電影欣賞與分析方法測(cè)試題及答案
- 2025年化妝師職業(yè)素養(yǎng)測(cè)試試題及答案
- 2025年電子信息技術(shù)職業(yè)資格考試試題及答案
- 研究開發(fā)費(fèi)加計(jì)扣除核查報(bào)告模板
- 數(shù)據(jù)鏈系統(tǒng)與技術(shù)(第2版) 課件 第10、11章 典型數(shù)據(jù)鏈系統(tǒng)的作戰(zhàn)運(yùn)用、數(shù)據(jù)鏈的新發(fā)展
- 印度尼西亞勞動(dòng)法
- 工業(yè)機(jī)器人的發(fā)展現(xiàn)狀和未來(lái)趨勢(shì)
- 安寧療護(hù)疼痛管理指南的系統(tǒng)評(píng)價(jià)
- 2 系統(tǒng)/子系統(tǒng)規(guī)格說明
- 《一次性物品巧“變身”》第二課時(shí)說課稿-四年級(jí)勞動(dòng)北師大版
- 保安形象禮儀培訓(xùn)-
- 審計(jì)學(xué)-中央財(cái)經(jīng)大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 財(cái)務(wù)系統(tǒng)業(yè)務(wù)技能競(jìng)賽題庫(kù)
- 《建筑裝飾構(gòu)造與施工技術(shù)》課程標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論