版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第2講講 基于基于Servlet+JavaBean+Jsp開發(fā)開發(fā)應(yīng)用的過程應(yīng)用的過程第第2講講 基于基于Servlet+JavaBean+Jsp開發(fā)應(yīng)用的過程開發(fā)應(yīng)用的過程 本講主要介紹主流的本講主要介紹主流的java web編程技術(shù)、設(shè)計(jì)模式編程技術(shù)、設(shè)計(jì)模式和框架,以及如何利用和框架,以及如何利用Eclipese開發(fā)開發(fā)Web應(yīng)用程序。應(yīng)用程序。 要點(diǎn):要點(diǎn): 1、Java Web編程的主要組件技術(shù);編程的主要組件技術(shù); 2、MVC設(shè)計(jì)模式;設(shè)計(jì)模式; 3、用、用Eclipse構(gòu)建一個(gè)基于構(gòu)建一個(gè)基于MVC模式的模式的Java Web的應(yīng)的應(yīng)用程序。用程序。 目的目的: 掌握如何用掌握
2、如何用Eclipse構(gòu)建一個(gè)基于構(gòu)建一個(gè)基于MVC模式的模式的Java WEB的應(yīng)用程序。的應(yīng)用程序。 2.1 java web 編程的主要組件技術(shù)nHtmlnjspnServletnJavabeannJdbcnXmlnTomcatnMySQL2.2 MVC設(shè)計(jì)模式 今天,我們見到的絕大部分應(yīng)用,都是基于今天,我們見到的絕大部分應(yīng)用,都是基于B/S(瀏覽(瀏覽器器/服務(wù)器)架構(gòu)的,其中的服務(wù)器就是服務(wù)器)架構(gòu)的,其中的服務(wù)器就是Web服務(wù)器。可服務(wù)器??梢?,見,Web應(yīng)用是目前廣泛使用的應(yīng)用模式。應(yīng)用是目前廣泛使用的應(yīng)用模式。Web程序開發(fā)方法的發(fā)展程序開發(fā)方法的發(fā)展: JSP的的Model
3、1 JSP的的Model 2 MVC 1 Model 1和和Model 2 對(duì)于對(duì)于Java的動(dòng)態(tài)的動(dòng)態(tài)Web編程技術(shù)而言,則經(jīng)歷了編程技術(shù)而言,則經(jīng)歷了Model 1和和Model 2時(shí)代。時(shí)代。 Model 1: Model 1就是就是JSP大行其道的時(shí)代,在大行其道的時(shí)代,在Model 1模式下,整個(gè)模式下,整個(gè)Web應(yīng)用幾乎全部由應(yīng)用幾乎全部由JSP頁(yè)面組成,頁(yè)面組成,JSP頁(yè)面接收處理客戶端請(qǐng)求,對(duì)請(qǐng)求處頁(yè)面接收處理客戶端請(qǐng)求,對(duì)請(qǐng)求處理后直接做出響應(yīng)。用少量的理后直接做出響應(yīng)。用少量的JavaBean來處理數(shù)據(jù)庫(kù)連接、數(shù)據(jù)庫(kù)訪問來處理數(shù)據(jù)庫(kù)連接、數(shù)據(jù)庫(kù)訪問等操作。等操作。 Mode
4、l 2: Model 2下下JSP不再承擔(dān)控制器的責(zé)任,它僅僅是表現(xiàn)層角色,僅不再承擔(dān)控制器的責(zé)任,它僅僅是表現(xiàn)層角色,僅僅用于將結(jié)果呈現(xiàn)給用戶,僅用于將結(jié)果呈現(xiàn)給用戶,JSP頁(yè)面的請(qǐng)求與頁(yè)面的請(qǐng)求與Servlet(控制器)交互,(控制器)交互,而而Servlet負(fù)責(zé)與后臺(tái)的負(fù)責(zé)與后臺(tái)的JavaBean通信。通信。 在在Model 2模式下,模型(模式下,模型(Model)由)由JavaBean 充當(dāng),視圖(充當(dāng),視圖(View)由由JSP頁(yè)面充當(dāng),而控制器(頁(yè)面充當(dāng),而控制器(Controller)則由)則由Servlet充當(dāng)。充當(dāng)。Model 1的程序流程:的程序流程:特點(diǎn):特點(diǎn): 由由J
5、SP頁(yè)面組成,頁(yè)面組成,JSP頁(yè)面接收處理客戶端請(qǐng)求,對(duì)請(qǐng)求處理后直接頁(yè)面接收處理客戶端請(qǐng)求,對(duì)請(qǐng)求處理后直接做出響應(yīng)。用少量的做出響應(yīng)。用少量的JavaBean來處理數(shù)據(jù)庫(kù)連接、數(shù)據(jù)庫(kù)訪問等操作來處理數(shù)據(jù)庫(kù)連接、數(shù)據(jù)庫(kù)訪問等操作Model 2的程序流程的程序流程:基本上是基本上是MVC結(jié)構(gòu)結(jié)構(gòu)特點(diǎn):特點(diǎn): Model 2下下JSP不再承擔(dān)控制器的責(zé)任,它僅僅是表現(xiàn)層角色,僅僅用于將結(jié)不再承擔(dān)控制器的責(zé)任,它僅僅是表現(xiàn)層角色,僅僅用于將結(jié)果呈現(xiàn)給用戶,果呈現(xiàn)給用戶,JSP頁(yè)面的請(qǐng)求與頁(yè)面的請(qǐng)求與Servlet(控制器)交互,而(控制器)交互,而Servlet負(fù)責(zé)與后臺(tái)負(fù)責(zé)與后臺(tái)的的JavaBe
6、an通信。通信。 在在Model 2模式下,模型(模式下,模型(Model)由)由JavaBean 充當(dāng),視圖充當(dāng),視圖(View)由)由JSP頁(yè)面充當(dāng),而控制器(頁(yè)面充當(dāng),而控制器(Controller)則由)則由Servlet充當(dāng)。充當(dāng)。2 Model 1和和Model 2的比較的比較 對(duì)于非常小型的對(duì)于非常小型的Web站點(diǎn),如果后期的更新、維護(hù)站點(diǎn),如果后期的更新、維護(hù)工作不是特別大,可以使用工作不是特別大,可以使用Model 1的模式來開發(fā)應(yīng)用,的模式來開發(fā)應(yīng)用,而不是使用而不是使用Model 2的模式。的模式。 雖然雖然Model 2提供了更好的可擴(kuò)展性及可維護(hù)性,提供了更好的可擴(kuò)展
7、性及可維護(hù)性,但但增加了前期開發(fā)成本增加了前期開發(fā)成本。從某種程度上講,。從某種程度上講,Model 2為了為了降低系統(tǒng)后期維護(hù)的復(fù)雜度,卻導(dǎo)致前期開發(fā)的更高復(fù)雜降低系統(tǒng)后期維護(hù)的復(fù)雜度,卻導(dǎo)致前期開發(fā)的更高復(fù)雜度。度。 3 MVC思想思想 MVC并不是并不是Java語(yǔ)言所特有的設(shè)計(jì)思想,也并不是語(yǔ)言所特有的設(shè)計(jì)思想,也并不是Web應(yīng)用所特有的思想,它是所有面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言應(yīng)用所特有的思想,它是所有面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言都應(yīng)該遵守的規(guī)范。都應(yīng)該遵守的規(guī)范。 MVC思想將一個(gè)應(yīng)用分成三個(gè)基本部分:思想將一個(gè)應(yīng)用分成三個(gè)基本部分:Model(模型)、(模型)、View(視圖)和(視圖)和Cont
8、roller(控制器),這三(控制器),這三個(gè)部分以最少的耦合協(xié)同工作,從而提高應(yīng)用的可擴(kuò)展性個(gè)部分以最少的耦合協(xié)同工作,從而提高應(yīng)用的可擴(kuò)展性及可維護(hù)性。及可維護(hù)性。MVCMVCMVC: M(model)是指數(shù)據(jù)模型,)是指數(shù)據(jù)模型, V(View)是指用戶界面,)是指用戶界面, C(Control)則是控制器。則是控制器。 使用使用MVCMVC的目的是將的目的是將M M和和V V的實(shí)現(xiàn)代碼分離,從而使同的實(shí)現(xiàn)代碼分離,從而使同一個(gè)程序可以使用不同的表現(xiàn)形式。一個(gè)程序可以使用不同的表現(xiàn)形式。 模型、視圖與控制器的分離,使得一個(gè)模型可以具有多個(gè)模型、視圖與控制器的分離,使得一個(gè)模型可以具有多個(gè)
9、顯示視圖。如果用戶通過某個(gè)視圖的控制器改變了模型的顯示視圖。如果用戶通過某個(gè)視圖的控制器改變了模型的數(shù)據(jù),所有其它依賴于這些數(shù)據(jù)的視圖都應(yīng)反映到這些變數(shù)據(jù),所有其它依賴于這些數(shù)據(jù)的視圖都應(yīng)反映到這些變化。因此,無論何時(shí)發(fā)生了何種數(shù)據(jù)變化,控制器都會(huì)將化。因此,無論何時(shí)發(fā)生了何種數(shù)據(jù)變化,控制器都會(huì)將變化通知所有的視圖,導(dǎo)致顯示的更新。這實(shí)際上是一種變化通知所有的視圖,導(dǎo)致顯示的更新。這實(shí)際上是一種模型的變化模型的變化- -傳播機(jī)制。模型、視圖、控制器傳播機(jī)制。模型、視圖、控制器3 3者之間的關(guān)者之間的關(guān)系和各自的主要功能。系和各自的主要功能。MVC的組成部分 視圖(視圖(ViewView)代表
10、用戶交互界面,對(duì)于代表用戶交互界面,對(duì)于WebWeb應(yīng)用來應(yīng)用來說就是說就是HTMLHTML界面。界面。 模型(模型(ModelModel):):就是業(yè)務(wù)流程就是業(yè)務(wù)流程/ /狀態(tài)的處理以及狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定。業(yè)務(wù)規(guī)則的制定。 控制(控制(ControllerController):):可以理解為一個(gè)分發(fā)器,可以理解為一個(gè)分發(fā)器,他來決定選擇什么樣的模型,選擇什么樣的視圖,他來決定選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請(qǐng)求,控制層并不做任何可以完成什么樣的用戶請(qǐng)求,控制層并不做任何的數(shù)據(jù)處理。的數(shù)據(jù)處理。MVC帶來的好處 MVCMVC從根本上強(qiáng)制性的將它們分開,最大
11、程從根本上強(qiáng)制性的將它們分開,最大程度上實(shí)現(xiàn)了程序代碼與網(wǎng)頁(yè)的分離。度上實(shí)現(xiàn)了程序代碼與網(wǎng)頁(yè)的分離。 數(shù)據(jù)和業(yè)務(wù)規(guī)則從表示層分開,所以可以數(shù)據(jù)和業(yè)務(wù)規(guī)則從表示層分開,所以可以最大化的重用代碼。最大化的重用代碼。MVC的特點(diǎn)MVC特點(diǎn):特點(diǎn):n 多個(gè)視圖可以對(duì)應(yīng)一個(gè)模型。按多個(gè)視圖可以對(duì)應(yīng)一個(gè)模型。按MVC設(shè)計(jì)模式,一個(gè)模型對(duì)應(yīng)多個(gè)視設(shè)計(jì)模式,一個(gè)模型對(duì)應(yīng)多個(gè)視圖,可以減少代碼的復(fù)制及代碼的維護(hù)量,一旦模型發(fā)生改變,也易于維圖,可以減少代碼的復(fù)制及代碼的維護(hù)量,一旦模型發(fā)生改變,也易于維護(hù)。護(hù)。n 模型返回的數(shù)據(jù)與顯示邏輯分離。模型數(shù)據(jù)可以應(yīng)用任何的顯示技術(shù),模型返回的數(shù)據(jù)與顯示邏輯分離。模型數(shù)
12、據(jù)可以應(yīng)用任何的顯示技術(shù),例如,使用例如,使用JSP頁(yè)面、頁(yè)面、Velocity模板或者直接產(chǎn)生模板或者直接產(chǎn)生Excel文檔等。文檔等。n 應(yīng)用被分隔為三層,降低了各層之間的耦合,提供了應(yīng)用的可擴(kuò)展性。應(yīng)用被分隔為三層,降低了各層之間的耦合,提供了應(yīng)用的可擴(kuò)展性。 n 控制層的概念也很有效,由于它把不同的模型和不同的視圖組合在一起,控制層的概念也很有效,由于它把不同的模型和不同的視圖組合在一起,完成不同的請(qǐng)求。因此,控制層可以說是包含了用戶請(qǐng)求權(quán)限的概念。完成不同的請(qǐng)求。因此,控制層可以說是包含了用戶請(qǐng)求權(quán)限的概念。n MVC更符合軟件工程化管理的精神。不同的層各司其職,每一層的組更符合軟件
13、工程化管理的精神。不同的層各司其職,每一層的組件具有相同的特征,有利于通過工程化和工具化產(chǎn)生管理程序代碼。件具有相同的特征,有利于通過工程化和工具化產(chǎn)生管理程序代碼。4 常用的常用的MVC框架框架 Struts: -包括包括struts1和和struts2兩個(gè)。兩個(gè)。JSF: JSF是一個(gè)標(biāo)準(zhǔn)是一個(gè)標(biāo)準(zhǔn) ,目前,目前,JSF是作為是作為JEE 5.0的一個(gè)組成部分,與的一個(gè)組成部分,與JEE 5.0一起發(fā)布一起發(fā)布 JSF的行為方法在的行為方法在POJO中實(shí)現(xiàn),中實(shí)現(xiàn),JSF的的Managed Bean無需繼承無需繼承任何特別的類。因此,無需在表單和模型對(duì)象之間實(shí)現(xiàn)多余的控制器任何特別的類。因
14、此,無需在表單和模型對(duì)象之間實(shí)現(xiàn)多余的控制器層。層。JSF中沒有控制器對(duì)象,控制器行為通過模型對(duì)象實(shí)現(xiàn)。中沒有控制器對(duì)象,控制器行為通過模型對(duì)象實(shí)現(xiàn)。 JSF的事件框架可以細(xì)化到表單中每個(gè)字段。的事件框架可以細(xì)化到表單中每個(gè)字段。JSF依然是基于依然是基于JSP/Servlet的,仍然是的,仍然是JSP/Servlet架構(gòu),因而學(xué)習(xí)曲線相對(duì)簡(jiǎn)單架構(gòu),因而學(xué)習(xí)曲線相對(duì)簡(jiǎn)單 2.3 用Eclipse構(gòu)建一個(gè)基于MVC模式的Java Web應(yīng)用程序題目要求:題目要求:(1)技術(shù)要求)技術(shù)要求: 按照按照MVC設(shè)計(jì)模式,利用設(shè)計(jì)模式,利用JSP、Servlet及及JavaBean構(gòu)建一個(gè)簡(jiǎn)單的登錄系統(tǒng)
15、。構(gòu)建一個(gè)簡(jiǎn)單的登錄系統(tǒng)。(2)系統(tǒng)功能要求:)系統(tǒng)功能要求: 當(dāng)用戶在登錄頁(yè)面上填寫用戶名和密碼并提交后,當(dāng)用戶在登錄頁(yè)面上填寫用戶名和密碼并提交后,系統(tǒng)檢查該用戶是否已經(jīng)注冊(cè),若注冊(cè),系統(tǒng)進(jìn)入主頁(yè)面,系統(tǒng)檢查該用戶是否已經(jīng)注冊(cè),若注冊(cè),系統(tǒng)進(jìn)入主頁(yè)面,否則,進(jìn)入注冊(cè)頁(yè)面。系統(tǒng)的工作流程見下圖。否則,進(jìn)入注冊(cè)頁(yè)面。系統(tǒng)的工作流程見下圖。(2)控制器控制器-1LoginServlet(1) 登錄頁(yè)面Login.jsp(5)數(shù)據(jù)組件userdoadb_op(6)數(shù)據(jù)庫(kù)MySQL進(jìn)行驗(yàn)證,不符合格式,返回注冊(cè)頁(yè)面,重新注冊(cè),并提示出錯(cuò)情況,注冊(cè)成功,進(jìn)入登錄頁(yè)面未注冊(cè) 登錄系統(tǒng)的工作流程登錄系統(tǒng)的
16、工作流程(3)提示:登錄成功提示:登錄成功Main.jsp(過(過20秒后再自動(dòng)秒后再自動(dòng)進(jìn)入注冊(cè)頁(yè)面進(jìn)入注冊(cè)頁(yè)面)(4)進(jìn)入注冊(cè)頁(yè)面Register.jsp(7)控制器控制器-2RegisterServlet(8)提示:注冊(cè)失敗Register_err.jsp(過20秒后再自動(dòng)進(jìn)入注冊(cè)頁(yè)面)(9)注冊(cè)成功Register_succ.jsp(過20秒后再自動(dòng)進(jìn)入注冊(cè)頁(yè)面)已注冊(cè)或者或者密碼錯(cuò)誤(10)進(jìn)入主頁(yè)面Main2.jsp構(gòu)建系統(tǒng)的處理步驟(1)數(shù)據(jù)庫(kù)設(shè)計(jì):數(shù)據(jù)庫(kù)設(shè)計(jì):構(gòu)建數(shù)據(jù)庫(kù)表構(gòu)建數(shù)據(jù)庫(kù)表T_UserInfo(2)在在Eclipse中創(chuàng)建一個(gè)項(xiàng)目中創(chuàng)建一個(gè)項(xiàng)目:Login_Proj(
17、3)構(gòu)建視圖組件構(gòu)建視圖組件:登錄頁(yè)面(:登錄頁(yè)面(login.jsp)、主頁(yè)面)、主頁(yè)面(main.jsp)、注冊(cè)頁(yè)面注冊(cè)頁(yè)面(register.jsp),注冊(cè)失敗(Register_err.jsp),注冊(cè)成功(Register_succ.jsp)(4)構(gòu)建控制層組件:構(gòu)建控制層組件: 一個(gè)一個(gè)servlet(LoginServlet.java)-實(shí)現(xiàn)登錄的控制實(shí)現(xiàn)登錄的控制 一個(gè)一個(gè)servlet(RegisterServlet.Java)-實(shí)現(xiàn)注冊(cè)的驗(yàn)證控制實(shí)現(xiàn)注冊(cè)的驗(yàn)證控制(5)構(gòu)建業(yè)務(wù)邏輯層組件(模型組件)構(gòu)建業(yè)務(wù)邏輯層組件(模型組件): 一個(gè)一個(gè)JavaBean:user,doa,
18、db_op(6)部署該程序到服務(wù)器部署該程序到服務(wù)器Tomcat中中,然后運(yùn)行。,然后運(yùn)行。(1)數(shù)據(jù)庫(kù)設(shè)計(jì):構(gòu)建數(shù)據(jù)庫(kù)表數(shù)據(jù)庫(kù)設(shè)計(jì):構(gòu)建數(shù)據(jù)庫(kù)表T_UserInfo利用利用MySQL數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù),n創(chuàng)建數(shù)據(jù)庫(kù):創(chuàng)建數(shù)據(jù)庫(kù):usern創(chuàng)建表及其結(jié)構(gòu):創(chuàng)建表及其結(jié)構(gòu):T_UserInfo字段名字段名字段類型字段類型字段描述字段描述userName文本(文本(20)用戶名,主鍵用戶名,主鍵password文本(文本(10)密碼密碼數(shù)據(jù)表結(jié)構(gòu)數(shù)據(jù)表結(jié)構(gòu)T_UserInfo注意,該數(shù)據(jù)庫(kù)所存放的位置注意,該數(shù)據(jù)庫(kù)所存放的位置(2)在在Eclipse中創(chuàng)建一個(gè)項(xiàng)目:中創(chuàng)建一個(gè)項(xiàng)目:Login_Proj
19、 按按Eclipse建立工程的提示,建立建立工程的提示,建立Web工程工程,工程的名稱為:,工程的名稱為:Login_Proj。(3)構(gòu)建視圖組件:構(gòu)建視圖組件:- 登錄頁(yè)面(登錄頁(yè)面(login.jsp)n 選中工程選中工程“Login_Proj”,n 擊右鍵,選擊右鍵,選“新建新建”,n 按按Eclipse的提示,建立的提示,建立jsp,名稱為:,名稱為:Login。n 修改默認(rèn)修改默認(rèn)jsp內(nèi)容內(nèi)容,達(dá)到我們所要求的編碼達(dá)到我們所要求的編碼。login.jsp的代碼的代碼 登錄頁(yè)面 用戶名: 密 碼: (3)構(gòu)建視圖組件構(gòu)建視圖組件- 主頁(yè)面主頁(yè)面
20、(main.jsp)n 選中工程選中工程“Login_Proj”,n 擊右鍵,選擊右鍵,選“新建新建”,n 按按Eclipse的提示,建立的提示,建立jsp,名稱為:,名稱為:main.jsp。n 修改默認(rèn)修改默認(rèn)jsp內(nèi)容內(nèi)容,達(dá)到我們所要求的編碼達(dá)到我們所要求的編碼。main.jsp代碼代碼 主頁(yè)面 ,你成功登錄,20秒后自動(dòng)進(jìn)入主頁(yè)面! 類似可以建立其它的頁(yè)面:類似可以建立其它的頁(yè)面: 系統(tǒng)頁(yè)面系統(tǒng)頁(yè)面main2.jsp 注冊(cè)頁(yè)面注冊(cè)頁(yè)面register.jsp 注冊(cè)失敗提示頁(yè)面注冊(cè)失敗提示頁(yè)面Register_err.jsp 注冊(cè)成功提示頁(yè)面注冊(cè)成功提示頁(yè)面Register_succ.
21、jsp構(gòu)建控制層組件(構(gòu)建控制層組件(第第4步步) 建立數(shù)據(jù)建立數(shù)據(jù)JavaBean用戶(用戶(user);); 建立連接數(shù)據(jù)庫(kù)的建立連接數(shù)據(jù)庫(kù)的JavaBean(doa) 建立實(shí)現(xiàn)對(duì)用戶數(shù)據(jù)庫(kù)進(jìn)行操作的建立實(shí)現(xiàn)對(duì)用戶數(shù)據(jù)庫(kù)進(jìn)行操作的java類類-db_op.java4.1 建立數(shù)據(jù)建立數(shù)據(jù)JavaBean用戶(用戶(user)package JavaBean;public class user private String username; private String password; public String getUsername() return username; publi
22、c void setUsername(String username) this.username = username; public String getPassword() return password; public void setPassword(String password) this.password = password; 4.2 建立連接數(shù)據(jù)庫(kù)的建立連接數(shù)據(jù)庫(kù)的JavaBean(doa)package JavaBean;public class doa private String db_username; private String db_password; pri
23、vate String db_driver; private String db_connection; public String getDb_username() return db_username; public void setDb_username(String db_username) this.db_username = db_username; public String getDb_password() return db_password; public void setDb_password(String db_password) this.db_password =
24、db_password; public String getDb_driver() return db_driver; public void setDb_driver(String db_driver) this.db_driver = db_driver; public String getDb_connection() return db_connection; public void setDb_connection(String db_connection) this.db_connection = db_connection; 4.3 在在JavaBean(doa)的基礎(chǔ)上,建立實(shí)
25、現(xiàn)對(duì)用的基礎(chǔ)上,建立實(shí)現(xiàn)對(duì)用戶數(shù)據(jù)庫(kù)進(jìn)行操作的戶數(shù)據(jù)庫(kù)進(jìn)行操作的java類類-db_op.javapublic class db_op public Connection db_getConnection()Connection conn=null; String db_username=null; String db_password=null; String db_driver=null; String db_connection=null; Properties pro = new Properties(); File file = new File(H:web_15Login_Proj
26、perties); try pro.load(new FileInputStream(file); catch (Exception e) e.printStackTrace(); db_username=pro.getProperty(db_username,); db_password=pro.getProperty(db_password,); db_driver=pro.getProperty(db_driver,db_driver); db_connection=pro.getProperty(db_connection,db_connection); try Cl
27、ass.forName(db_driver).newInstance(); conn=DriverManager.getConnection(db_connection, db_username,db_password); return conn; catch(Exception e) System.out.println(e); return null; 實(shí)實(shí)現(xiàn)現(xiàn)數(shù)數(shù)據(jù)據(jù)庫(kù)庫(kù)的的連連接接public boolean select_1(user u) /查詢用戶是否已經(jīng)注冊(cè) Connection conn=null; ResultSet rs=null; Statement ps=null;
28、String xm=u.getUsername(); String pass=u.getPassword(); conn=db_getConnection(); String s1=select * from T_userInfo where username=+xm+ and password=+pass+; try ps=conn.createStatement(); rs=ps.executeQuery(s1); if(rs.next() rs.close(); ps.close(); conn.close(); return true; else rs.close(); ps.clos
29、e(); conn.close(); return false; catch(SQLException e) return false; public boolean select_2(String u) /在注冊(cè)時(shí),查詢是否有重名的用戶已經(jīng)注冊(cè)Connection conn=null;ResultSet rs=null;Statement ps=null;conn=db_getConnection();String s1=select * from T_userInfo where username=+u+ ;tryps=conn.createStatement(); rs=ps.execu
30、teQuery(s1);if(rs.next()rs.close(); ps.close(); conn.close();return true;elsers.close(); ps.close(); conn.close();return false;catch(SQLException e)return false;public void append(user u)/注冊(cè)時(shí),添加注冊(cè)用戶信息Connection conn=null;Statement ps=null;conn=db_getConnection();String xm=u.getUsername();String pass
31、=u.getPassword();String s1=insert into T_userInfo(username,password) values(+xm+,+pass+) ;tryps=conn.createStatement();ps.executeUpdate(s1);ps.close();conn.close();catch(SQLException e)System.out.println(e);(5)構(gòu)建控制層組件()構(gòu)建控制層組件(第第5步步):): 5.1 一個(gè)一個(gè)servlet(LoginServlet.java) -實(shí)現(xiàn)登錄的控制實(shí)現(xiàn)登錄的控制 5.2 一個(gè)一個(gè)serv
32、let(RegisterServlet.Java) 實(shí)現(xiàn)注冊(cè)的驗(yàn)證控制實(shí)現(xiàn)注冊(cè)的驗(yàn)證控制 5.3 web.xml配置文件的配置文件的解讀解讀5.2 構(gòu)建控制層組件:一個(gè)構(gòu)建控制層組件:一個(gè)servlet(registerServlet.javapublic void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException String xm=(String)request.getParameter(username); String mm=(Strin
33、g)request.getParameter(password); String mm2=(String)request.getParameter(repassword); String type_err=; db_op b=new db_op(); if(b.select_2(xm) type_err=xm+:該用戶已經(jīng)注冊(cè)!; HttpSession s=request.getSession(true); s.setAttribute(type_err,type_err); response.sendRedirect(Register_err.jsp); else if(!mm.equal
34、s(mm2) type_err=兩次密碼不一致錯(cuò)!; HttpSession s=request.getSession(true); s.setAttribute(type_err,type_err); response.sendRedirect(Register_err.jsp); else HttpSession s=request.getSession(true); s.setAttribute(username,xm); s.setAttribute(password,mm); user u=new user();u.setUsername(xm);u.setPassword(mm);
35、 db_op d=new db_op(); d.append(u); response.sendRedirect(Register_succ.jsp); 5.1 構(gòu)建控制層組件:一個(gè)構(gòu)建控制層組件:一個(gè)servlet(LoginServlet.java)public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException user u=new user(); String xm=; String ps=; xm=request.getParame
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024屆河北省棗強(qiáng)中學(xué)高三2月11日專項(xiàng)練習(xí)數(shù)學(xué)試題
- 2024屆河北省滄州鹽山中學(xué)高三第二學(xué)期聯(lián)合教學(xué)質(zhì)量調(diào)研數(shù)學(xué)試題試卷
- 山東省德州市平原縣三校聯(lián)考2024-2025學(xué)年五年級(jí)(上)期中語(yǔ)文試卷(有答案)
- 黑龍江省-2024年-網(wǎng)格員-下半年筆試真題卷
- 2024年zz學(xué)校園網(wǎng)絡(luò)安全管理制度(2篇)
- 三八婦女節(jié)活動(dòng)活動(dòng)方案例文(4篇)
- 物聯(lián)網(wǎng)安全導(dǎo)論
- 固態(tài)電池制造技術(shù)及應(yīng)用前景考核試卷
- 體育場(chǎng)滑冰場(chǎng)冰面平整度控制考核試卷
- 工業(yè)互聯(lián)網(wǎng)安全 課件 項(xiàng)目7 工業(yè)互聯(lián)網(wǎng)安全應(yīng)急處置
- YY/T 1760-2021一次性使用腹膜透析引流器
- GB/T 41365-2022中藥材種子(種苗)白術(shù)
- GB/T 34570.1-2017電動(dòng)工具用可充電電池包和充電器的安全第1部分:電池包的安全
- GB/T 12527-2008額定電壓1 kV及以下架空絕緣電纜
- 一級(jí)建造師考試題庫(kù)及答案(全國(guó)通用)
- 公司社會(huì)責(zé)任管理制度
- 思想政治工作和文化工作理論1
- 2022屆北京市東城區(qū)高三語(yǔ)文一模語(yǔ)文試卷講評(píng)課件
- 上市公司員工持股計(jì)劃分析與案例解讀課件
- 噪音防治監(jiān)理實(shí)施細(xì)則
- 國(guó)家開放大學(xué)電大《課程與教學(xué)論》形考任務(wù)4試題及答案
評(píng)論
0/150
提交評(píng)論