《JSP復(fù)習(xí)綱要》word版_第1頁(yè)
《JSP復(fù)習(xí)綱要》word版_第2頁(yè)
《JSP復(fù)習(xí)綱要》word版_第3頁(yè)
《JSP復(fù)習(xí)綱要》word版_第4頁(yè)
《JSP復(fù)習(xí)綱要》word版_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Web程序設(shè)計(jì)復(fù)習(xí)資料 JSP概述JSP(Java Server Page)由Sun Microsystems公司倡導(dǎo)、許多公司參與建立的一種動(dòng)態(tài)網(wǎng)絡(luò)技術(shù)標(biāo)準(zhǔn)。由Java語(yǔ)言作為腳本語(yǔ)言。為整個(gè)服務(wù)器端Java單元提供了一個(gè)接口服務(wù)于HTTP應(yīng)用程序。Java語(yǔ)言最大的特點(diǎn)是與運(yùn)行平臺(tái)無(wú)關(guān);面向?qū)ο蟆⒏甙踩院徒研?、分布式、多線程Web簡(jiǎn)介:Web定義了Web客戶端和Web服務(wù)端如何通信HTTP簡(jiǎn)介:Hyper Text Transfer Protocol,超文本傳輸協(xié)議。用于傳輸超文本標(biāo)記語(yǔ)言(Hyper Text Markup Language HTML)編寫(xiě)的網(wǎng)頁(yè)文件。具有支持B/S結(jié)

2、構(gòu),簡(jiǎn)單快速,靈活,無(wú)連接,無(wú)狀態(tài)的特點(diǎn)。HTMLHTTP瀏覽器Web服務(wù)器數(shù)據(jù)庫(kù)B/S結(jié)構(gòu):(Browser/Server)B/S結(jié)構(gòu)是三層體系結(jié)構(gòu),B/S結(jié)構(gòu)要求客戶端只需要安裝一個(gè)瀏覽器(Browser),客戶端通過(guò)瀏覽器將請(qǐng)求發(fā)送給Web服務(wù)器,Web服務(wù)器負(fù)責(zé)與后端數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)通信。C/S結(jié)構(gòu):C/S是Client/Server的縮寫(xiě),C/S結(jié)構(gòu)是二層結(jié)構(gòu)平臺(tái)模式。C/S結(jié)構(gòu)要求客戶端要安裝指定的軟件,客戶端負(fù)責(zé)執(zhí)行前端的數(shù)據(jù)處理,服務(wù)端進(jìn)行后端的服務(wù)處理。目前大多數(shù)的網(wǎng)絡(luò)游戲都是采用C/S結(jié)構(gòu)。C/S結(jié)構(gòu)如圖所示。B/S結(jié)構(gòu)與C/S結(jié)構(gòu)比較比較項(xiàng)B/SC/S服務(wù)器負(fù)荷量大小

3、維護(hù)費(fèi)用小大升級(jí)方便性容易困難選擇性多少安全性高低JSP、ASP、PHP等語(yǔ)言都是基于B/S結(jié)構(gòu)開(kāi)發(fā)系統(tǒng)軟件的技術(shù)。B/S為主流網(wǎng)站的構(gòu)成網(wǎng)站結(jié)構(gòu)一般分為3層:用戶界面交互層、應(yīng)用程序?qū)印?shù)據(jù)庫(kù)層用戶界面交互層通常采用JSP或者HTML來(lái)創(chuàng)建界面,利用JavaScript和CSS來(lái)豐富界面效果。應(yīng)用程序?qū)又饕褂肑ava語(yǔ)言來(lái)處理各種不同的業(yè)務(wù)需求,在數(shù)據(jù)庫(kù)層可以通過(guò)一些存儲(chǔ)過(guò)程來(lái)處理數(shù)據(jù)的存儲(chǔ)和檢索。Servlet和JSP技術(shù)Servlet和JSP技術(shù)都是屬于Web層的技術(shù)。這兩項(xiàng)技術(shù)都可以解決動(dòng)態(tài)網(wǎng)頁(yè)的生成問(wèn)題,但最好的方式是取兩項(xiàng)技術(shù)各自的長(zhǎng)處:JSP負(fù)責(zé)網(wǎng)頁(yè)表現(xiàn)設(shè)計(jì),Servlet負(fù)責(zé)

4、跳轉(zhuǎn)控制。每一個(gè)JSP文件在執(zhí)行之前都會(huì)被轉(zhuǎn)化成Servlet文件。Servlet簡(jiǎn)介Servlet是用Java編寫(xiě)的服務(wù)端程序,它與協(xié)議和平臺(tái)無(wú)關(guān)。Servlet運(yùn)行在Java Web Server上,并采用了請(qǐng)求響應(yīng)的模式提供服務(wù)。Servlet的生命周期:Servlet的生命周期可以分為4個(gè)階段:載入、初始化init()、執(zhí)行 service()-doGet()或doPost()、刪除 destory(); JSP簡(jiǎn)介在傳統(tǒng)的網(wǎng)頁(yè)文件HTML中加入Java程序片段和JSP標(biāo)記,就構(gòu)成了JSP網(wǎng)頁(yè)。第一個(gè)Servletsuper.init() /初始化方法;super.destory()

5、/銷(xiāo)毀時(shí)調(diào)用的方法;doGet和doPost是常用的處理請(qǐng)求方式:比較如下:doGetdoPost請(qǐng)求提交方式通過(guò)URL地址提交通過(guò)表單提交提交長(zhǎng)度受限制不受安全性低相對(duì)doGet安全性稍好些第一個(gè)JSP程序JSP頁(yè)面主要由HTML和Java代碼構(gòu)成。Java代碼是通過(guò)符號(hào)加入到HTML代碼中間的。. 其他 HTML 語(yǔ)言 其他 HTML 語(yǔ)言 JSP指令,描述頁(yè)面基本信息。由“”結(jié)束。JSP聲明,相當(dāng)于Java類中的變量聲明。由“”結(jié)束。JSP表達(dá)式,用于將jsp生成的數(shù)值嵌入HTML中?!啊?。位于“”之間的代碼塊是描述JSP頁(yè)面邏輯處理的Java代碼。習(xí)題1-8:簡(jiǎn)述JSP技術(shù)和Servl

6、et技術(shù)的區(qū)別和聯(lián)系JSP第一次運(yùn)行的時(shí)候會(huì)編譯成servlet。jsp是web開(kāi)發(fā)技術(shù),servelt是服務(wù)器端運(yùn)用的小程序,我們?cè)L問(wèn)一個(gè)jsp頁(yè)面時(shí),服務(wù)器會(huì)將這個(gè)jsp頁(yè)面轉(zhuǎn)變成servelt小程序運(yùn)行得到結(jié)果后,反饋給用戶端的瀏覽器。servlet相當(dāng)于一個(gè)控制層再去調(diào)用相應(yīng)的javabean處理數(shù)據(jù),最后把結(jié)果返回給jsp。servlet主要用于轉(zhuǎn)向,將請(qǐng)求轉(zhuǎn)向到相應(yīng)的jsp頁(yè)面。 Jsp更多的是進(jìn)行頁(yè)面顯示,Servlet更多的是處理業(yè)務(wù),即jsp是頁(yè)面,servlet是實(shí)現(xiàn)jsp的方法。 實(shí)驗(yàn)三、1+1=第2章 JSP實(shí)現(xiàn)網(wǎng)站計(jì)數(shù)器JSP中讀取文本文件內(nèi)容JSP中讀取文本文件內(nèi)容

7、主要是通過(guò)Java的讀取文件類,由JSP通過(guò)瀏覽器顯示結(jié)果。這樣的文本讀取需要使用JDK中的BufferedReader類和FileReader類。BufferedReader類用來(lái)從字符輸入流中讀取文本并將字符存入緩沖區(qū)以便能提供字符、數(shù)組的高效讀取。常用方法如下:方法名說(shuō)明Int read(char cbuf)讀字符放入數(shù)組中,返回所讀的字符Int read(char cbuf,int offset,int legnth)讀字符放入數(shù)組中的指定位置,返回所讀的字符數(shù)String readLine()讀取一文本行Void close()關(guān)閉流FileReader類用來(lái)讀取字符文件,常用方法如

8、下:方法名說(shuō)明Int read()讀一個(gè)字符作為方法的返回值。如果返回值-1,表示文件結(jié)束Int read(char cbuf,int offset,int length)讀字符放入數(shù)組中的指定位置,返回所讀的字符數(shù)Void close()關(guān)閉流JSP向文本文件中寫(xiě)入內(nèi)容JSP向文本文件中寫(xiě)入內(nèi)容主要是通過(guò)Java寫(xiě)入文件類。這樣的文本寫(xiě)入需要使用JDK中的FileOutputStream類和PrintWriter類。FileOutputStream類是用來(lái)向File或FileDescriptor輸出數(shù)據(jù)的一個(gè)輸出流。完整網(wǎng)站計(jì)數(shù)器的實(shí)現(xiàn)網(wǎng)站計(jì)數(shù)器 您是第位訪問(wèn)者。/也可以寫(xiě)成 本章習(xí)題2-5

9、:在動(dòng)態(tài)Web項(xiàng)目中創(chuàng)建名為test的jsp文件,在test.jsp中聲明變量String content=你好,小明!,然后在test.jsp中輸出content的內(nèi)容。關(guān)鍵代碼: 2-6:利用JSP技術(shù)實(shí)現(xiàn)在網(wǎng)頁(yè)中顯示當(dāng)前系統(tǒng)時(shí)間。關(guān)鍵代碼:或:本章實(shí)驗(yàn):一、向文本文件中寫(xiě)入“Java 你好”String record=“Java 你好”;String FilePath=“c:count.txt” ; PrintWriter pw=null; pw=new PrintWriter(new FileOutputStream(FilePath); pw.write(record);pw.clo

10、se();讀取文本文件中的內(nèi)容并在頁(yè)面中顯示String record=null;String FilePath=“c:count.txt ; BufferedReader br=null;br=new BufferedReader(new FileReader(FilePath); record=br.readLine();out.println(record);pw.close();向已有數(shù)據(jù)的文本中追加數(shù)據(jù)(1)從文本文件中讀取已存在內(nèi)容(2)record+=“ 不錯(cuò)的技術(shù)”; /追加方法(3)處理后保存到文本文件參考代碼如下:向已有數(shù)據(jù)的文本追加數(shù)據(jù)顯示內(nèi)容為:.JSP實(shí)現(xiàn)用戶注冊(cè)HT

11、ML表單元素回顧Form表單元素名稱說(shuō)明所屬標(biāo)簽所屬屬性Name輸入域的名稱Input,textarea,select無(wú)Value輸入域的值Input,textarea 無(wú)Text建立一個(gè)單行輸入文本框inputTypePassword同“text”,星號(hào)InputTypeCheckbox建立一個(gè)復(fù)選框InputTypeRadio建立一個(gè)單選框InputTypeSubmit建立一個(gè)提交按鈕InputTypeReset建立復(fù)位按鈕InputTypeHidden建立一個(gè)不被用戶代理器所渲染的元素,即JSP頁(yè)面對(duì)用戶不可見(jiàn)InputTypeTextarea建立一個(gè)多行輸入文本域Textarea無(wú)Se

12、lect建立一個(gè)列表選擇Select無(wú)用法示例:電腦網(wǎng)絡(luò)影視娛樂(lè)男女本科??艼SP處理請(qǐng)求數(shù)據(jù)JSP對(duì)象作用域:application、session、page、request內(nèi)建對(duì)象:out、applicationout.print(String name)和out.println(String name)void setAttribute(String name,Object value)和void getAttribute(String name)前者用于以鍵/值的方式保存對(duì)象到application對(duì)象中;后者根據(jù)名稱去攻取application對(duì)象中的值。request對(duì)象處理用戶請(qǐng)

13、求信息request對(duì)象實(shí)現(xiàn)的是javax.servlet.http.HttpServletRequest接口,表示客戶端對(duì)網(wǎng)頁(yè)的請(qǐng)求,并使用HTTP協(xié)議處理客戶端的請(qǐng)求。request對(duì)象的常用方法有String getParameter(String name),根據(jù)頁(yè)面表單組件名稱獲取請(qǐng)求頁(yè)面提交數(shù)據(jù),返回值為String類型,參數(shù)與請(qǐng)求頁(yè)面標(biāo)簽內(nèi)的“name”值相對(duì)應(yīng)。例如,String name=(String)request.getParameter(username),表示把“username”(請(qǐng)求頁(yè)面的值)賦給“name”(本頁(yè)面中的值)。String getParamete

14、rValues(String name),用來(lái)獲取頁(yè)面請(qǐng)求中一個(gè)表單組件對(duì)應(yīng)多個(gè)值時(shí)的用戶請(qǐng)求數(shù)據(jù),返回值為String類型的數(shù)組,同樣,參數(shù)與請(qǐng)求頁(yè)面標(biāo)簽內(nèi)的“name”值相對(duì)應(yīng),注意,這個(gè)“name”在請(qǐng)求頁(yè)面要對(duì)應(yīng)多個(gè)值,如String channels=request.getParameterValues(channel)。response對(duì)象處理用戶請(qǐng)求響應(yīng)response對(duì)象實(shí)現(xiàn)的同樣是javax.servlet.http.HttpServletRequest接口,用于處理JSP生成的響應(yīng)并將響應(yīng)發(fā)送給客戶端,同樣的也是通過(guò)HTTP將響應(yīng)發(fā)送給客戶端。response對(duì)象的常用方法

15、有void setContentType(String name),設(shè)置作為響應(yīng)生成內(nèi)容的類型和字符編碼,無(wú)返回值,“name”為類型和字符編碼,如response.setContentType(text/html;charset=GBK),其中“charset”是字符編碼;void sendRedirect(String name),發(fā)送一個(gè)響應(yīng)給瀏覽器,指示其應(yīng)請(qǐng)求另一個(gè)URL,無(wú)返回值,“name”為要請(qǐng)求的URL,如response.sendRedirect(response2.jsp)。response.setIntHeader(Refresh,10)/網(wǎng)頁(yè)10秒刷新一次respon

16、se.setIntHeader(Refresh,10;URL=)/刷新跳轉(zhuǎn)字符轉(zhuǎn)換存儲(chǔ)用戶信息到數(shù)據(jù)庫(kù)創(chuàng)建JDBC連接JDBC是一種為常用數(shù)據(jù)庫(kù)提供無(wú)縫連接的技術(shù),是一種用于執(zhí)行SQL的Java API,它由一組用Java語(yǔ)言編寫(xiě)的類和接口組成。JDBC為工具/數(shù)據(jù)庫(kù)開(kāi)發(fā)提供了一個(gè)標(biāo)準(zhǔn)的API,使它們能用Java API來(lái)編寫(xiě)數(shù)據(jù)庫(kù)應(yīng)用程序。ODBC(Open DataBase Connectivity)稱為開(kāi)放式數(shù)據(jù)庫(kù)互連技術(shù),是由Microsoft公司倡導(dǎo)并得到業(yè)界普遍響應(yīng)的一種數(shù)據(jù)庫(kù)連接技術(shù)。JDBC是由Sun公司制定的,JDBC不是ODBC規(guī)則派生的,JDBC完全用Java編寫(xiě),而OD

17、BC是C語(yǔ)言接口。但是JDBC和ODBC都是基于X/OPENSQL的命令層接口(CLI),相同的概念性基礎(chǔ)使API工作進(jìn)展更快,使API的接受更加容易。Sun公司提供了將JDBC變?yōu)镺DBC的JDBC-ODBC橋,這個(gè)用本地方法完成的版本雖然小但很有效。JDBC的4種驅(qū)動(dòng)模式:JDBC-ODBC橋、本地接口與Java程序相結(jié)合、面向數(shù)據(jù)庫(kù)中間件、直接連接JDBC常用接口Driver :Class.forName(sun.jdbc.odbc.JdbcOdbcDriver)/用于加載JDBC-ODBC橋驅(qū)動(dòng)程序;使用前導(dǎo)入import java.sql.*DriverManager:JDBC管理層

18、,作用于用戶和驅(qū)動(dòng)程序之間Connection:代表與數(shù)據(jù)庫(kù)的連接,即已經(jīng)加載的Driver和數(shù)據(jù)庫(kù)之間建立連接例:Connection conn=DriverManager.getConnection(jdbc:odbc:DBname,loginName,password);Statement:用于將SQL語(yǔ)句發(fā)送到數(shù)據(jù)庫(kù)中。掌握Statement和PreparedStatement對(duì)象的使用;及SQL執(zhí)行方法:ResultSet executeQuery(String sql)、int executeUpdate(String sql)、Boolean execute(String sql

19、)。Statement stmt=conn.createStatement();/由數(shù)據(jù)庫(kù)連接對(duì)象conn生成數(shù)據(jù)庫(kù)語(yǔ)句對(duì)象stmtResultSet:包含符合SQL語(yǔ)句條件的所有行,即結(jié)果集。掌握next()方法。格式一:執(zhí)行基本SQL語(yǔ)句 Class.forName(JDBC驅(qū)動(dòng)程序);Connection conn=DriverManager.getConnection(相應(yīng)JDBC驅(qū)動(dòng)程序的連接串);Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery(“SQL語(yǔ)句);/如果是數(shù)據(jù)查詢stmt.exec

20、uteUpdate(SQL語(yǔ)句);/如果是數(shù)據(jù)操作格式二:執(zhí)行帶參數(shù)的SQL語(yǔ)句 Class.forName(JDBC驅(qū)動(dòng)程序);Connection conn=DriverManager.getConnection(相應(yīng)JDBC驅(qū)動(dòng)程序的連接串);PreparedStatement stmt = connect.PreparedStatement (帶參數(shù)的SQL語(yǔ)句);stmt.setInt(設(shè)置參數(shù)的值);ResultSet rs = stmt.executeQuery(); /如果是數(shù)據(jù)查詢stmt.executeUpdate(); /如果是數(shù)據(jù)操作完整用戶注冊(cè)實(shí)現(xiàn):(本章實(shí)驗(yàn)內(nèi)容)

21、用戶注冊(cè) 請(qǐng)完成以下表格 姓名: 請(qǐng)?jiān)诖颂幪顚?xiě)姓名,字符最長(zhǎng)為4個(gè)漢字,或8個(gè)英文字母。 密碼: 姓別: 男女 電子郵箱地址: 職業(yè): 傳播/媒體IT/互聯(lián)網(wǎng)銷(xiāo)售/市場(chǎng)學(xué)生其它 個(gè)人愛(ài)好: 電腦網(wǎng)絡(luò) 影視娛樂(lè) 棋牌娛樂(lè) 讀書(shū)讀報(bào) 美酒佳肴 繪畫(huà)書(shū)法 在此選擇興趣愛(ài)好,可以選擇一個(gè)以上選項(xiàng) 留言: 填寫(xiě)完成后請(qǐng)點(diǎn)擊下面的提交按鈕提交 /信息檢查及向數(shù)據(jù)庫(kù)中添加信息頁(yè)面check.jsp驗(yàn)證并提交信息頁(yè)面 % /獲取表單數(shù)據(jù) String name=(String)request.getParameter(name);String password=(String)request.getParam

22、eter(password);String sex=(String)request.getParameter(sex);String mail=(String)request.getParameter(email);String pro=(String)request.getParameter(pro); String lover=(String)request.getParameterValues(lover);String line=(String)request.getParameter(line);String strLover=;for(int i=0;i/以下是request對(duì)象的

23、使用,獲取用戶注冊(cè)及其它信息注冊(cè)信息 % String name=(String)request.getParameter(name);String password=(String)request.getParameter(password);String sex=(String)request.getParameter(sex);String mail=(String)request.getParameter(email);String pro=(String)request.getParameter(pro); String lover=(String)request.getParame

24、terValues(lover);String line=(String)request.getParameter(line);String strLover=;String method=(String)request.getMethod(); /得到客戶端向服務(wù)器傳送數(shù)據(jù)的方式Integer cport=(Integer)request.getRemotePort();/得到客戶端口 Integer sport=(Integer)request.getServerPort();/得到服務(wù)器端口String servername=(String)request.getServerName()

25、;/得到服務(wù)器名稱StringBuffer curl=(StringBuffer)request.getRequestURL();/得到請(qǐng)求的客戶端地址for(int i=0;i請(qǐng)牢記您的注冊(cè)信息: 用戶名: 密碼: 性別: 電子郵件: 職業(yè): 個(gè)人愛(ài)好: 留言: 您的請(qǐng)求信息: 傳送數(shù)據(jù)方式為: 客戶端口: 服務(wù)哭端口: 服務(wù)器名稱: 請(qǐng)求客戶端地址:本章習(xí)題:JSP的9個(gè)內(nèi)建對(duì)象:pageContext、 request 、response 、session、 application、 out、 config、 page 、exception過(guò)濾器是 特殊的ServletJSP與Serve

26、let實(shí)現(xiàn)用戶登錄JSP是將邏輯混合到顯示中,Servlert是將顯示混合到邏輯中,即JSP比較適合處理顯示的部分,而不善于處理邏輯,Servlet則恰恰相反。通俗地講,就是JSP向HTML中嵌入Java代碼,Servlet是向Java代碼中寫(xiě)入HTML元素。實(shí)現(xiàn)用戶登錄頁(yè)面:關(guān)鍵在于form表單中的action屬性設(shè)置“servlet/Login”,以及Web.xml中的配置:Servlet中調(diào)用JDBC進(jìn)行用戶合法性驗(yàn)證當(dāng)用戶提交完登錄信息后,由Servlet處理請(qǐng)求,所以form表單提交的路徑也要配成Servlet能識(shí)別的路徑。在Servlet中跳轉(zhuǎn)的請(qǐng)求都要在web.xml中描述后才能

27、生效,否則系統(tǒng)將找不到請(qǐng)求資源。 Login com.jsp.servlet.LoginServlet中的4種常用方法:方法名稱說(shuō)明doGet()用來(lái)處理HTTP的GET請(qǐng)求。doPost()用來(lái)處理HTTP的POST請(qǐng)求。init()當(dāng)Servlet被加載后執(zhí)行一些初始化工作destory()卸載Servlet的方法。如下Login.java參考代碼:import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.h

28、ttp.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.sql.*;import javax.servlet.http.HttpSession;public class Login extends HttpServlet private static final long serialVersionUID = 1L; public Login() super(); /* * init初始化方法 */public v

29、oid init(ServletConfig config) throws ServletExceptiontry Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException e) e.printStackTrace(); /* * see Servlet#destroy()方法 */public void destroy() super.destroy();protected void doGet(HttpServletRequest request, HttpServletResponse respo

30、nse) throws ServletException, IOException / TODO Auto-generated method stubprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExceptionString username=(String)request.getParameter(username);/獲取用戶名String password=(String)request.getParameter(pas

31、sword);/獲取密碼HttpSession sessionn=request.getSession();/獲得session try Connection conn=DriverManager.getConnection(jdbc:odbc:userdb,sa,);ResultSet rs=conn.prepareStatement(select count(*) from users where username=+username+ and password=+password+).executeQuery(); if (rs.next() /結(jié)果集判斷 if(rs.getInt(1)

32、=1) sessionn.setAttribute(message,用戶驗(yàn)證正確,登錄成功!); sessionn.setAttribute(username,username); sessionn.setAttribute(password,password); request.getRequestDispatcher(success.jsp).forward(request, response); else sessionn.setAttribute(message,用戶驗(yàn)證失敗,請(qǐng)檢查登錄信息!); sessionn.setAttribute(username,username); se

33、ssionn.setAttribute(password,password); request.getRequestDispatcher(error.jsp).forward(request, response); catch (Exception e)e.printStackTrace(); Servlet實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)使用Servlet實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的方法有兩種:一種是使用response.sendRedirect()進(jìn)行重定位;一種是使用上一小節(jié)中的request.getRequestDispatchetr(URL).forward(request,response)方法。使用respons

34、e.sendRedirect()方法只能在Servlet寫(xiě)的頁(yè)面間進(jìn)行跳轉(zhuǎn),即Servlet的Java類中。實(shí)現(xiàn)代碼如下:/regsiter.javapackage com.jsp.servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRespo

35、nse;import javax.servlet.http.HttpSession;/繼承和接口的實(shí)現(xiàn)public class register extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet public register() super(); public void destroy() super.destroy(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Ser

36、vletException, IOException / TODO Auto-generated method stubHttpSession session = request.getSession();Date date = new Date(); session.setAttribute(time1,date); String s = (String)session.getAttribute(timeout);response.setContentType(text/html;charset=gb2312);PrintWriter out = response.getWriter();o

37、ut.println();out.println();out.println( A Servlet);out.println( ); if(s=roll) out.print(超出規(guī)定時(shí)間,請(qǐng)重新填寫(xiě)!);out.print();out.print(請(qǐng)輸入姓名:);out.println();out.print(請(qǐng)輸入密碼:);out.print();out.print(出生年月:);out.println();out.print(真實(shí)姓名:);out.println();out.print(電子郵箱:);out.println();out.print(地址:);out.println();o

38、ut.print();out.println( );out.println();out.flush();out.close(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException public void init() throws ServletException / Put your code here/check.java代碼:package com.jsp.servlet;import java.io.IO

39、Exception;import java.io.PrintWriter;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession; public class check extends javax.servlet.http.HttpServlet implements java

40、x.servlet.Servlet public check() super(); public void destroy() super.destroy(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException HttpSession session = request.getSession();Date date = new Date(); long time2 = date.getTime(); Date da

41、te1 = (Date)session.getAttribute(time1); long time3 = date1.getTime();String user = (String)request.getParameter(username);String pass = (String)request.getParameter(password);String birth = (String)request.getParameter(birthday);String real = (String)request.getParameter(realname);String em = (Stri

42、ng)request.getParameter(email);String addr = (String)request.getParameter(address);session.setAttribute(timeout,roll);response.setContentType(text/html;charset=gb2312);if(time2-time330000)response.sendRedirect(http:/localhost:8081/FourGoto/servlet/register);elsePrintWriter out = response.getWriter()

43、;out.println();out.println();out.println( A Servlet);out.println( );out.print(您的注冊(cè)信息為);out.println(用戶名:+user+密碼:+pass+出生年月:+birth+真實(shí)姓名:+real+電子郵件:+em+地址:+addr+);out.println( );out.println();out.flush();out.close(); 使用session對(duì)象保存用戶信息session是JSP中一個(gè)很重要的內(nèi)建對(duì)象,它表示目前個(gè)別用戶的會(huì)話(session)狀態(tài)。session的信息保存在服務(wù)器端,并可以

44、輕易識(shí)別每一個(gè)用戶,然后根據(jù)每一個(gè)用戶的不同要求,給予正確的響應(yīng)。session對(duì)象實(shí)現(xiàn)的是javax.servlet.http.HttpSession接口,如果想通過(guò)session在JSP頁(yè)面得到信息,那么必須保證session不為空,即先向session對(duì)象中保存信息。完整使用Session實(shí)現(xiàn)用戶登錄參考代碼:/登錄界面Login.jsp用戶登錄 用戶名: 密碼: /check.jsp代碼:驗(yàn)證頁(yè)面=1) sessionn.setAttribute(message,用戶驗(yàn)證正確,登錄成功!); sessionn.setAttribute(username,username);/保存對(duì)象信

45、息 sessionn.setAttribute(password,password); response.sendRedirect(success.jsp); else sessionn.setAttribute(message,用戶驗(yàn)證失敗,請(qǐng)檢查登錄信息!); sessionn.setAttribute(username,username); sessionn.setAttribute(password,password); response.sendRedirect(error.jsp); %/登錄成功頁(yè)面success.jsp登錄成功 歡迎您: /登錄失敗錯(cuò)誤提示error.jsp出錯(cuò)

46、啦 請(qǐng)確認(rèn)信息是否正確:用戶名:密碼:5秒后返回登錄頁(yè)面,請(qǐng)稍候.如果您的瀏覽器沒(méi)能自動(dòng)跳轉(zhuǎn),請(qǐng)點(diǎn)擊這里習(xí)題:1-4:在JSP頁(yè)面中顯示用戶信息兩種方法是:out對(duì)象和JSP表達(dá)式JSP和JavaBean實(shí)現(xiàn)用戶信息查詢JSP與JavaBean聯(lián)合應(yīng)用到開(kāi)發(fā)中,與JSP與Servlet結(jié)合使用的方式很像。JavaBean是一個(gè)可重復(fù)使用的軟件組件,實(shí)際上就是一種Java類。它通過(guò)封裝屬性和方法,成為可以處理某種功能或者某個(gè)業(yè)務(wù)的對(duì)象,簡(jiǎn)稱Bean。JSP+JavaBean的開(kāi)發(fā)模式,實(shí)現(xiàn)了頁(yè)面的表現(xiàn)與頁(yè)面的邏輯相分離,即所有數(shù)據(jù)通過(guò)JavaBean來(lái)處理,JSP只實(shí)現(xiàn)頁(yè)面表現(xiàn)。JavaBean

47、可以認(rèn)為是提供了隨時(shí)隨地進(jìn)行復(fù)制和粘貼的功能,而不用關(guān)心任何改變的Java類。用戶可以使用JavaBean功能、處理、值、數(shù)據(jù)庫(kù)訪問(wèn)和其他任何可以使用Java代碼創(chuàng)造的對(duì)象進(jìn)行打包,并且其他的開(kāi)發(fā)者可以通過(guò)內(nèi)部JSP頁(yè)面、Servlet類、其他JavaBean、Applet程序或應(yīng)用來(lái)使用這些對(duì)象。創(chuàng)建一個(gè)JavaBean一般要符合以下幾點(diǎn):必須有一個(gè)無(wú)參數(shù)的公有的構(gòu)造函數(shù)。當(dāng)類里沒(méi)有構(gòu)造函數(shù)時(shí)默認(rèn)的就是無(wú)參共有的。對(duì)于想要使用到的屬性都定義成私有變量對(duì)定義的私有變量要有和它相對(duì)應(yīng)的get和set方法。get和set方法必須有變量相同的名稱,但第一個(gè)字母要大寫(xiě)。JSP中的動(dòng)作指令在JSP中有指

48、令與動(dòng)作指令之分,指令有兩種:Page和Include。Page指令用來(lái)定義JSP文件中的全局性,一個(gè)頁(yè)面可以定義一個(gè)也可以定義多個(gè)。Include指令用于包含一個(gè)靜態(tài)的JSP文件,并解析這個(gè)文件中的JSP語(yǔ)句。JSP的動(dòng)作指令一共有6個(gè),Include指令、Forward指令、Plugin指令、UseBean指令、SetProperty指令和GetProperty指令。前3個(gè)屬于控制標(biāo)志,后3個(gè)屬于Bean標(biāo)志。他們都是使用作為前綴。include指令標(biāo)簽用來(lái)包含一個(gè)動(dòng)態(tài)或靜態(tài)的資源。因?yàn)樗梢园瑒?dòng)態(tài)或靜態(tài)的資源,所以不用判斷被包含的資源是動(dòng)態(tài)的還是靜態(tài)的。但是包含這兩種資源的結(jié)果是不相同

49、的,當(dāng)包含的是一個(gè)靜態(tài)資源時(shí),JSP編譯器不會(huì)去執(zhí)行這個(gè)文件,僅僅是將資源加載到JSP中。如果包含的是一個(gè)動(dòng)態(tài)資源,JSP編譯器就會(huì)去執(zhí)行它。如:/動(dòng)態(tài)無(wú)參表示法 /動(dòng)態(tài)有參數(shù)表示法注意include動(dòng)作指令與Includer指令的區(qū)別:項(xiàng)目Include動(dòng)作指令I(lǐng)nclude指令基本語(yǔ)法包含動(dòng)作發(fā)生的時(shí)間請(qǐng)求頁(yè)面期間頁(yè)面轉(zhuǎn)換期間被包含的內(nèi)容頁(yè)面的輸出文件的內(nèi)容產(chǎn)生Servlet的數(shù)目21被包含文件是否可以設(shè)置影響主頁(yè)的響應(yīng)報(bào)頭不可以可以被包含文件是否可以定義主頁(yè)面使用的字段和方法不可以可以被包含文件更改后是否需要更新主頁(yè)面不需要需要forward指令標(biāo)簽是允許請(qǐng)求轉(zhuǎn)發(fā)到另一個(gè)JSP、Serv

50、let或者HTML文件。實(shí)際上就是從一個(gè)JSP文件向另一個(gè)文件傳遞用戶請(qǐng)求的request對(duì)象,但是目標(biāo)文件必須位于此JSP文件的上下文環(huán)境中。當(dāng)遇到此標(biāo)簽時(shí),標(biāo)簽下面的操作將停止執(zhí)行,轉(zhuǎn)而執(zhí)行目標(biāo)文件的內(nèi)容。標(biāo)簽在JSP中的語(yǔ)法有以下兩種形式。(1)無(wú)參數(shù)跳轉(zhuǎn)方式,表達(dá)式如下所示。jsp:forward page=relativeURL|/(2)帶參數(shù)跳轉(zhuǎn)方式,表達(dá)式如下所示。jsp:forward page=relativeURL| jsp:param name=parameterName“value=parameterValue|/ plugin指令標(biāo)簽用于產(chǎn)生客戶端瀏覽器的特別標(biāo)簽(O

51、bject或者Embed),插入一個(gè)Applet或Bean,并且根據(jù)瀏覽器的不同版本決定替換成還是元素,用于HTML 4.0,用于HTML 3.2。useBean指令標(biāo)簽用來(lái)在JSP頁(yè)面創(chuàng)建一個(gè)JavaBean的實(shí)例并指定它的名字及作用范圍。在JSP中的語(yǔ)法表達(dá)式如下所示。jsp:useBean id=beanInstanceNamescope=page|request|session|application class=package.class|type=package.class|class=package.classtype=package. class| beanName=packa

52、ge.class|type=package.class /| other elements Scope定義的范圍選項(xiàng):范圍描述pageBean只能在使用頁(yè)面時(shí)使用,當(dāng)加載新的頁(yè)面時(shí)就會(huì)被銷(xiāo)毀request在對(duì)其發(fā)出請(qǐng)求時(shí)存在session一直存在于會(huì)話中,直到其終止或被刪除時(shí)為止application在整個(gè)應(yīng)用程序中都可使用setProperty指令標(biāo)簽用來(lái)設(shè)置JavaBean中的屬性值。在JSP中的語(yǔ)法表達(dá)式如下所示。jsp:setProperty name=beanInstanceNameproperty=*|property=propertyName“ param=parameterNa

53、me|property=propertyNamevalue=string| /將字符串轉(zhuǎn)換成其他類型的方法property類型方法booleanjava.lang.Boolean.valueOf(String).booleanValue()Booleanjava.lang.Boolean.valueOf(String)bytejava.lang.Byte.valueOf(String).byteValue()Bytejava.lang.Byte.valueOf(String)charjava.lang.Character.valueOf(String).charValue()Character

54、java.lang.Character.valueOf(String)doublejava.lang.Double.valueOf(String).doubleValue()Doublejava.lang.Double.valueOf(String)intjava.lang.Integer.valueOf(String).intValue()Integerjava.lang.Integer.valueOf(String)floatjava.lang.Float.valueOf(String).floatValue()Floatjava.lang.Float.valueOf(String)lon

55、gjava.lang.Long.valueOf(String).longValue()Longjava.lang.Long.valueOf(String).getProperty指令標(biāo)簽用來(lái)獲取Bean屬性的值,并將它轉(zhuǎn)化為字符串,然后在輸出的頁(yè)面顯示。在JSP中的語(yǔ)法如下所示。語(yǔ)法說(shuō)明如下。name=beanInstanceName,bean的名字,由指定。property=propertyName,指定Bean的屬性名。完整用戶信息查詢實(shí)現(xiàn)/表單頁(yè)面就不再重復(fù)寫(xiě)了,以下是信息檢查代碼check.jsp查看顯示信息%DBManager mdb=new DBManager();String u

56、sername=(String)request.getParameter(username);String password=(String)request.getParameter(password);String message=(String)request.getParameter(message);List list=mdb.queryUser(username,password,message);if(!list.isEmpty()% 用戶名 密碼 留言%for(int i=0;i /使用到的Bean代碼JavaBean.java如下:package com.jsp.query;p

57、ublic class JavaBean private String username; private String password; private String message; public JavaBean() public String getUsername() return username; public void setUsername(String username) this.username=username; public String getPassword() return password; public void setPassword(String p

58、assword) this.password=password; public String getMessage() return message; public void setMessage(String message) this.message=message; /數(shù)據(jù)庫(kù)信息核對(duì)java類DBManager.javapackage com.jsp.query;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultS

59、et;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public class DBManager private Connection conn=null;private PreparedStatement stmt=null;private ResultSet rs=null;public DBManager()try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); conn=DriverManager.getConnection(jdbc:

60、odbc:beandb,sa,); catch (Exception e) e.printStackTrace(); public List queryUser(String username,String password,String message)throws SQLExceptionList list =new ArrayList();/創(chuàng)建一個(gè)ArrayList對(duì)象if(username=null|username.equals()/判斷用戶名是否為空 System.out.println(用戶名不能為空);elsestmt=conn.prepareStatement(select

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論