JSP基礎(chǔ)入門(mén)課件_第1頁(yè)
JSP基礎(chǔ)入門(mén)課件_第2頁(yè)
JSP基礎(chǔ)入門(mén)課件_第3頁(yè)
JSP基礎(chǔ)入門(mén)課件_第4頁(yè)
JSP基礎(chǔ)入門(mén)課件_第5頁(yè)
已閱讀5頁(yè),還剩20頁(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)介

第四章JSP基礎(chǔ)入門(mén)回顧Web應(yīng)用中的會(huì)話是指一個(gè)客戶端瀏覽器與Web服務(wù)器之間連續(xù)發(fā)生的一系列請(qǐng)求和響應(yīng)過(guò)程會(huì)話跟蹤技術(shù)使服務(wù)器應(yīng)用程序可以保持客戶狀態(tài)等相關(guān)信息會(huì)話跟蹤技術(shù)有4種分別是:Session、Cookie、URL重寫(xiě)、表單隱藏域Session是一種保存上下文信息的機(jī)制。它針對(duì)每一個(gè)用戶,在服務(wù)器端開(kāi)辟一塊存儲(chǔ)空間,用于存放用戶的會(huì)話狀態(tài)。通過(guò)SessionID來(lái)區(qū)分不同的客戶Cookie是服務(wù)器發(fā)送給客戶的片段信息,存儲(chǔ)在客戶端瀏覽器的內(nèi)存中或硬盤(pán)上,之后在對(duì)服務(wù)器的請(qǐng)求中發(fā)回它當(dāng)客戶端不接愛(ài)Cookie時(shí),可以使用權(quán)URL重寫(xiě)機(jī)制來(lái)跟蹤用戶會(huì)話本章內(nèi)容JSP簡(jiǎn)介JSP的優(yōu)勢(shì)JSP頁(yè)面構(gòu)成JSP的生命周期JSP的處理過(guò)程JSP異常處理機(jī)制本章目標(biāo)理解為什么需要JSP掌握J(rèn)SP頁(yè)面構(gòu)成元素理解JSP的處理過(guò)程利用JSP查詢數(shù)據(jù)庫(kù)顯示商品列表1.JSP簡(jiǎn)介以下的Servlet代碼有何缺陷?out.print("<html><head><title>部門(mén)信息管理</title></head>");out.print("<body>");out.print("<table”);out.print("<tralign='center'bgcolor='#000099'>");out.print("<tdheight='33'colspan='2'><fontcolor='white'>在線招聘系統(tǒng)注冊(cè)</font></td></tr>");out.print(“</table>”);所有的內(nèi)容必須在Java代碼中完成,包括HTML代碼同樣需要嵌入到程序代碼中來(lái)生成靜態(tài)內(nèi)容不利于分工因HTML代碼出現(xiàn)的小問(wèn)題也需要由熟悉JavaServlet的程序員來(lái)解決1.1為什么需要JSP?1.2什么是JSPJSP(JavaServerPages)是指:在HTML中嵌入Java腳本語(yǔ)言由應(yīng)用服務(wù)器中的JSP引擎來(lái)編譯和執(zhí)行嵌入的Java腳本語(yǔ)言命令將生成的整個(gè)頁(yè)面信息返回給客戶端JSP頁(yè)面數(shù)據(jù)庫(kù)服務(wù)器應(yīng)用服務(wù)器編譯、執(zhí)行客戶端嵌入Java腳本語(yǔ)言

1234返回頁(yè)面信息1.3JSP與Servlet的適用場(chǎng)合JSP技術(shù)解決界面顯示問(wèn)題Servlet主要解決內(nèi)部邏輯問(wèn)題商品顯示列表功能

3.JSP頁(yè)面構(gòu)成靜態(tài)內(nèi)容指令表達(dá)式Scriptlet<%Java代碼%><%=Java表達(dá)式%>HTML靜態(tài)文本以“<%@”開(kāi)始,以“%>”結(jié)束,例如:<%@includefile="

Filename"%>聲明標(biāo)準(zhǔn)動(dòng)作<%!方法%>以“<jsp:動(dòng)作名”開(kāi)始,以“</jsp:動(dòng)作名>”結(jié)束,例如:<jsp:includepage="Filename"/>注釋<!--這是注釋,客戶端可以查看--><%--這也是注釋,但客戶端無(wú)法查看--%>JSP頁(yè)面構(gòu)成<%@pagelanguage="java"import="java.util.*,java.text.*"contentType="text/html;charset=GBK"pageEncoding="GBK"%><html><head><title>輸出當(dāng)前日期</title></head><!--這是HTML注釋(客戶端可以看到源代碼)--><%--這是JSP注釋(客戶端不可以看到源代碼)--%><body>你好,jack!今天是<%//使用預(yù)定格式將日期轉(zhuǎn)換為字符串SimpleDateFormatformater=newSimpleDateFormat("yyyy年MM月dd日");StringstrCurrentTime=formater.format(newDate());%><%=strCurrentTime%></body></html>指令靜態(tài)內(nèi)容Scriptlet表達(dá)式注釋JSP頁(yè)面構(gòu)成在瀏覽器中觀看運(yùn)行結(jié)果查看網(wǎng)頁(yè)源文件可以通過(guò)源代碼查看HTML注釋的內(nèi)容所有注釋內(nèi)容都不可見(jiàn)JSP頁(yè)面構(gòu)成合理、詳細(xì)的注釋有利于代碼后期的維護(hù)和閱讀在JSP文件的編寫(xiě)過(guò)程中,共有3種注釋方法HTML的注釋方法:<!--html注釋-->JSP注釋標(biāo)記:<%--JSP注釋--%>在JSP腳本中使用<%//單行注釋%><%/*多行注釋*/%>缺點(diǎn):不安全,加重了網(wǎng)絡(luò)傳輸?shù)呢?fù)擔(dān)4.JSP的生命周期頁(yè)面初始化處理客戶端請(qǐng)求并做出應(yīng)答退出JSP該方法中可以進(jìn)行一些資源的分配,或者初始化變量和屬性

JSP處理客戶請(qǐng)求并應(yīng)答時(shí)會(huì)調(diào)用_jspService()方法JSP在頁(yè)面結(jié)束之前(主要是關(guān)閉服務(wù)器)會(huì)調(diào)用_jspDestroy()方法

5.JSP的處理過(guò)程服務(wù)器根據(jù)接收到的客戶請(qǐng)求來(lái)加載被請(qǐng)求的JSP文件Web服務(wù)器中的JSP引擎將被加載的JSP文件轉(zhuǎn)化為Servlet代碼JSP引擎將生成的Servlet代碼編譯成class文件服務(wù)器執(zhí)行這個(gè)class文件服務(wù)器將執(zhí)行結(jié)果發(fā)送到瀏覽器進(jìn)行顯示客戶端JSP文件Servlet文件class文件Servlet實(shí)例1.請(qǐng)求JSP頁(yè)面2.轉(zhuǎn)換3.編譯3.執(zhí)行5.返回響應(yīng)JSP容器JSP執(zhí)行過(guò)程6.JSP異常處理機(jī)制<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><html><head><title></title></head><body><%String[]citys={"beijin","shanghai","wuhan"};//這里故意設(shè)置了一個(gè)異常for(inti=0;i<=3;i++) {out.print(citys[i]);}%></body></html>不捕獲異常時(shí)的顯示結(jié)果軟件用戶感到突然,不知所措改進(jìn)之后顯示友好的界面6.1在JavaWeb中的異常6.2JavaWeb處理異常步驟出現(xiàn)錯(cuò)誤頁(yè)面的異常通常是同一種類型,為每個(gè)頁(yè)面書(shū)寫(xiě)相同的捕獲異常代碼,不利于代碼重用有一些異常的處理無(wú)法通過(guò)頁(yè)面設(shè)置完成,例如:用戶輸入網(wǎng)站中一個(gè)不存在的文件,這時(shí)應(yīng)告訴用戶文件不存在在Web應(yīng)用程序中try…catch捕獲異常有什么缺陷?如何解決這些問(wèn)題?JavaWeb處理異常步驟<?xmlversion="1.0"encoding="UTF-8"?><web-app><!--根據(jù)錯(cuò)誤類型進(jìn)行配置--> <error><!--配置空指針異常--><exception-type>java.lang.NullPointerException</exception-type><location>/nullPointer.jsp</location></error> <error> ...<!--配置異常編號(hào)進(jìn)行配置--><!--配置服務(wù)器內(nèi)部運(yùn)行錯(cuò)誤--><error-code>500</error-code><location>/500.jsp</location></error>...</web-app>1.配置web.xml為每個(gè)類型配置異常處理為每個(gè)錯(cuò)誤代碼配置異常處理400錯(cuò)誤:錯(cuò)誤請(qǐng)求401錯(cuò)誤:訪問(wèn)被拒絕403錯(cuò)誤:文件被禁止訪問(wèn)404錯(cuò)誤:文件沒(méi)有找到405錯(cuò)誤:文件在運(yùn)行過(guò)程中發(fā)生末知錯(cuò)誤JavaWeb處理異常步驟<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%@pageisErrorPage="true"%><html><head><title>空指針錯(cuò)誤</title><linktype="text/css"rel="stylesheet"href="css/style.css"></head><body><center><tablestyle="margin-top:200"width="300"height="150"border="1"cellpadding="0"cellspacing="0"bordercolor="black"bordercolorlight="black"bordercolordark="white"><trbgcolor="lightgrey"height="25"><td>※※HIS系統(tǒng)※※</td></tr><tr><tdalign="center"><fontsize="5"><fontcolor='red'><b>對(duì)象沒(méi)有實(shí)例化</b></font></font></td></tr></table></center></body></html>2.編寫(xiě)異常處理頁(yè)面

加入isErrorPagepage指令

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><html><head><title></title></head><body> <% //這里面故意設(shè)置一個(gè)異常

ListbookList=null; bookList.add("java"); bookList.add(""); bookList.add("asp"); %></body></html>3.編寫(xiě)測(cè)試頁(yè)面

4.運(yùn)行結(jié)果

7.開(kāi)發(fā)第一個(gè)JSP應(yīng)用程序利用MyEclipse新建一個(gè)Web應(yīng)用程序在此Web應(yīng)用程序的基礎(chǔ)上,添加一個(gè)jsp頁(yè)面在彈出的對(duì)話框中輸入JSP頁(yè)面的名字在JSP中編寫(xiě)代碼部署Web工程并運(yùn)行

<body><%//此示例能產(chǎn)生隨機(jī)數(shù)

intn=(newRandom()).nextInt(100);%><h1>產(chǎn)生的隨機(jī)數(shù)為:<%=n%></h1></body>輸入工程名輸入JSP名稱8.利用JSP查詢數(shù)據(jù)庫(kù)顯示商品列表功能分析查詢數(shù)據(jù)庫(kù)是業(yè)務(wù)邏輯可交由Servlet實(shí)現(xiàn)顯示商品列表屬于顯示功能可交由JSP來(lái)實(shí)現(xiàn)利用JSP查詢數(shù)據(jù)庫(kù)顯示商品列表創(chuàng)建用于訪問(wèn)數(shù)據(jù)庫(kù)的DbHelp類publicclassDbHelpimplementsSerializable{privatestaticfinalString DRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";privatestaticfinalString URL="jdbc:sqlserver://localhost:1433;databasename=javawebDb";publicstaticConnectiongetConnection(){Connectioncon=null;try{ Class.forName(DRIVER); con=DriverManager.getConnection(URL,"sa","tiger");}catch(Exceptione){ e.printStackTrace();}returncon;}定義連接字符串

定義getConnection()方法得到一個(gè)Connection對(duì)象利用JSP查詢數(shù)據(jù)庫(kù)顯示商品列表創(chuàng)建用于訪問(wèn)數(shù)據(jù)庫(kù)的DbHelp類

publicstaticResultrunSelectSql(Stringsql){Connectioncon=null;PreparedStatementps=null;ResultSetres=null;Resultresult=null;try{con=getConnection();ps=con.prepareStatement(sql);res=ps.executeQuery();result=ResultSupport.toResult(res);}catch(Exceptione){e.printStackTrace();}finally{try{res.close();ps.close();con.close();}catch(Exceptione){e.printStackTrace();}}returnresult;}}定義runSelectSql()方法運(yùn)行返回結(jié)果集的SQL語(yǔ)句利用JSP查詢數(shù)據(jù)庫(kù)顯示商品列表創(chuàng)建用于封裝商品的實(shí)體類Shop

publicclassShopimplementsjava.io.Serializable{privateintid;privateStringshopId;privateStringshopName;privatedoubleprice;//有參構(gòu)造函數(shù)publicShop(intid,StringshopId,StringshopName,doubleprice){ super(); this.id=id; this.shopId=shopId; this.shopName=shopName; this.price=price;}有參構(gòu)造方法利用JSP查詢數(shù)據(jù)庫(kù)顯示商品列表創(chuàng)建start.html靜態(tài)頁(yè)面,用于鏈接到DoWithServlet創(chuàng)建DoWithServlet,用于訪問(wèn)數(shù)據(jù)庫(kù)查詢商品列表,并轉(zhuǎn)發(fā)到showShop.jsp頁(yè)面

<body><ahref="DoWithServlet">進(jìn)入顯示商品列表</a></body>//調(diào)用DbHelp得到結(jié)果列表Resultresult=DbHelp.runSelectSql("select*fromtb_shop");//得到所有商品列表Map[]rows=result.getRows();//定義一個(gè)List用于存放商品列表ListshopList=newArrayList();//循環(huán)迭代訪問(wèn)每一個(gè)商品for(Maprow:rows){intid=Integer.parseInt(row.get(“id”).toString());//獲取每行指定字段值

Shopshop=newShop(id,shopId,shopName,price);shopList.add(shop);//添加到商品集合中}//放入request屬性值request.setAttribute("shopList",shopList);//轉(zhuǎn)發(fā)到showShop.jsp頁(yè)面中request.getRequestDispatcher("showShop.jsp").forward(request,response);

能否將shopList放入session會(huì)話中?利用JSP查詢數(shù)據(jù)庫(kù)顯示商品列表創(chuàng)建showShop.jsp,用于顯示查詢結(jié)果

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><jsp:directive.pageimport="com.soft.javaweb

溫馨提示

  • 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)論