![Java Web 開發(fā)從入門到實(shí)踐課件 第5章 - JSP技術(shù)_第1頁](http://file4.renrendoc.com/view11/M01/31/0D/wKhkGWdz27SAP0eiAAFZW5legbQ728.jpg)
![Java Web 開發(fā)從入門到實(shí)踐課件 第5章 - JSP技術(shù)_第2頁](http://file4.renrendoc.com/view11/M01/31/0D/wKhkGWdz27SAP0eiAAFZW5legbQ7282.jpg)
![Java Web 開發(fā)從入門到實(shí)踐課件 第5章 - JSP技術(shù)_第3頁](http://file4.renrendoc.com/view11/M01/31/0D/wKhkGWdz27SAP0eiAAFZW5legbQ7283.jpg)
![Java Web 開發(fā)從入門到實(shí)踐課件 第5章 - JSP技術(shù)_第4頁](http://file4.renrendoc.com/view11/M01/31/0D/wKhkGWdz27SAP0eiAAFZW5legbQ7284.jpg)
![Java Web 開發(fā)從入門到實(shí)踐課件 第5章 - JSP技術(shù)_第5頁](http://file4.renrendoc.com/view11/M01/31/0D/wKhkGWdz27SAP0eiAAFZW5legbQ7285.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
JavaWeb開發(fā)從入門到實(shí)踐JavaWebDevelopmentFromIntroductiontoPracticeJSP技術(shù)Chap05提綱JSP技術(shù)介紹JavaServerPages的基本概念及其與Servlet的關(guān)系,主要用于動(dòng)態(tài)網(wǎng)頁開發(fā)?;菊Z法部分講解了JSP標(biāo)簽、表達(dá)式和腳本的使用,內(nèi)置對(duì)象和文件上傳下載功能則涉及了JSP中常用的服務(wù)器對(duì)象和處理文件的技術(shù)。5.1JSP概述5.2基本語法5.3JSP內(nèi)置對(duì)象5.4文件的上傳與下載5.1JSP概述5.1.1什么是JSP5.1.2JSP運(yùn)行原理5.1.1什么是JSPJSP(JavaServerPages,Java服務(wù)器頁面)是以Java為基礎(chǔ)開發(fā)的,它是在傳統(tǒng)的網(wǎng)頁HTML文件中插入Java程序段和JSP標(biāo)記,后綴名為“.jsp”。JSP的主要特點(diǎn):跨平臺(tái):可以應(yīng)用于Windows、Linux、Mac等系統(tǒng)中業(yè)務(wù)代碼分離組件重用預(yù)編譯多樣化和功能強(qiáng)大的開發(fā)工具的支持5.1.2JSP運(yùn)行原理用戶訪問Servlet時(shí),Web服務(wù)器根據(jù)請(qǐng)求的URL地址在web.xml文件中找到對(duì)應(yīng)的<servlet-mapping>,然后將請(qǐng)求交給<servlet-mapping>對(duì)應(yīng)的Servlet程序去處理。JSP文件不需要在web.xml配置文件中進(jìn)行配置,因?yàn)門omcat服務(wù)器的conf目錄的web.xml文件中實(shí)現(xiàn)了JSP的相關(guān)配置。<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup></servlet><servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> <url-pattern>*.jspx</url-pattern></servlet-mapping>web.xml文件5.1.2JSP運(yùn)行原理JSP執(zhí)行過程:1、客戶端瀏覽器發(fā)出請(qǐng)求,請(qǐng)求訪問JSP文件。2、Web容器將JSP轉(zhuǎn)譯成Servlet源碼文件。3、Web容器將產(chǎn)生的源碼文件編譯成字節(jié)碼文件。4、Web容器加載編譯后的代碼并執(zhí)行。5、Web容器將執(zhí)行結(jié)果響應(yīng)至客戶端瀏覽器。圖
5-1
JSP運(yùn)行原理5.1.2JSP運(yùn)行原理JSP轉(zhuǎn)譯生成Servlet源碼文件publicfinalclassA_jspextendsorg.apache.jasper.runtime.HttpJspBaseimplementsorg.apache.jasper.runtime.JspSourceDependent,org.apache.jasper.runtime.JspSourceImports{}A.jsp轉(zhuǎn)譯后的文件A_jsp.java代碼如下:
A_jsp繼承了org.apache.jasper.runtime.HttpJspBase類publicabstractclassHttpJspBase
extendsHttpServletimplementsHttpJspPage{ privatestaticfinallongserialVersionUID=1L;
protectedHttpJspBase(){} ...}5.2基本語法5.2.1JSP腳本標(biāo)記5.2.2JSP指令標(biāo)記5.2.3JSP動(dòng)作標(biāo)記5.2.1JSP腳本標(biāo)記JSP腳本小程序:<%Java程序段%><%@pagecontentType="text/html;charset=UTF-8"language="java"%><html> <head>
<title>輸出直角三角形</title>
</head>
<body>
<%
for(inti=0;i<5;i++){//遍歷行
for(intj=0;j<=i;j++){//遍歷每行中的*號(hào)
out.print("*");
}
out.print("<br/>");//每行輸出后回車
}
%>
</body>
</html>案例:輸出一個(gè)五行的直角三角形5.2.1JSP腳本標(biāo)記JSP聲明:<%!變量或方法的定義%><%! intm=0;//聲明一個(gè)成員變量 intadd(intx,inty){//聲明一個(gè)方法 returnx+y; }%><body><% intn=0;//聲明一個(gè)局部變量 m++; n++; intresult=add(1,2); out.print("成員變量m="+m+"<br/>"); out.print("局部變量n="+n+"<br/>"); out.print("二數(shù)的和sum="+result);%></body>案例:成員變量和局部變量的使用5.2.1JSP腳本標(biāo)記JSP表達(dá)式:<%=變量或表達(dá)式%><body> <%inti=10;%> <%=i+"+1="+(i+1)%></body>案例:創(chuàng)建一個(gè)JSP頁面,使用JSP表達(dá)式輸出數(shù)據(jù)JSP注釋靜態(tài)注釋:<!--HTML風(fēng)格的注釋-->Java注釋://單行注釋
/*
多行注釋
*/JSP注釋:<%--JSP注釋--%>5.2.2JSP指令標(biāo)記常用的JSP指令標(biāo)記包括page指令、include指令和taglib指令。page指令:<%@page屬性1="屬性1的值"屬性2="屬性2的值"%>表
5-1page指令的屬性及其描述屬性描述contentType確定響應(yīng)的MIME類型和字符編碼,常見的MIME類型有text/html(HTML解析器)、application/msword(Word應(yīng)用程序)、images/jpeg(JPEG圖形)等。例如,contentType="text/html;charset=UTF-8"language指定JSP頁面使用的腳本語言,一般設(shè)置為“java”import導(dǎo)入一個(gè)或多個(gè)包和類,例如,導(dǎo)入Java的sql包,import="java.sql.*"isErrorPage指定當(dāng)前頁面是否可以作為另一頁面的錯(cuò)誤處理頁面,例如,isErrorPage="true"errorPage指定當(dāng)前網(wǎng)頁的出錯(cuò)處理網(wǎng)頁的URL,例如,errorPage="err.jsp"5.2.2JSP指令標(biāo)記include指令:<%@includefile="URL"%><body>
<%@includefile="head.jsp"%>
<p>
1.惟沉默是最高的輕蔑。<br/>
2.勇者憤怒,抽刃向更強(qiáng)者;怯者憤怒,卻抽刃向更弱者。<br/>
3.我之所謂生存,并不是茍活,所謂溫飽,不是奢侈,所謂發(fā)展,也不是放縱。<br/></p>
</body><body>
<h2><center>名言名句大全</center></h2>
</body>head.jspinclude.jsp5.2.2JSP指令標(biāo)記taglib指令:<%@taglibprefix="前綴"uri="標(biāo)簽庫URI"%>引入JSTL標(biāo)簽庫:<%@taglibprefix="c"uri="/jsp/jstl/core"%>5.2.3JSP動(dòng)作標(biāo)記常用的JSP動(dòng)作標(biāo)記包括include、forward、param<jsp:include>、<jsp:param>動(dòng)作標(biāo)記動(dòng)作標(biāo)記<jsp:include>的作用是將JSP文件、HTML網(wǎng)頁文件或其他文本文件動(dòng)態(tài)嵌入到當(dāng)前JSP網(wǎng)頁中。<jsp:param>動(dòng)作標(biāo)記以“名稱-值”對(duì)的形式為對(duì)應(yīng)頁面?zhèn)鬟f參數(shù),<jsp:param>動(dòng)作標(biāo)記不能單獨(dú)使用,可以作為<jsp:include>、<jsp:forward>動(dòng)作標(biāo)記的子標(biāo)記使用,其基本語法如下:<jsp:includepage="URL">
<jsp:paramname="屬性名"value="屬性值"/></jsp:include>5.2.3JSP動(dòng)作標(biāo)記案例:使用遞歸求第n個(gè)斐波那契數(shù)1、parameter.jsp2、fibonacci.jsp<body>
<h2>加載fibonacci.jsp頁面,輸出第n個(gè)斐波那契數(shù)</h2><jsp:includepage="fibonacci.jsp">
<jsp:paramname="n"value="6"/>
</jsp:include>
</body><%!intfun(intn){if(n==1||n==2){return1;}else{ returnfun(n-1)+fun(n-2);}}
%>
<body>
<%
Stringn=request.getParameter("n");
out.print("第"+n+"個(gè)斐波那契數(shù):"+ fun(Integer.parseInt(n)));%>
</body>圖
5-6
斐波那契數(shù)的運(yùn)行結(jié)果5.2.3JSP動(dòng)作標(biāo)記<jsp:forward>動(dòng)作標(biāo)記動(dòng)作標(biāo)記<jsp:forward>用于從該標(biāo)記出現(xiàn)處停止當(dāng)前JSP頁面執(zhí)行,重定向到其他指定頁面。重定向的目標(biāo)可以是靜態(tài)的HTML頁面、JSP頁面,其基本語法如下:<jsp:forwardpage="頁面URL"><jsp:paramname="屬性名"value="屬性值"/></jsp:forward>5.2.3JSP動(dòng)作標(biāo)記1、forword.jsp案例:<jsp:forward>動(dòng)作標(biāo)記的使用<jsp:forwardpage="target.jsp">
<jsp:paramname="country"value="中國"/></jsp:forward>2、target.jsp<body>
<%
Stringcountry=request.getParameter("country");out.print(country+"加油!<br/>");
%>
紅星高懸,照亮了中國的前進(jìn)道路,指引著我們奮勇向前。
</body>圖
5-7
<jsp:forward>動(dòng)作標(biāo)記的使用5.3JSP內(nèi)置對(duì)象5.3.1out對(duì)象5.3.2pageContext對(duì)象5.3.3exception對(duì)象5.3JSP內(nèi)置對(duì)象表5-2
JSP內(nèi)置對(duì)象、描述及其作用域?qū)ο竺枋鲎饔糜騬equestHttpServletRequest類的實(shí)例,用于獲取用戶請(qǐng)求信息requestresponseHttpServletResponse類的實(shí)例,用于向客戶端發(fā)送響應(yīng)信息pagepageContextPageContext類的實(shí)例,用于獲取上下文信息pagesessionHttpSession類的實(shí)例,用于保存用戶信息sessionapplicationServletContext類的實(shí)例,用于保存整個(gè)應(yīng)用的共享信息applicationoutJspWriter類的實(shí)例,用于頁面輸出pageconfigServletConfig類的實(shí)例,用于獲取web應(yīng)用配置信息pagepage代表當(dāng)前被訪問JSP頁面的實(shí)例化pageexceptionException類的對(duì)象,代表發(fā)生錯(cuò)誤的JSP頁面中對(duì)應(yīng)的異常對(duì)象page5.3.1out對(duì)象out對(duì)象是向客戶端輸出內(nèi)容常用的對(duì)象。表5-3out內(nèi)置對(duì)象的常用方法方法描述voidprint()輸出數(shù)據(jù)voidnewLine()輸出換行voidclear()清除緩沖區(qū)中的數(shù)據(jù),若緩沖區(qū)是空的,則會(huì)產(chǎn)生IOException異常voidclearBuffer()清除緩沖區(qū)中的數(shù)據(jù),若緩沖區(qū)是空的,并不會(huì)產(chǎn)生IOException異常voidflush()清空緩沖區(qū)數(shù)據(jù),并輸出到網(wǎng)頁intgetBufferSize()返回緩沖區(qū)大小getRemaining()返回緩沖區(qū)剩余空間的大小booleanisAutoFlush()是否自動(dòng)輸出緩沖區(qū)中的數(shù)據(jù)voidclose()關(guān)閉輸出流5.3.1out對(duì)象案例:out對(duì)象的使用<body>
<%
intsize=out.getBufferSize();
booleanflag=out.isAutoFlush();
out.print("緩沖區(qū)大小:"+size+"<br/>");out.print("是否自動(dòng)輸出緩沖區(qū)中的數(shù)據(jù):"+flag);%>
</body>5.3.2pageContext對(duì)象pageContext對(duì)象(頁面上下文對(duì)象),用于獲取當(dāng)前JSP頁面的相關(guān)信息表
5-4pageContext內(nèi)置對(duì)象的常用方法方法描述ServletRequestgetRequest()獲取request內(nèi)置對(duì)象ServletResponsegetResponse()獲取response內(nèi)置對(duì)象HttpSessiongetSession()獲取session內(nèi)置對(duì)象ServletConfiggetServletConfig()獲取config內(nèi)置對(duì)象ServletContextgetServletContext()獲取application內(nèi)置對(duì)象ObjectgetPage()獲取page內(nèi)置對(duì)象ExceptiongetException()獲取exception內(nèi)置對(duì)象JspWritergetOut()獲取out內(nèi)置對(duì)象ObjectgetAttribute(Stringkey,intscope)獲取scope范圍、關(guān)鍵字為key的屬性對(duì)象voidsetAttribute(Stringkey,Objectvalue,intscope)設(shè)置scope范圍的屬性對(duì)象voidremoveAttribute(Stringkey,intscope)從scope范圍中移除關(guān)鍵字為key的屬性對(duì)象5.3.2pageContext對(duì)象案例:pageContext對(duì)象的使用<body>
<%
pageContext.getRequest().setAttribute("encoding","UTF-8");//設(shè)置屬性
//獲取屬性,默認(rèn)返回Object類型
Stringencoding=(String)pageContext.getAttribute("encoding",2);out.print("請(qǐng)求域中encoding的值="+encoding);%>
</body>5.3.3exception對(duì)象案例:exception對(duì)象的使用1、error.jsp<%@pagecontentType="text/html;charset=UTF-8"language="java"isErrorPage="true"%>
<html>
<head>
<title>錯(cuò)誤頁面</title>
</head>
<body>
<%
exception.printStackTrace(response.getWriter());%>
</body>
</html>2、arithmeticException.jsp<%@pagecontentType="text/html;charset=UTF-8"language="java"errorPage="error.jsp"%>
<html>
<head>
<title>數(shù)學(xué)運(yùn)算異常</title>
</head>
<body>
<%
inti=10;
intj=i/0;
%>
</body>
</html>5.3.3exception對(duì)象圖
5-8
運(yùn)行結(jié)果exception對(duì)象是一個(gè)與Error有關(guān)的內(nèi)置對(duì)象,使用該對(duì)象的頁面必須設(shè)置page指令的isErrorPage屬性為true。5.4文件的上傳與下載5.4.1文件的上傳5.4.2文件的下載5.4.1文件的上傳文件上傳的表單設(shè)置表單method屬性必須設(shè)置為post,enctype設(shè)置為“multipart/form-data”。使用表單元素<inputtype=”file”>上傳文件,該元素包含一個(gè)按鈕,點(diǎn)擊按鈕選擇待上傳的文件<formmethod="post"action="/UploadServlet"enctype="multipart/form-data">
用戶名:<inputtype="text"name="username"/><br/>
頭像:<inputtype="file"name="photo"/><br/>
<inputtype="submit"value="提交"><inputtype="reset"value="重置"></form>圖
5-9
上傳頁面5.4.1文件的上傳創(chuàng)建名為UploadServlet的Servlet,用于上傳文件@WebServlet("/UploadServlet")
@MultipartConfig(maxFileSize=10*1024*1024)//設(shè)置最大文件大小為10MB
publicclassUploadServletextendsHttpServlet{
@Override
protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{
resp.setContentType("text/html;charset=utf-8");
PrintWriterout=resp.getWriter();
Stringusername=req.getParameter("username");//獲取用戶名
Partpart=req.getPart("photo");//獲取頭像
FileuploadDir=newFile(getServletContext().getRealPath("/upload"));//文件上傳目錄
if(!uploadDir.exists()){//判斷上傳目錄是否存在,不存在則創(chuàng)建
uploadDir.mkdir();
}
5.4.1文件的上傳Stringfilename=part.getSubmittedFileName();//原始文件名
//以當(dāng)前日期作為文件名,避免與服務(wù)器已有文件重名
SimpleDateFormatsdf=newSimpleDateFormat("yyyyMMddHHmmssSSS");
StringnewFilename=sdf.format(newDate());//當(dāng)前日期格式化為字符串
Stringext=filename.substring(filename.lastIndexOf("."));//截取文件擴(kuò)展名
Stringpath=uploadDir+File.separator+newFilename+ext;//拼接上傳路徑
part.write(path);//上傳文件到服務(wù)器upload目錄中
out.println("用戶名:"+username+"<br/>");out.println("原始文件名:"+filename+"<br/>");
out.println("文件上傳到:"+path);
}
}注意:上傳多個(gè)文件需要修改以下內(nèi)容。表單中多添加幾個(gè)表單元素<inputtype=”file”>,這些元素的name屬性設(shè)置成不一樣。Partpart=req.getPart("photo")改成Collection<Part>parts=req.getParts(),然后使用for循環(huán)遍歷parts集合,循環(huán)體內(nèi)代碼與單文件上傳類似。5.4.2文件的下載文件下載的二種方式:一是通過超鏈接實(shí)現(xiàn)下載二是通過編寫程序?qū)崿F(xiàn)下載,需要設(shè)置兩個(gè)報(bào)頭。一是設(shè)置Content-Type報(bào)頭為application/x-msdownload二是設(shè)置Content-Disposition報(bào)頭為attachmentresp.setHeader("Content-Type","application/x-msdownload");resp.setHeader("Content-Disposition","attachment;filename="+filename);5.4.2文件的下載案例:通過編寫程序?qū)崿F(xiàn)下載編寫網(wǎng)頁<h2>利用程序?qū)崿F(xiàn)下載</h2>
<ahref="/fileupload/DownLoadServlet?filename=20240117103415360.png">下載</a>編寫Servlet@WebServlet("/DownLoadServlet")
publiccla
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)機(jī)產(chǎn)品收購合同范例
- 2025年度家具市場調(diào)研與推廣服務(wù)合同
- 公用汽車維修合同范例
- 個(gè)人委托購買公寓合同范例
- 2025年度家政月嫂服務(wù)合同規(guī)范文本
- 債權(quán)無償轉(zhuǎn)讓合同范例
- 體能器材出租合同范本
- 冷庫材料采購合同范本
- 個(gè)人與單位合作合同范例
- ui外包合同范本
- 建筑工地工人職業(yè)健康體檢計(jì)劃
- 河南省鄭州市十校聯(lián)考2024-2025學(xué)年高二上學(xué)期11月期中考試語文試題
- 妊娠期肝內(nèi)膽汁淤積癥臨床診治和管理指南(2024版)解讀課件
- 山東省濰坊市2024-2025學(xué)年高三上學(xué)期期末 地理試題(含答案)
- 招聘專職人員報(bào)名表
- 牛津上海版小學(xué)英語四年級(jí)下冊(cè)(英語單詞表)
- 2024年體育賽事運(yùn)動(dòng)員贊助合同3篇
- 路遙介紹課件
- 腸道健康管理
- 2024年高考語文復(fù)習(xí):古詩文閱讀強(qiáng)化練習(xí)題匯編(含答案解析)
- 臨床護(hù)理實(shí)踐指南2024版
評(píng)論
0/150
提交評(píng)論