第8章_JSP操作SQL_Server_2005.ppt_第1頁
第8章_JSP操作SQL_Server_2005.ppt_第2頁
第8章_JSP操作SQL_Server_2005.ppt_第3頁
第8章_JSP操作SQL_Server_2005.ppt_第4頁
第8章_JSP操作SQL_Server_2005.ppt_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第八章 JSP操作SQL Server 2005,SQL查詢與JSP應(yīng)用指南,JSP Tomcat、jdk、myeclipse jsp內(nèi)置對象: out、request、response、session 利用jsp內(nèi)置對象實現(xiàn)簡單的登錄程序 JDBC操作技術(shù) 使用JSP+JDBC完成用戶登陸程序 實例:新聞系統(tǒng)-Java的model1模式研發(fā),JSP操作SQL Server 2005,1.JSP介紹 JavaServer Pages (JSP) 是由Sun 公司倡導(dǎo)、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。一種以 Java為主的跨平臺web開發(fā)語言。JSP具備了Java技術(shù)的簡單易用,完全

2、的面向?qū)ο?,具有平臺無關(guān)性且安全可靠。 友情提示:何為動態(tài)網(wǎng)頁? 動態(tài)網(wǎng)頁主要是指從網(wǎng)站開發(fā)、管理、維護(hù)的角度來考慮,具有以下幾個特點: (1)動態(tài)網(wǎng)頁一般以數(shù)據(jù)庫技術(shù)為基礎(chǔ),可以大大降低網(wǎng)站維護(hù)的工作量; (2)采用動態(tài)網(wǎng)頁技術(shù)的網(wǎng)站可以實現(xiàn)更多的功能,如用戶注冊、用戶登錄、在線調(diào)查、用戶管理、訂單管理等等;,一、JSP,2.常見的動態(tài)網(wǎng)頁技術(shù) 目前,常見的動態(tài)網(wǎng)頁技術(shù)有asp(.asp)、(.aspx)、php(.php)和jsp(.jsp),其中asp和是由microsoft公司建立的,jsp是由sun公司建立的,每當(dāng)學(xué)動態(tài)網(wǎng)頁技術(shù)時,就會探討一個問題,這幾個技術(shù)熟好熟不好,其實這個問題

3、是沒有具體答案的,各位始終要記住,“沒有最好的技術(shù)只有最適合的技術(shù)”,但如果非得加個區(qū)別話,我們可以說asp和非開源、非免費(fèi)而且只能用于windows平臺,而php和jsp都是開源、免費(fèi)而且都可以跨平臺使用,如Linux,相比php(moodle平臺就使用php開發(fā))jsp背后有更多的開源程序支持著jsp實現(xiàn)更強(qiáng)大的功能。 友情提示:何為開源?簡單的說就是無償提供程序源代碼。,一、JSP,3.jsp的開發(fā)環(huán)境和運(yùn)行環(huán)境的最佳組合 JSP具備了Java技術(shù)的簡單易用,完全的面向?qū)ο?,具有平臺無關(guān)性且安全可靠。 其開發(fā)環(huán)境和運(yùn)行環(huán)境的最佳組合是: myeclipse(開發(fā)環(huán)境)和tomcat+Jd

4、k(運(yùn)行服務(wù)器) 知識鏈接:對java的理解? Java是一種簡單的,面向?qū)ο蟮模植际降?,可移植的,性能?yōu)異、多線程的動態(tài)語言。 Java 平臺有3個版本,一是適用于小型設(shè)備、智能卡及移動設(shè)備(如智能手機(jī)、機(jī)頂盒)運(yùn)行應(yīng)用程序提供環(huán)境的Micro版J2ME、適用于桌面系統(tǒng)(操作系統(tǒng)、手機(jī)、網(wǎng)吧)運(yùn)行應(yīng)用程序提供環(huán)境的標(biāo)準(zhǔn)版J2SE、適用于創(chuàng)建服務(wù)器應(yīng)用程序和服務(wù)運(yùn)行應(yīng)用程序提供環(huán)境的企業(yè)版J2EE。 我們主要學(xué)習(xí)的是web程序開發(fā),所以實現(xiàn)的是j2ee開發(fā)。,一、JSP,1.Tomcat和JDK Tomcat是由由Apache、Sun等公司利用java語言開發(fā)的一個免費(fèi)的Web 應(yīng)用服務(wù)器,

5、支持java servlet和jsp運(yùn)行。 知識鏈接:對servlet的理解。 Servlet是一種服務(wù)器端的Java應(yīng)用程序,可以生成動態(tài)的Web頁面,有自己的doget方法和dopost方法獲取form中信息和并將信息輸出到瀏覽器,但是由于在顯示方面servlet可視化弱,而且書寫語句也比較復(fù)雜,所有就被jsp所替代。不過這并不意味著servlet就被淘汰了,我們會在面向MVC編程時,會講到一個框架struts,它就是對servlet的一個封裝實現(xiàn)了C的功能,即控制功能(如,獲取信息、調(diào)用數(shù)據(jù)庫等功能) 友情提示:另一個常用的web應(yīng)用服務(wù)器是IIS,是microsoft開發(fā)的,用來發(fā)布a

6、sp或.net程序的。,二、tomcat、jdk和myeclipse,(1)tomcat安裝 在安裝tomcat之前,大家需要清楚的是tomcat的使用必須需要依靠JDK的支持,那么如果在本機(jī)從眾多的jdk中找到所需要的jdk該如何去做呢?就需要配置JAVA_HOME,也就說JAVA_HOME可以幫我們指定所需要的jdk。 知識鏈接:熟悉JDK *JDK是Sun針對Java開發(fā)員的產(chǎn)品,是整個Java的核心,包括了Java運(yùn)行環(huán)境(bin),Java工具(lib)和Java基礎(chǔ)的類庫(lib)。,二、tomcat、jdk和myeclipse,* JDK包含的基本組件包括: javac 編譯器,

7、將源程序轉(zhuǎn)成字節(jié)碼 jar 打包工具,將相關(guān)的類文件打包成一個文件 javadoc 文檔生成器,從源碼注釋中提取文檔 jdb debugger,查錯工具(要學(xué)會debug調(diào)試檢查錯誤) java 運(yùn)行編譯后的java程序(.class后綴的) * 常用的package(后面會用到): java.util : 這個是系統(tǒng)輔助類,特別是集合類Collection,List,Map等 java.sql: 這個是數(shù)據(jù)庫操作的類,Connection, Statement,ResultSet等,二、tomcat、jdk和myeclipse,友情提示:如何理解javac-編譯器,將源程序轉(zhuǎn)成字節(jié)碼? 我們

8、需要了解下jsp運(yùn)行原理,當(dāng)服務(wù)器上的一個JSP頁面被第一次請求執(zhí)行時 服務(wù)器上的JSP引擎首先將JSP頁面文件轉(zhuǎn)譯成一個Java文件(.java) 再將這個Java文件編譯成字節(jié)碼文件(.class) 通過執(zhí)行字節(jié)碼文件響應(yīng)客戶的請求 將結(jié)果以HTML頁面的形式返回給客戶端的瀏覽器。 通過上面的原理我們也會發(fā)現(xiàn)到j(luò)sp文件第一次運(yùn)行速度相對慢些,因為要經(jīng)過*.jsp*.java-*.class編譯的過程,以后讀取則可以直接讀取*.class文件,所以速度要快些了。,二、tomcat、jdk和myeclipse,(2)安裝tomcat前,先安裝和配置JDK *安裝路徑: C:jdk1.6.0_

9、16(隨意) *配置JDK(系統(tǒng)屬性-高級-環(huán)境變量-系統(tǒng)變量): .JAVA_HOME C:jdk1.6.0_16(目的:指定所需的jdk) .Path(目的:見jdk包含組件) %JAVA_HOME%bin;(配置java環(huán)境,使用java命令) .CLASSPATH (目的:見jdk常用的package) .;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar( .”后跟一個分號,表示當(dāng)前路徑的意思;指定找到j(luò)ava類加載路徑下所用的jar包),二、tomcat、jdk和myeclipse,(3)JDK安裝和配置后,正式安裝tomcat *安裝路徑: C:Tom

10、cat 6.0 *注意端口號:默認(rèn)8080,可以修改 *注意選擇jdk路徑: C:jdk1.6.0_16 *配置tomcat(系統(tǒng)屬性-高級-環(huán)境變量-系統(tǒng)變量): .TOMCAT_HOME C:Tomcat 6.0 .CLASSPATH %TOMCAT_HOME%lib; 測試tomcat:啟動tomcat,然后在地址欄里: :8080/(注意:端口號8080不要忘記寫了,默認(rèn)http協(xié)議只有80可以不用寫),二、tomcat、jdk和myeclipse,(4)Tomcat主要目錄結(jié)構(gòu) *bin:存放啟動和關(guān)閉tomcat *conf:包含配置文件,比較重要的是

11、server.xml,這里可以設(shè)置端口號等 *work:存放jsp編譯后的java文件和.class文件 *webapp:存放部署文件 *lib:存放tomcat所需要的jar包 *logs:存放日志文件 友情提示:修改端口號,在conf/server.xml ,二、tomcat、jdk和myeclipse,2. MyEclipse MyEclipse是企業(yè)級工作平臺,可以用于開發(fā)java、j2ee程序設(shè)計,包括了完備的編碼、調(diào)試、測試和發(fā)布功能。 (1)設(shè)置jsp 文件的編碼格式 方法:window-preferences-myeclipse-files and editorsjsp,右側(cè)e

12、ncoding設(shè)置為utf-8(國際化通用編碼); (2)myeclipse與tomcat、jdk整合(將tomcat和jdk換成新裝的,不用myeclipse自帶的)思考題:為什么要換,二者區(qū)別在哪里? 方法: . window-preferences-myeclipseserverstomcattomcat6.x,然后指定tomcat所在路徑(特別強(qiáng)調(diào):單選框選中enable); . window-preferences-myeclipseserverstomcattomcat6.xjdk,然后指定jdk所在的路徑。最后,在window-preferencesjavainstalled j

13、res中選中新的jdk,可見myeclipse軟件本身也帶有支持mytomcat的jdk。,二、tomcat、jdk和myeclipse,(3)第一個jsp程序 .新建一個web項目 .部署調(diào)試:單擊部署按鈕,選擇要部署的項目名稱,然后指定tomcat服務(wù)器,最后啟動tomcat服務(wù)器(項目news會存放到C:Tomcat 6.0webapps); .在地址欄中: :8080/news/(注意項目名稱不要忘記寫了); 友情提示:如何做到默認(rèn)顯示當(dāng)前頁是index.jsp? 查看:WEB-INF/web.xml文件,內(nèi)部已經(jīng)配置好了,默認(rèn)首頁是index.jsp.,

14、二、tomcat、jdk和myeclipse,Jsp常用的內(nèi)置對象有out、request、response和session等,那么什么是內(nèi)置對象呢?內(nèi)置對象就是不用人為實例化,直接可以使用的對象(注:其實jsp文件編譯生成java文件時自動初始化了內(nèi)置對象),這里可能有些學(xué)生就會迷糊了,什么是對象?什么是實例化呢?我們要了解,java是面向?qū)ο缶幊痰恼Z言,那么其中涉及的重要概念如對象、類、實例之間到底是一種什么關(guān)系呢?概況的說:對象是個具體的東西,類是個抽象的東西,也即“類是對象的抽象,類的實例化就是對象”,比如說類user(name,age)是一個抽象的事務(wù),因為你不知道是姓名是什么,年齡

15、多大;而若將user實例化(new user)后則能賦值具體姓名如王一,年齡如20,這個就是對象 知識鏈接:java中兩個非常重要的類:javabean和servlet .javabean:定義了一個實體,設(shè)定變量和數(shù)值類型(比如user,name:string,age:int等),若要使用它必須實例化,即new它,以后將hibernate框架會詳細(xì)說的; . Servlet:接受瀏覽器輸入的數(shù)據(jù),進(jìn)行處理,然后通過out.println向客戶端輸出信息,不過由于servlet采用out對象向客戶端顯示信息比較麻煩,所以一般采用servlet處理數(shù)據(jù),用jsp技術(shù)顯示。(這點以后我會講到,如s

16、truts框架就是對servelt的封裝),三、jsp內(nèi)置對象:out、request、response、session,友情提示:怎么理解面向?qū)ο缶幊蹋∣OP,Object Oriented Programming)? 談及面向?qū)ο缶幊?,我們就會不由得想起另一個軟件開發(fā)方法面向過程編程,然后再對其進(jìn)行對比一下,這兩個概念也迷惑了很多初學(xué)者,其實如果明白它的工作原理就會發(fā)現(xiàn)他們之間很好區(qū)別的: .面向?qū)ο缶幊蹋簩︻惖牟僮?,一種將數(shù)據(jù)和處理數(shù)據(jù)的過程及函數(shù)封裝在一起的實體,然后對類進(jìn)行實例化(對象),然后操作,相比較容易些; .面向過程編程:直接操作過程和函數(shù),一步一步去實現(xiàn)程序開發(fā),相比較麻煩

17、; 目前,多數(shù)開發(fā)人員傾向使用面向?qū)ο缶幊趟枷耄蚴情_發(fā)過程簡單,可以省去很多過程中不需要知道的程序設(shè)計。但就想對比熟好熟不好,這個不能給出具體答案的,用處不一樣的,曾有人說過這樣的話“用高級語言開發(fā)高級程序不是高手,而采用機(jī)器語言如匯編開發(fā)高級程序才是高手”。,三、jsp內(nèi)置對象:out、request、response、session,1.Out對象(少用) (1)作用:在客戶端瀏覽器輸出數(shù)據(jù)結(jié)果信息。 (2)常用方法: . out.print():顯示各種數(shù)據(jù)類型不換行 . out.println():換行顯示各種數(shù)據(jù)類型 (3)實例: .); % .); % 友情提示:一是語句結(jié)尾處

18、必須有分號結(jié)束;二是jsp語句要放在內(nèi)。,三、jsp內(nèi)置對象:out、request、response、session,2. Request對象 (1)作用:用來獲取客戶端傳遞過來的數(shù)據(jù)。 (2)方法: . 通過form提交下一頁,獲取數(shù)據(jù)的方法: String name=request.getParameter(“name”); . 通過forward動作要素或include動作要素,實現(xiàn)跳轉(zhuǎn)或包含JSP頁面獲取數(shù)據(jù)的方法: String name=request.getAttribute(“name”); (3) 實例: .實例1:利用forward動作元素實現(xiàn)從一個頁面跳轉(zhuǎn)到另一個JSP

19、頁面,利用request的setAttribute()方法和getAttribute()方法設(shè)置和獲取數(shù)據(jù)。,三、jsp內(nèi)置對象:out、request、response、session,頁面1,sample1: ,三、jsp內(nèi)置對象:out、request、response、session,頁面2,sample2.jsp 知識鏈接:為什么要對request.getAttribute獲取變量值進(jìn)行強(qiáng)制轉(zhuǎn)換呢?因為request.getAttribute獲取變量值屬于object類型,而object可以指向任意數(shù)據(jù)類型的數(shù)據(jù),在編譯時不知道變量可能指向哪種數(shù)據(jù)類型。,三、jsp內(nèi)置對象:out、

20、request、response、session,.實例2:通過form提交下一頁或?傳遞變量,獲取數(shù)據(jù) 頁面sample3.jsp 用戶名: 年齡: 頁面sample4.jsp ,三、jsp內(nèi)置對象:out、request、response、session,知識鏈接: (1)從表單中獲取的值都是字符型,注意:數(shù)值字符轉(zhuǎn)換整形的方法:Integer.parseInt(); (2)解決中文亂碼問題,如果表單中輸入漢字,顯示亂碼應(yīng)該怎么處理呢? 解決方法:對所有數(shù)據(jù)進(jìn)行再編碼:ISO8895-1 String name=new String(request.getParameter(name).g

21、etBytes(iso8859-1); 注:這里使用new string而不是使用string轉(zhuǎn)換是因為getBytes生成的是byte數(shù)組,所以要利用new string方法將byte數(shù)組轉(zhuǎn)換為字符串。,三、jsp內(nèi)置對象:out、request、response、session,友情鏈接: (1)對比與表單轉(zhuǎn)向區(qū)別 利用實現(xiàn)的是轉(zhuǎn)向,url地址不變;而form轉(zhuǎn)向?qū)崿F(xiàn)的是重定向,url變了;這點將在以后講解框架時候講 (2)信息顯示除了用out對象外,還有另一種顯示方法(比較常見)。 可以寫為: name:,三、jsp內(nèi)置對象:out、request、response、session,3.

22、Response對象 response對象主要作用是實現(xiàn)重定向、設(shè)置頭信息: (1)重定向:response.sendRedirect(“url”); 友情提示:兩種跳轉(zhuǎn)的區(qū)別 (見:sample5.jsp和sample6.jsp) .地址欄不改變跳轉(zhuǎn)-服務(wù)器端跳轉(zhuǎn) .執(zhí)行到跳轉(zhuǎn)語 句后無條件立刻跳轉(zhuǎn)-之后的代碼不再被執(zhí)行 .使用forward時,request設(shè)置的屬性依然能夠保留在下一個頁面(setAttribute,直接用getAttribute可以獲取) .通過傳遞參數(shù),用request.getparameters接受 response.sendRedirect(url)(見:samp

23、le7.jsp和sample8.jsp) .地址欄改變跳轉(zhuǎn)-客戶端跳轉(zhuǎn) .所有代碼執(zhí)行完畢之后再跳轉(zhuǎn) .不能保存request屬性-地址改變了,客戶端跳轉(zhuǎn)了(必須實現(xiàn)變量傳遞,比如用?) .通過對url地址的重寫傳遞參數(shù)(可以利用?實現(xiàn)傳遞,用request.getparameters接受),三、jsp內(nèi)置對象:out、request、response、session,友情提示:使用response.redirect傳遞中文參數(shù)時,需要注意的兩個方面: (1)在傳值頁面,需要導(dǎo)入.*包,然后利用里面的URLEncoder.encode(str)方法將要傳遞的中文參數(shù)轉(zhuǎn)換為另一種形式的編碼。這樣

24、在url里面?zhèn)鬟f時就不會顯示為亂碼,而是%DB%FD%樣式的編碼,即16進(jìn)制數(shù),中間用%隔開。 (2)就是在讀取參數(shù)頁面將其轉(zhuǎn)碼為中文格式就好了 方法是new String(讀取的參數(shù).getBytes(“ISo-8859-1”),”utf-8”);然后用一個String 類型變量接收一下就能拿到傳過來的中文值。,三、jsp內(nèi)置對象:out、request、response、session,(2)設(shè)置頭信息: 最重要的一個應(yīng)用是:refresh:刷新 response.setHeader(“refresh”,“2;URL=login.jsp”) ;/此句作用是2秒后自動跳轉(zhuǎn)到login.jsp

25、頁面;同樣需要注意的是:如果傳遞中文參數(shù),注意寫法: URL=login.jsp?Name=“+.URLEncoder.encode(“中國”)。 友情提示:頭信息是指什么? 這里的頭信息主要是指http的頭信息,標(biāo)簽內(nèi)的信息,如某些標(biāo)簽實現(xiàn)的功能,如上例所示。 友情提示:也有個別?傳遞中文不需要編碼傳遞的,如: 超鏈接: 或javascript中window.location.href=sample9.jsp?name=中國;,三、jsp內(nèi)置對象:out、request、response、session,友情提示:問號傳遞變量參數(shù)書寫規(guī)則,字符串與變量之間連接使用+,多個變量之間的連接使用

26、.取得屬性:session.getAttribute(“變量”); 作用:使用session屬性設(shè)置能夠?qū)τ脩羰欠竦卿涀鞒鲵炞C。 范例:用戶在頁面login.jsp輸入用戶名admin,密碼是admin,則表示成功登錄,成功之后可以瀏覽頁面welcome.jsp,為了說明問題, 在login.jsp:實現(xiàn)表單、接受和判斷功能; 在welcome.jsp:要求用戶必須先登錄之后才能訪問,否則不能訪問。 友情提示: request.getParameter(“username”)!=null 在服務(wù)器端調(diào)試查看結(jié)果);,三、jsp內(nèi)置對象:out、request、response、session,

27、(4)用戶注銷:讓用戶的session失效 如果session失效,則保留在session的全部操作也失效。 方法:session.invalidate();手工操作 此外,如果session長時間不被使用(長時間不去操作某個程序),則也會自動失效。演示代碼如下: 注銷 Logout.jsp中 小結(jié):session信息是保存在服務(wù)器上,安全但占資源,所以盡量少使用session保存信息。,三、jsp內(nèi)置對象:out、request、response、session,1.程序要求: 用戶完成登錄功能:如果輸入用戶名是admin,密碼是admin,表示用戶為合法用戶,跳轉(zhuǎn)到成功登錄頁,否則表明用戶

28、名或密碼輸入錯誤,轉(zhuǎn)到失敗頁。(注意:成功頁必須是登錄用戶才能訪問) 2.頁面流程,四、利用jsp內(nèi)置對象實現(xiàn)簡單的登錄程序,Login.jsp,Login_judge.jsp,Login_success.jsp,Login_error.jsp,成功,失敗,判斷,3.分析 (1)login.jsp:輸入用戶名和密碼信息 (2)login_judge.jsp:接收信息,判斷信息,指向相應(yīng)頁面 (3)login_success.jsp:成功頁面,顯示歡迎用戶 (4)login_error.jsp:失敗頁面,做一個超鏈接能轉(zhuǎn)向到登錄頁 友情提示:equals和=的區(qū)別 比較字符串時必須使用equal

29、s,兩個變量之間的比較時,則使用= 友情提示:java的邏輯運(yùn)算符 與: /連接數(shù)據(jù)庫 String url=jdbc:sqlserver:/localhost:1433;DatabaseName=adminnews;/定義連接數(shù)據(jù)庫地址 Connection conn=DriverManager.getConnection(url,news,123456); 第三步:調(diào)試數(shù)據(jù)庫是否成功連接?如果頁面顯示空白說明連接成功。 友情提示: . 不要忘記將jdbc驅(qū)動sqljdbc4.jar拷貝到web-inf/lib目錄內(nèi); . 調(diào)試前要配置sql server的tcp/ip啟動,且設(shè)置ipall

30、的端口號是1433(見:sql server 配置管理器,抓圖演示),五、JDBC操作技術(shù),第四步:操作數(shù)據(jù)庫(CURD) .之一:增(C) String sql=insert into user_info(username,userpass) values(?,?); PreparedStatement pstmt=conn.prepareStatement(sql);/創(chuàng)建語句對象主要是使用兩個接口,一個是Statement,另一個是PreparedStatement,推薦使用后者。通過Connection對象實例化PreparedStatement pstmt.setString(1,a

31、dmin);/1代表第一個字段 pstmt.setString(2,admin);/2代表第二個字段 pstmt.executeUpdate(); % ,五、JDBC操作技術(shù),之二:刪(D) String sql=delete from user_info; PreparedStatement pstmt=conn.prepareStatement(sql); pstmt.executeUpdate(); % ,五、JDBC操作技術(shù),之三:改(U) String sql=update user_info set username=? where username=admin; Prepared

32、Statement pstmt=conn.prepareStatement(sql); pstmt.setString(1,admin1); pstmt.executeUpdate(); % ,五、JDBC操作技術(shù),之四:查(R)-普通查 String sql=select * from user_info; PreparedStatement pstmt=conn.prepareStatement(sql); ResultSet rs=pstmt.executeQuery();/返回ResultSet實例對象 % ,五、JDBC操作技術(shù),之四:查(R)-帶游標(biāo),分頁顯示 String sql

33、=select * from user_info; Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rs=stmt.executeQuery(sql); 見標(biāo)注 注:ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE,加上這個能夠使resultset對象中的光標(biāo)能夠上下移動。,五、JDBC操作技術(shù),知識鏈接:從數(shù)據(jù)庫中讀取數(shù)據(jù)的方法: 利用ResultSet接口中的

34、get*()方法可以取出數(shù)據(jù),按類型取,如getInt()、getString()、getFloat()等。 友情提示1:一般除了增外,實現(xiàn)刪、改、查,都是依據(jù)條件實現(xiàn)的,而條件中多數(shù)是以id為多,因為在數(shù)據(jù)庫表中id是唯一的,在以后的實例中會詳細(xì)說的。 友情提示2:在增、改操作中,為什么使用?傳值,而不是直接傳值呢?原因是這樣可以防止輸入值中含有單引號出現(xiàn)的異常,同時也是我們不使用statement創(chuàng)建語句對象的原因。見:connectdb2.jsp,五、JDBC操作技術(shù),1.程序要求: 用戶完成登錄功能:在表單中輸入用戶名和密碼,如果數(shù)據(jù)庫中存在,跳轉(zhuǎn)到成功登錄頁,否則表明用戶名或密碼輸入

35、錯誤,轉(zhuǎn)到失敗頁。(注意:成功頁必須是登錄用戶才能訪問) 2.頁面流程,五、使用JSP+JDBC完成用戶登陸程序,Login.jsp,Login_judge.jsp,Login_success.jsp,Login_error.jsp,存在,不存在,與數(shù)據(jù)庫判斷,3.分析 (1)login.jsp:輸入用戶名和密碼信息 (2)login_judge.jsp:接收信息,與數(shù)據(jù)庫中信息進(jìn)行判斷,指向相應(yīng)頁面 (3)login_success.jsp:成功頁面,顯示歡迎用戶 (4)login_error.jsp:失敗頁面,做一個超鏈接能轉(zhuǎn)向到登錄頁 友情提示:復(fù)制一個項目,除了更改項目名字,最重要的是

36、不要忘記更改項目的屬性名字。(項目右鍵propertymyeclipseweb,即可更改了)。 .不要忘記jdbc驅(qū)動jar包考入lib中了,五、使用JSP+JDBC完成用戶登陸程序,知識鏈接:字符編碼問題-解決中文顯示亂碼問題 為了解決中文亂碼問題,我們以前采取的編碼的方式是:new String(request.getParameter().getBytes(“iso8859-1”)的方法,本實例中又可以采用request.setCharacterEncoding(“GB18030”);去設(shè)定頁面的中文編碼方式; 不過上述兩種方法都存在一個問題,就是每個接受信息頁面都要加上字符編碼代碼,那

37、么能否實現(xiàn)設(shè)計一個方案,只寫一次解決所有頁面的中文亂碼問題呢? 答案:自制一個過濾器,filter 實現(xiàn)filter方案:兩步 第一步需要在包內(nèi)建一個類實現(xiàn)接口filter;第二步:需要在web.xml中將該類配置上; 代碼:見注解,五、使用JSP+JDBC完成用戶登陸程序,新聞系統(tǒng)總體設(shè)計 新聞系統(tǒng)數(shù)據(jù)庫設(shè)計 新聞系統(tǒng)基本框架 各功能模塊的設(shè)計與實現(xiàn) 部署、發(fā)布和打包新聞系統(tǒng),六、實例:新聞系統(tǒng),1.新聞系統(tǒng)總體設(shè)計 越來越多的B/S模式的數(shù)據(jù)庫應(yīng)用系統(tǒng),如電子商務(wù)、企業(yè)、學(xué)校等門戶網(wǎng)站都有一個非常重要的子系統(tǒng)-新聞系統(tǒng),功能及模塊圖如下:,六、實例:新聞系統(tǒng),系統(tǒng),普通用戶,管理員,瀏覽新

38、聞,瀏覽新聞,添加新聞,刪除新聞,修改新聞,登錄驗證,2.新聞系統(tǒng)數(shù)據(jù)庫設(shè)計 對于數(shù)據(jù)庫應(yīng)用系統(tǒng)來說,設(shè)計數(shù)據(jù)庫是非常重要的,對于我們現(xiàn)在雖然采用面向?qū)ο笳Z言卻不是實現(xiàn)面向?qū)ο缶幊虂碚f,一般先設(shè)計系統(tǒng)數(shù)據(jù)庫,然后才開始設(shè)計應(yīng)用程序。 (1)數(shù)據(jù)庫需求分析 根據(jù)功能需求,新聞系統(tǒng)需要以下數(shù)據(jù)項: 管理員:登錄賬號、登錄密碼 新聞:標(biāo)題、內(nèi)容、發(fā)布時間,六、實例:新聞系統(tǒng),(2)數(shù)據(jù)表設(shè)計 本系統(tǒng)共設(shè)計兩個表,分別為新聞表和管理員表。其結(jié)構(gòu)如下所示:,六、實例:新聞系統(tǒng),六、實例:新聞系統(tǒng),3.新聞系統(tǒng)基本框架 新聞管理系統(tǒng)的功能是用戶可以通過瀏覽器查看新聞,管理員也是通過瀏覽器發(fā)布和管理新聞。,

39、六、實例:新聞系統(tǒng),用戶,管理員登錄 login.jsp,chklogin.jsp,公共模塊 Connectdb1.jsp Connectdb2.jsp Check.jsp,管理界面 adminmain.jsp,發(fā)布新聞 Addnews.jsp,刪除新聞 Delnews.jsp,修改新聞 Updatenews.jsp,FileUploadServletupdate.java,瀏覽新聞主頁面 Index.jsp(顯示5條) Newmore.jsp(顯示所有),新聞詳細(xì)頁面 Newsinfo.jsp,通過,Loginerror.jsp,未通過,Servlet(上傳附件) FileUploadSer

40、vlet.java,4.各功能模塊的設(shè)計與實現(xiàn) 規(guī)劃完系統(tǒng)的基本框架,下面就開始設(shè)計與實現(xiàn)每個子模塊。首先是公共模塊,因為公共模塊是其他模塊都需要的。然后可以按照系統(tǒng)操作的流程,逐步設(shè)計與實現(xiàn)其他子模塊。 (1)公共模塊設(shè)計與實現(xiàn) 公共模塊是將系統(tǒng)其他頁面中重復(fù)使用的代碼集合起來,成為一個或多個文件,這樣,要使用重復(fù)的代碼時,只需要將公共模塊包含進(jìn)來就可以了。這樣做的最大好處是減少JSP文件的代碼,使JSP文件的程序腳本清晰簡潔。 connectdb1.jsp 主要用來連接數(shù)據(jù)庫以及聲明相關(guān)變量,注:不用于分頁顯示,程序見注解。,六、實例:新聞系統(tǒng),connectdb2.jsp 主要用來連接數(shù)

41、據(jù)庫以及聲明相關(guān)變量,注:用于分頁顯示,程序見注解。 check.jsp 用來判斷是否以系統(tǒng)管理員的身份登錄系統(tǒng),防止非法用戶登錄到系統(tǒng)管理后臺對系統(tǒng)進(jìn)行破壞,其程序代碼見注解。 友情提示:如何導(dǎo)入公共模塊文件? 采用操作標(biāo)記將公共文件導(dǎo)入。,六、實例:新聞系統(tǒng),(2)管理員登錄系統(tǒng) 新聞系統(tǒng)的后臺管理用來發(fā)布、修改、刪除新聞。擁有相應(yīng)權(quán)限的管理員才能管理系統(tǒng),所以新聞系統(tǒng)需要管理員登錄系統(tǒng)。登錄系統(tǒng)主要包括兩個JSP文件:“l(fā)ogin.jsp”和“chklogin.jsp”。 login.jsp 主要用來讓管理員輸入用戶名和密碼。程序見注解。 chklogin.jsp 管理員輸入用戶名和密碼

42、后,單擊【登錄】按鈕,就會提交到“chklogin.jsp”頁面。 如果表user_info中沒有該用戶或密碼輸入錯誤,則使用response.sendRedirect()轉(zhuǎn)入(重定向)到“l(fā)oginerror.jsp”;如果該管理員存在,則設(shè)置會話對象的變量“flag”值為”ok”,表示該管理員已經(jīng)登錄,并重定向到系統(tǒng)管理主頁面“main.jsp”。程序見注解。,六、實例:新聞系統(tǒng),(3)管理界面 管理主頁面“adminmain.jsp” 管理主頁面“adminmain.jsp”是系統(tǒng)后臺管理的中心,通過該頁面可以發(fā)布、修改、刪除新聞。程序代碼見注解。 友情提示:分頁顯示信息,所以創(chuàng)建語句對

43、象要用Statement而不是PreparedStatement,六、實例:新聞系統(tǒng),發(fā)布新聞 發(fā)布新聞模塊由兩個文件組成:“addnews.jsp”和“FileUploadServlet.java”。用戶在“addnews.jsp”頁面中添加新聞,然后提交表單,通過“FileUploadServlet.java”servlet將添加的新聞保存到數(shù)據(jù)庫的數(shù)據(jù)表news_info中。程序見注解。,六、實例:新聞系統(tǒng),友情提示:添加新聞頁面中,增加了上傳圖片功能 在java圖片上傳中采用開源組件common fileload程序,實現(xiàn)上傳需要兩個jar包, commons-fileupload-1.2.1.jar和commons-io-1.4.jar 知識鏈接:再次理解servlet Servlet是使用Java Servlet應(yīng)用程序設(shè)計接口編寫的Java程序, 運(yùn)行在服務(wù)器端。它可以通過doget()方法或dopost()方法接收來自客戶端瀏覽器的Htt

溫馨提示

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

最新文檔

評論

0/150

提交評論