JSP指令與腳本元素_第1頁
JSP指令與腳本元素_第2頁
JSP指令與腳本元素_第3頁
JSP指令與腳本元素_第4頁
JSP指令與腳本元素_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章JSP指令與腳本元素回顧JavaServerPage簡稱為JSP,它是運行在服務器端的腳本語言之一,與其它服務器端腳本語言一樣,是開發(fā)動態(tài)網(wǎng)頁的技術之一JSP技術解決界面顯示問題,而Servlet主要解決內(nèi)部邏輯問題JSP頁面由靜態(tài)內(nèi)容、指令、表達式、Scriptlet聲明、標準動作、注釋幾種元素構成JSP的生命周期包括頁面初始化、處理客用戶端請求并作出應答和退出JSP這3個階段本章內(nèi)容JSP腳本元素(表達式、Scriptlet、聲明)page指令、include指令、taglib指令本章目標掌握JSP腳本元素的用法掌握page指令的常用屬性完成“醫(yī)院處方查詢系統(tǒng)”所有功能1.JSP腳本元素JSP腳本元素包括表達式 Scriptlet聲明1.1JSP表達式JSP表達式表達式(Expression)用于向頁面中輸出信息 格式:<%=表達式%>JSP表達式形式普通變量含返回值的方法Java表達式JSP表達式普通變量可以返回值的方法Java表達式<body><%//定義一個num變量

intnum=(newRandom()).nextInt(10);%>

產(chǎn)生的隨機變量值是:<%=num%>//定義一個Test類public

classTest{//定義一個返回值的方法doWithpublic

staticStringdoWith(Stringpeople){return"<fontcolor=red>※※"+people+"※※</font>";}}<body>

本次幸運之星是:<%=Test.doWith("飛雪")%></body><%//定義購買的商品數(shù)量

intquantity=4;//定義商品單價

doubleprice=12.5;//定義標志位,用于標識是否是會員,1:是會員,0:不是會員.會員可打8.5折

intflag=1; doublepay=100;//實付款

%><br/>=========家家樂超市收銀系統(tǒng)=============<h1>應付款:<%=flag==1?quantity*price*0.85:quantity*price%></h1>=========家家樂超市收銀系統(tǒng)=============<br>JSP表達式表達式可以應用在JSP頁面中的如下位置生成動態(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聲明標識聲明標識格式:<%!聲明變量或方法的代碼%>注意幾點在“<%”與“!”之間無須加空格聲明的語法與在Java語言中聲明變量和方法時一樣在頁面中通過“聲明標識”聲明的變量和方法,在整個頁面內(nèi)都有效,它們將成為JSP頁面被轉(zhuǎn)換為類文件中的屬性和方法,并且會被多個線程即多個用戶共享

變量或方法的生命周期從創(chuàng)建到服務器關閉后結(jié)束

1.2聲明標識實現(xiàn)一個簡單的網(wǎng)頁計數(shù)器<%@pagelanguage="java"contentType="text/html;charset=GB2312"%><%!intnum=0;//聲明一個計數(shù)器變量

synchronizedvoidadd()//該方法用來實現(xiàn)計數(shù)器加1

{num++;}%><%add();//調(diào)用add方法%><html><head><title>網(wǎng)頁計數(shù)器</title></head><body><center>

<h1>你是第<%=num%>位訪客</h1></center></body></html>關閉瀏覽器關閉Tomcat如果把代碼修改如下:<%intnum=0;num++;%><h1>你是第<%=num%>位訪客</h1>能實現(xiàn)網(wǎng)頁計數(shù)器嗎?1.3腳本程序(Scriptlet)腳本程序(Scriptlet)格式:<%Java程序片段%>注意它在形式上與表達式的區(qū)別在于“<%...%>”中沒有“=”中間是一段Java代碼,不是表達式,每條Java語句要以分號結(jié)尾位于Scriptlet中定義的變量和方法不會被其他線程共享,當前用戶對該變量的操作不會影響到其它用戶當變量所在的頁面關閉后就會被銷毀

腳本程序(Scriptlet)通過“聲明標識”聲明的變量與位于Scriptlet中變量的區(qū)別

<%@pagelanguage="java"contentType="text/html;charset=GB2312"%><%!intnum=0;//聲明一個num變量

%><html><head></head><body><%intnum1=0;//聲明一個Scriptlet變量

num++;//自加

num1++;//自加

%>num的值是:<%=num%><br/>num1的值是:<%=num1%></body></html>第一次運行結(jié)果

刷新3次運行結(jié)果

2.JSP指令標識什么是指令標識通過指令標識可以使服務器按照指令的設置來執(zhí)行動作通過指令可設置在整個JSP頁面范圍內(nèi)有效的屬性在一個指令中可以設置多個屬性,這些屬性的設置可以影響到整個頁面page指令page指令稱為頁面指令,利用頁面指令可以定義在整個JSP頁面范圍內(nèi)有效的屬性include指令include指令用于在運行時將HTML文件或JSP頁面嵌入到另一個JSP頁面taglib指令taglib指令的作用是在JSP頁面中,將標簽庫描述符文件(TLD)引到該頁面中,并設置前綴,利用標簽的前綴去使用標簽庫描述符文件中的標簽2.1Page指令Page指令格式:<%@pageattribute1=”value2”attribute2=”value2”...%>page指令可以放在JSP頁面中的任意位置,但習慣上放在文件的開始部分,提高程序的可讀性page指令具有多種屬性,通過這些屬性的設置可以影響到當前的JSP頁面屬性名作用extends用于指定一個JSP頁面轉(zhuǎn)換為Servlet后繼承的類session默認值為true,表示當前頁面支持session。設為false表示不支持sessionbuffer設置out對象使用緩沖區(qū)的大小info該屬性可設置為任意字符串,如當前頁面的作者或其它有關的頁面信息errorPage該屬性用來指定一個當前頁面出現(xiàn)異常時所要調(diào)用的頁面isErrorPage表示此頁面是否為錯誤處理頁面,默認為falseisELIgnored表示此頁面是否忽略EL表達式。默認為false,表示不會忽略EL表達式pageEncoding用來設置JSP頁面字符的編碼,默認值為”ISO-8859-1”2.2include指令include指令格式:<%@includefile=”fileName”%>include指令只支持file屬性,該屬性指定要在編譯時嵌入的文件名頁面的名稱應當在編譯時已知,文件的內(nèi)容將被嵌入include指令所在的

JSP頁面為什么要使用include指令使用include指令引用外部文件,可減少代碼冗余

Logo圖片區(qū)側(cè)欄動態(tài)內(nèi)容頁尾遇到這樣的頁面模板怎么辦?include指令include指令應用<%@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動態(tài)變化的內(nèi)容</h1></td></tr><tr><tdcolspan="2"><%@includefile="bottom.jsp"%></td></tr></table></body>...2.3taglib指令什么是taglib指令taglib指令的作用是在JSP頁面中,將標簽庫描述文件(TLD)引到該頁面中,并設置前綴,利用標簽的前綴去使用標簽庫描述符文件中的標簽標簽描述符文件為XML文件,包含一系列標簽說明,它的文件后綴名是.tldtaglib指令格式 <%@tagliburi=“標簽庫描述符文件”prefix=“前綴名”%>uri:指定了JSP要在web.xml文件中查找的標簽庫描述符prefix:指定一個在頁面中使用由uri屬性指定的標簽庫的前綴<%@taglib=/jsp/jstl/coreprefix=”c”%><c:setvar=”name”value=”jack”/>上述代碼通過”<c:set>”標簽將”jack”值賦給了變量”name”

3.JSP腳本元素綜合應用3.1功能概述為方便用戶查詢,在”醫(yī)生姓名”輸入框中只需輸入拼音碼。例如:張三豐”,對應拼音碼為:“zsf”

在沒有查詢出數(shù)據(jù)之前該按鈕不可用有結(jié)果時,該按鈕可用系統(tǒng)將根據(jù)拼音碼進行查詢并顯示查詢結(jié)果顯示與“拼音碼“對應醫(yī)生的處方單總額如果該處方單已經(jīng)審核,則“審核”按鈕狀態(tài)不可用,否則“審核”按鈕可用顯示與“拼音碼“對應醫(yī)生的姓名3.2數(shù)據(jù)庫設計醫(yī)院處方查詢系統(tǒng)數(shù)據(jù)庫設計相關表

數(shù)據(jù)庫關系圖示例數(shù)據(jù)

3.3代碼創(chuàng)建一個用于封裝處方的實體類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;} ...有參構造方法代碼創(chuàng)建用于生成主頁面的prescription.jsp

... <body><% intflag=0;//判斷是否查詢到數(shù)據(jù)if(request.getAttribute("prescriptionList")!=null){ flag=1;//修改標志位

//從request屬性中獲取處方集合prescriptionList=(List)request.getAttribute("prescriptionList");}%>

用flag來判斷是否查詢到數(shù)據(jù),如果查詢不到則不會顯示查詢表格,并且”導出exel”按鈕不可用

<%if(flag==1)//如果有數(shù)據(jù),把此按鈕做為可用{%><inputname="Submit3"type="submit"value="導出excel"> <%}else//做為不可用

{ %><inputname="Submit3"type="submit"value="導出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;//定義一個變量用于存放處方總金額

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)取出所有處方設置超連接ID獲取每一筆處方信息如果審核了,則將按鈕作為不可用代碼創(chuàng)建DoWithQueryServlet,該Servlet根據(jù)用戶輸入的拼音碼,查詢數(shù)據(jù)庫獲取結(jié)果

Stringpym=request.getParameter("pym");//得到用戶輸入的pym//把pym放入session中,以便在執(zhí)行審核功能時使用request.getSession().setAttribute("pym",pym);//構造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){//構造一個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();//構造一個集合來保存處方列表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());//構造一個處方對象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è)務邏輯…//獲取要審核的Idintid=Integer.parseInt(request.getParameter("id"));//構造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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論