版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第五章JSP指令與腳本元素回顧JavaServerPage簡稱為JSP,它是運(yùn)行在服務(wù)器端的腳本語言之一,與其它服務(wù)器端腳本語言一樣,是開發(fā)動(dòng)態(tài)網(wǎng)頁的技術(shù)之一JSP技術(shù)解決界面顯示問題,而Servlet主要解決內(nèi)部邏輯問題JSP頁面由靜態(tài)內(nèi)容、指令、表達(dá)式、Scriptlet聲明、標(biāo)準(zhǔn)動(dòng)作、注釋幾種元素構(gòu)成JSP的生命周期包括頁面初始化、處理客用戶端請求并作出應(yīng)答和退出JSP這3個(gè)階段本章內(nèi)容JSP腳本元素(表達(dá)式、Scriptlet、聲明)page指令、include指令、taglib指令本章目標(biāo)掌握J(rèn)SP腳本元素的用法掌握page指令的常用屬性完成“醫(yī)院處方查詢系統(tǒng)”所有功能1.JSP腳本元素JSP腳本元素包括表達(dá)式 Scriptlet聲明1.1JSP表達(dá)式JSP表達(dá)式表達(dá)式(Expression)用于向頁面中輸出信息 格式:<%=表達(dá)式%>JSP表達(dá)式形式普通變量含返回值的方法Java表達(dá)式JSP表達(dá)式普通變量可以返回值的方法Java表達(dá)式<body><%//定義一個(gè)num變量
intnum=(newRandom()).nextInt(10);%>
產(chǎn)生的隨機(jī)變量值是:<%=num%>//定義一個(gè)Test類public
classTest{//定義一個(gè)返回值的方法doWithpublic
staticStringdoWith(Stringpeople){return"<fontcolor=red>※※"+people+"※※</font>";}}<body>
本次幸運(yùn)之星是:<%=Test.doWith("飛雪")%></body><%//定義購買的商品數(shù)量
intquantity=4;//定義商品單價(jià)
doubleprice=12.5;//定義標(biāo)志位,用于標(biāo)識(shí)是否是會(huì)員,1:是會(huì)員,0:不是會(huì)員.會(huì)員可打8.5折
intflag=1; doublepay=100;//實(shí)付款
%><br/>=========家家樂超市收銀系統(tǒng)=============<h1>應(yīng)付款:<%=flag==1?quantity*price*0.85:quantity*price%></h1>=========家家樂超市收銀系統(tǒng)=============<br>JSP表達(dá)式表達(dá)式可以應(yīng)用在JSP頁面中的如下位置生成動(dòng)態(tài)的鏈接地址 使form表單提交到不同的頁面為通過循環(huán)語句生成的元素命名<%Stringpath="welcome.jsp";%><ahref="<%=path%>">鏈接到</a><ahref=”welcome.jsp”>鏈接到</a><%Stringname=”login.jsp”;%><formaction=”<%=name%>”></form><formaction=”login.jsp”></form>
<%forinti=1;i<3;i++){%>file<%=i%>:<inputtype=”text”name=”file<%=i%>”><br><%}%>file1:<inputtype=”text”name=”file1”><br>file2:<inputtype=”text”name=”file2”><br>1.2聲明標(biāo)識(shí)聲明標(biāo)識(shí)格式:<%!聲明變量或方法的代碼%>注意幾點(diǎn)在“<%”與“!”之間無須加空格聲明的語法與在Java語言中聲明變量和方法時(shí)一樣在頁面中通過“聲明標(biāo)識(shí)”聲明的變量和方法,在整個(gè)頁面內(nèi)都有效,它們將成為JSP頁面被轉(zhuǎn)換為類文件中的屬性和方法,并且會(huì)被多個(gè)線程即多個(gè)用戶共享
變量或方法的生命周期從創(chuàng)建到服務(wù)器關(guān)閉后結(jié)束
1.2聲明標(biāo)識(shí)實(shí)現(xiàn)一個(gè)簡單的網(wǎng)頁計(jì)數(shù)器<%@pagelanguage="java"contentType="text/html;charset=GB2312"%><%!intnum=0;//聲明一個(gè)計(jì)數(shù)器變量
synchronizedvoidadd()//該方法用來實(shí)現(xiàn)計(jì)數(shù)器加1
{num++;}%><%add();//調(diào)用add方法%><html><head><title>網(wǎng)頁計(jì)數(shù)器</title></head><body><center>
<h1>你是第<%=num%>位訪客</h1></center></body></html>關(guān)閉瀏覽器關(guān)閉Tomcat如果把代碼修改如下:<%intnum=0;num++;%><h1>你是第<%=num%>位訪客</h1>能實(shí)現(xiàn)網(wǎng)頁計(jì)數(shù)器嗎?1.3腳本程序(Scriptlet)腳本程序(Scriptlet)格式:<%Java程序片段%>注意它在形式上與表達(dá)式的區(qū)別在于“<%...%>”中沒有“=”中間是一段Java代碼,不是表達(dá)式,每條Java語句要以分號結(jié)尾位于Scriptlet中定義的變量和方法不會(huì)被其他線程共享,當(dāng)前用戶對該變量的操作不會(huì)影響到其它用戶當(dāng)變量所在的頁面關(guān)閉后就會(huì)被銷毀
腳本程序(Scriptlet)通過“聲明標(biāo)識(shí)”聲明的變量與位于Scriptlet中變量的區(qū)別
<%@pagelanguage="java"contentType="text/html;charset=GB2312"%><%!intnum=0;//聲明一個(gè)num變量
%><html><head></head><body><%intnum1=0;//聲明一個(gè)Scriptlet變量
num++;//自加
num1++;//自加
%>num的值是:<%=num%><br/>num1的值是:<%=num1%></body></html>第一次運(yùn)行結(jié)果
刷新3次運(yùn)行結(jié)果
2.JSP指令標(biāo)識(shí)什么是指令標(biāo)識(shí)通過指令標(biāo)識(shí)可以使服務(wù)器按照指令的設(shè)置來執(zhí)行動(dòng)作通過指令可設(shè)置在整個(gè)JSP頁面范圍內(nèi)有效的屬性在一個(gè)指令中可以設(shè)置多個(gè)屬性,這些屬性的設(shè)置可以影響到整個(gè)頁面page指令page指令稱為頁面指令,利用頁面指令可以定義在整個(gè)JSP頁面范圍內(nèi)有效的屬性include指令include指令用于在運(yùn)行時(shí)將HTML文件或JSP頁面嵌入到另一個(gè)JSP頁面taglib指令taglib指令的作用是在JSP頁面中,將標(biāo)簽庫描述符文件(TLD)引到該頁面中,并設(shè)置前綴,利用標(biāo)簽的前綴去使用標(biāo)簽庫描述符文件中的標(biāo)簽2.1Page指令Page指令格式:<%@pageattribute1=”value2”attribute2=”value2”...%>page指令可以放在JSP頁面中的任意位置,但習(xí)慣上放在文件的開始部分,提高程序的可讀性page指令具有多種屬性,通過這些屬性的設(shè)置可以影響到當(dāng)前的JSP頁面屬性名作用extends用于指定一個(gè)JSP頁面轉(zhuǎn)換為Servlet后繼承的類session默認(rèn)值為true,表示當(dāng)前頁面支持session。設(shè)為false表示不支持sessionbuffer設(shè)置out對象使用緩沖區(qū)的大小info該屬性可設(shè)置為任意字符串,如當(dāng)前頁面的作者或其它有關(guān)的頁面信息errorPage該屬性用來指定一個(gè)當(dāng)前頁面出現(xiàn)異常時(shí)所要調(diào)用的頁面isErrorPage表示此頁面是否為錯(cuò)誤處理頁面,默認(rèn)為falseisELIgnored表示此頁面是否忽略EL表達(dá)式。默認(rèn)為false,表示不會(huì)忽略EL表達(dá)式pageEncoding用來設(shè)置JSP頁面字符的編碼,默認(rèn)值為”ISO-8859-1”2.2include指令include指令格式:<%@includefile=”fileName”%>include指令只支持file屬性,該屬性指定要在編譯時(shí)嵌入的文件名頁面的名稱應(yīng)當(dāng)在編譯時(shí)已知,文件的內(nèi)容將被嵌入include指令所在的
JSP頁面為什么要使用include指令使用include指令引用外部文件,可減少代碼冗余
Logo圖片區(qū)側(cè)欄動(dòng)態(tài)內(nèi)容頁尾遇到這樣的頁面模板怎么辦?include指令include指令應(yīng)用<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"></head><body><imgsrc="images/top.jpg"></body></html><%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"></head><body><imgsrc="images/side.jpg"></div></body></html><%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"></style></head><body><imgsrc="images/bottom.jpg"></body></html>...<body><tablewidth="100%"height="80%"border="0"align="center"cellpadding="0"cellspacing="0"><tr><tdheight="58"colspan="2"><%@includefile="top.jsp"%></td></tr><trbgcolor=""><tdwidth="11%"height="200"valign="top"><%@includefile="side.jsp"%></td><tdwidth="89%"align="center"><h1>這是jsp3動(dòng)態(tài)變化的內(nèi)容</h1></td></tr><tr><tdcolspan="2"><%@includefile="bottom.jsp"%></td></tr></table></body>...2.3taglib指令什么是taglib指令taglib指令的作用是在JSP頁面中,將標(biāo)簽庫描述文件(TLD)引到該頁面中,并設(shè)置前綴,利用標(biāo)簽的前綴去使用標(biāo)簽庫描述符文件中的標(biāo)簽標(biāo)簽描述符文件為XML文件,包含一系列標(biāo)簽說明,它的文件后綴名是.tldtaglib指令格式 <%@tagliburi=“標(biāo)簽庫描述符文件”prefix=“前綴名”%>uri:指定了JSP要在web.xml文件中查找的標(biāo)簽庫描述符prefix:指定一個(gè)在頁面中使用由uri屬性指定的標(biāo)簽庫的前綴<%@taglib=/jsp/jstl/coreprefix=”c”%><c:setvar=”name”value=”jack”/>上述代碼通過”<c:set>”標(biāo)簽將”jack”值賦給了變量”name”
3.JSP腳本元素綜合應(yīng)用3.1功能概述為方便用戶查詢,在”醫(yī)生姓名”輸入框中只需輸入拼音碼。例如:張三豐”,對應(yīng)拼音碼為:“zsf”
在沒有查詢出數(shù)據(jù)之前該按鈕不可用有結(jié)果時(shí),該按鈕可用系統(tǒng)將根據(jù)拼音碼進(jìn)行查詢并顯示查詢結(jié)果顯示與“拼音碼“對應(yīng)醫(yī)生的處方單總額如果該處方單已經(jīng)審核,則“審核”按鈕狀態(tài)不可用,否則“審核”按鈕可用顯示與“拼音碼“對應(yīng)醫(yī)生的姓名3.2數(shù)據(jù)庫設(shè)計(jì)醫(yī)院處方查詢系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)相關(guān)表
數(shù)據(jù)庫關(guān)系圖示例數(shù)據(jù)
3.3代碼創(chuàng)建一個(gè)用于封裝處方的實(shí)體類PrescriptionpublicclassPrescription{privateintid;privateStringprescriptionId;privateDateprescriptionDate;privatedoubleprescriptionMoney;privatebooleanisVerify;publicPrescription(){} publicPrescription(intid,StringprescriptionId,DateprescriptionDate,doubleprescriptionMoney,booleanisVerify){ super(); this.id=id; this.prescriptionId=prescriptionId; this.prescriptionDate=prescriptionDate; this.prescriptionMoney=prescriptionMoney; this.isVerify=isVerify;} ...有參構(gòu)造方法代碼創(chuàng)建用于生成主頁面的prescription.jsp
... <body><% intflag=0;//判斷是否查詢到數(shù)據(jù)if(request.getAttribute("prescriptionList")!=null){ flag=1;//修改標(biāo)志位
//從request屬性中獲取處方集合prescriptionList=(List)request.getAttribute("prescriptionList");}%>
用flag來判斷是否查詢到數(shù)據(jù),如果查詢不到則不會(huì)顯示查詢表格,并且”導(dǎo)出exel”按鈕不可用
<%if(flag==1)//如果有數(shù)據(jù),把此按鈕做為可用{%><inputname="Submit3"type="submit"value="導(dǎo)出excel"> <%}else//做為不可用
{ %><inputname="Submit3"type="submit"value="導(dǎo)出excel"disabled="true"> <%}%>
</td></tr></table></form></td></tr><%if(flag==1)//如果有數(shù)據(jù)則顯示
{%><tr><tdheight="28"nowrap>
如果有數(shù)據(jù),則顯示數(shù)據(jù)
如果有數(shù)據(jù),則按鈕可用
代碼創(chuàng)建用于生成主頁面的prescription.jsp
<%doublesum=0.0;//定義一個(gè)變量用于存放處方總金額
for(inti=0;i<prescriptionList.size();i++){Prescriptionprescription=(Prescription)prescriptionList.get(i); sum+=prescription.getPrescriptionMoney(); SimpleDateFormatsdf=newSimpleDateFormat("yyyy年MM月dd日");StringformatDate=sdf.format(prescription.getPrescriptionDate());%>
<formname="frm1"action="doWithVerifyServlet?id=<%=prescription.getId()%>"method="post"><tralign="center"bgcolor="#F7F6FB"><tdnowrap><%=prescription.getPrescriptionId()%></td><tdnowrap><%=formatDate%></td><tdnowrap><%=prescription.getPrescriptionMoney()%></td><tdnowrap><%if(prescription.getIsVerify())//如果已經(jīng)審核了,則把按鈕置為不可用
{%><inputname="Submit2"type="submit"value="審核"disabled="true"><%}else{%><inputname="Submit2"type="submit"value="審核"><%}%></td></tr></form><%}%>
教員演示代碼循環(huán)取出所有處方設(shè)置超連接ID獲取每一筆處方信息如果審核了,則將按鈕作為不可用代碼創(chuàng)建DoWithQueryServlet,該Servlet根據(jù)用戶輸入的拼音碼,查詢數(shù)據(jù)庫獲取結(jié)果
Stringpym=request.getParameter("pym");//得到用戶輸入的pym//把pym放入session中,以便在執(zhí)行審核功能時(shí)使用request.getSession().setAttribute("pym",pym);//構(gòu)造sql語句Stringsql="select*fromtb_doctora,tb_prescriptionbwherea.id=b.doctorIdanda.pym=?";Object[]params={pym};//調(diào)用數(shù)據(jù)層得到結(jié)果Resultresult=DbHelp.runSelectSql(sql,params);Map[]rows=result.getRows();//如果存在數(shù)據(jù)if(rows.length>0){//構(gòu)造一個(gè)sql語句,得到醫(yī)生信息sql="selectdnamefromtb_doctorwherepym=?";Object[]params1={pym};//執(zhí)行sql語句,獲取醫(yī)生信息結(jié)果Resultresult1=DbHelp.runSelectSql(sql,params1);//獲取醫(yī)生姓名Stringdname=result1.getRows()[0].get("dname").toString();//構(gòu)造一個(gè)集合來保存處方列表ListprescriptionList=newArrayList();//循環(huán)取出每一條記錄for(Maprow:rows){//得到IDintid=Integer.parseInt(row.get("id").toString());//得到處方IDStringprescriptionId=row.get("prescriptionId").toString();//得到產(chǎn)生日期DateprescriptionDate=Date.valueOf(row.get("prescriptionDate").toString().substring(0,10));//得到處方金額doubleprescriptionMoney=Double.parseDouble(row.get("prescriptionMoney").toString());
//得到是否審核booleanisVerify=Boolean.parseBoolean(row.get("isVerify").toString());//構(gòu)造一個(gè)處方對象Prescriptionprescription=newPrescription(id,prescriptionId,prescriptionDate,prescriptionMoney,isVerify);//添加到集合里面prescriptionList.add(prescription);//放入request屬性中request.setAttribute("prescriptionList",prescriptionList);//處方集合request.setAttribute("dname",dname);//醫(yī)生姓名}}//轉(zhuǎn)發(fā)到prescription.jsp頁面request.getRequestDispatcher("prescription.jsp").forward(request,response);代碼創(chuàng)建DoWithVerifyServlet,該Servlet用于處理審核處方單的業(yè)務(wù)邏輯…//獲取要審核的Idintid=Integer.parseInt(request.getParameter("id"));//構(gòu)造sql語句Stringsql="updatetb_prescriptionsetisVerify=1whereid=?";Object[]params={id};//調(diào)用數(shù)據(jù)層,執(zhí)行更新if(DbHelp.runUpdateSql(sql,params))//如果更新成功
{//獲取上次輸入的拼音碼Stringpym=request.getSession().getAttribute("pym
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025新疆日喀則市消防救援支隊(duì)、日喀則市人力資源和社會(huì)保障局招聘政府專職消防員21人備考題庫含答案詳解
- 2026廣東佛山市順德區(qū)北滘鎮(zhèn)碧江中學(xué)招聘臨聘教師備考題庫及完整答案詳解
- 2026年上海交通大學(xué)附屬閔行實(shí)驗(yàn)學(xué)校教師招聘備考題庫附答案詳解
- 2026年寶雞智博學(xué)校教師招聘備考題庫及完整答案詳解1套
- 2025四川內(nèi)江市隆昌市古湖街道中心學(xué)校招聘2人備考題庫及參考答案詳解
- 2026廣西姆洛甲文化旅游投資有限公司招聘文旅策劃主管2人備考題庫及答案詳解(考點(diǎn)梳理)
- 2026江西江銅南方公司第六批次社會(huì)招聘4人備考題庫及答案詳解(奪冠系列)
- 2025江蘇淮安市洪澤區(qū)中醫(yī)院招聘合同制專業(yè)技術(shù)人員2人備考題庫(第二批)及答案詳解(奪冠系列)
- 2025福建寧德市統(tǒng)計(jì)局普查中心公開招聘工作人員3人備考題庫參考答案詳解
- 2025中國電信濱海分公司招聘2人備考題庫及參考答案詳解一套
- 降鈣素的臨床意義
- 2024-2025學(xué)年河南省南陽市社旗縣九年級(上)期末英語試卷(含答案)
- Tesla:如何設(shè)計(jì)48V汽車?-2025-01-技術(shù)資料
- 變壓器轉(zhuǎn)讓協(xié)議書范本的樣本
- 道閘施工方案
- 脫鹽水裝置操作規(guī)程
- 湖南省張家界市永定區(qū)2023-2024學(xué)年七年級上學(xué)期期末考試數(shù)學(xué)試題
- 2023-2024學(xué)年江西省贛州市章貢區(qū)文清實(shí)驗(yàn)學(xué)校數(shù)學(xué)六年級第一學(xué)期期末經(jīng)典模擬試題含答案
- 事業(yè)單位考察材料范文
- DB36-T 1158-2019 風(fēng)化殼離子吸附型稀土礦產(chǎn)地質(zhì)勘查規(guī)范
- 周圍神經(jīng)損傷及炎癥康復(fù)診療規(guī)范
評論
0/150
提交評論