第一篇:JSP內(nèi)置對象實(shí)驗(yàn)報(bào)告
JSP程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告
(三)院系:計(jì)算機(jī)科學(xué)與工程學(xué)院
【實(shí)驗(yàn)題目】
JSP內(nèi)置對象
【實(shí)驗(yàn)?zāi)康摹?/p>
1、了解JSP中4個(gè)內(nèi)置對象request、reponse、session、pagecontext的基本概念。
2、理解JSP內(nèi)置對象的常用方法的功能。
3、掌握J(rèn)SP內(nèi)置對象的應(yīng)用。
【實(shí)驗(yàn)內(nèi)容】
1、request對象:客戶端的請求信息被封裝在request對象中,通過它才能了解到客戶的需求,然后做出響應(yīng)。它是HttpServletRequest類的實(shí)例。
2、response對象:response對象包含了響應(yīng)客戶請求的有關(guān)信息,但在JSP中很少直接用到它。它是HttpServletResponse類的實(shí)例。
3、session對象:session對象指的是客戶端與服務(wù)器的一次會話,從客戶連到服務(wù)器的一個(gè)WebApplication開始,直到客戶端與服務(wù)器斷開連接為止。
4、pageContext對象:pageContext對象提供了對JSP頁面內(nèi)所有的對象及名字空間的訪問,也就是說他可以訪問到本頁所在的SESSION,也可以取本頁面所在的application的某一屬性值,他相當(dāng)于頁面中所有功能的集大成者。
5、練習(xí)(自己完成)
【實(shí)驗(yàn)代碼】
實(shí)驗(yàn)1 request對象使用
<%@ page language=“java” import=“java.util.*” pageEncoding=“GBK”%> <%
%>
+ request.getServerName()+ “:” + request.getServerPort()+ path + “/”;
請求方式:<%=request.getMethod()%>
請求的資源:<%=request.getRequestURI()%>
請求用的協(xié)議:<%=request.getProtocol()%>
請求的文件名:<%=request.getServletPath()%>
請求的服務(wù)器的IP:<%=request.getServerName()%>
請求服務(wù)器的端口:<%=request.getServerPort()%>
客戶端IP地址:<%=request.getRemoteAddr()%>
客戶端主機(jī)名:<%=request.getRemoteHost()%>
表單提交來的值:<%=request.getParameter(”qwe“)%>
<%
%> String str = ”“;if(request.getParameter(”qwe“)!= null){ Enumeration enumt = request.getParameterNames();while(enumt.hasMoreElements()){ str = enumt.nextElement().toString();out.println(str + ”:“ + request.getParameter(str)+ ”
");} }
第二篇:JSP內(nèi)置對象講解教案
第5章 JSP內(nèi)置對象
在JSP中預(yù)先定義好了一些常用的對象,在Web應(yīng)用中可以直接使用這些對象。內(nèi)置對象的應(yīng)用大大簡化了Web開發(fā)工作。
5.1 JSP內(nèi)置對象概述
因?yàn)閖ava是區(qū)分大小寫的,所以在JSP中對象名要注意字母的大小寫。
JSP內(nèi)置對象有9個(gè) ? request對象 ? response對象 ? out對象 ? session對象 ? application對象 ? exception對象 ? page對象
? pageContext對象 ? config對象
5.2 request對象
? request對象用于接收客戶端通過HTTP協(xié)議傳送給服務(wù)器端的數(shù)據(jù)。
? 而response對象主要用來向客戶發(fā)送信息,它包含了Web服務(wù)器對客戶的響應(yīng)信息。
? request和response對象是JSP中很重要的兩個(gè)內(nèi)置對象,是實(shí)現(xiàn)客戶端和服務(wù)器交互的基礎(chǔ)。
5.2.1 request對象的功能
? request對象用來接收客戶端提交的請求
例如:接收用戶提交的表單信息
infoReceive.jsp代碼
<% String str1=request.getParameter(“RdName”);%> <% String str2=request.getParameter(“PhName”);%> 您輸入的信息為:
姓名: <%=str1%>
電話: <%=str2%>
5.2.4 request對象常用方法
? 在客戶訪問頁面時(shí),向服務(wù)器的JSP引擎提交一個(gè)HTTP請求,該請求包含一個(gè)請求行、主機(jī)頭和上載信息。例如:
? POST /chapt5/infoReceive.jsp HTTP/1.1
//請求行 ? Host localhost
//頭,host是頭名字
? request對象也提供了一些其他方法,用來獲得客戶傳來信息的其他部分。? request對象常用方法:
1.getProtocol():獲取客戶端向服務(wù)器端傳送數(shù)據(jù)所使用的協(xié)議名稱和版本號 2.getServerName():獲得服務(wù)器的名字
3.getServerPort():獲得服務(wù)器所使用的端口號。4.getRemoteAddr():獲得客戶端的IP地址。
5.getRemoteHost():獲得客戶端主機(jī)的名字,若失敗,則返回客戶端的IP地址。6.getMethod():返回客戶端向服務(wù)器端傳送數(shù)據(jù)的方法,一般方法為get或post。
7.getCookies():返回客戶端的cookie對象,結(jié)果是一個(gè)cookie數(shù)組。如果客戶端沒有發(fā)送cookie,則返回空值。
8.getSession(boolean create):返回和當(dāng)前客戶端請求相關(guān)聯(lián)的HttpSession對象,如果當(dāng)前客戶端請求沒有和任何HttpSession對象關(guān)聯(lián),那么當(dāng)create變量為true,則創(chuàng)建一個(gè)HttpSession對象并返回;反之,返回null。9.getHeader(String name):獲得http協(xié)議定義的傳送文件頭信息。
10.getAttribute(String name):返回name指定的屬性值,若不存在指定的屬性,就返回null。
11.getAttributeNames():返回request對象所有屬性的名字,結(jié)果集是一個(gè)Enumeration(枚舉)類的實(shí)例。12.getHeaderNames():返回所有request header的名字,結(jié)果集是一個(gè)Enumeration(枚舉)類的實(shí)例。
13.getHeaders(String name):返回指定名字的request header的所有值,結(jié)果集是一個(gè)Enumeration(枚舉)類的實(shí)例。
14.getParameter(String name):以字符串的形式返回客戶端傳來的某一個(gè)請求參數(shù)的值,該參數(shù)名由name指定。當(dāng)傳遞給此方法的參數(shù)名沒有實(shí)際參數(shù)與之對應(yīng)時(shí),返回null。通常是表單中的參數(shù).15.getParameterNames():返回客戶端傳送給服務(wù)器端的所有的參數(shù)名,結(jié)果集是一個(gè)Enumeration(枚舉)類的實(shí)例。當(dāng)傳遞給此方法的參數(shù)名沒有實(shí)際參數(shù)與之對應(yīng)時(shí),返回null。
16.getParameterValues(String name):以字符串?dāng)?shù)組的形式返回指定參數(shù)所有值。
17.getQueryString():返回查詢字符串,該字符串由客戶端以GET方法向服務(wù)器端傳送。18.getRequestURI():獲得發(fā)出請求字符串的客戶端地址
19.getServletPath():獲得客戶端所請求的腳本文件的文件路徑。
20.setAttribute(String name,Java.lang.Object o):設(shè)定名字為name的request參數(shù)值,該值由Object類型的o指定。
21.getContentLength():以字節(jié)為單位返回客戶端請求的大小。如果無法得到該請求的大小,則返回-1。22.getContentType():獲取客戶端請求的MIME類型。如果無法得到該請求的MIME類型,那么返回-1。23.getInputStream():以二進(jìn)制的形式將客戶端的請求以一個(gè)ServletInputStream的形式返回。使用此方法可以獲得客戶端的multipart/form-data數(shù)據(jù),可以實(shí)現(xiàn)文件上傳。
24.isSecure():如果客戶機(jī)是通過一個(gè)安全的訪問方式訪問的,就返回true;反之,返回false。25.getDateHeader():返回一個(gè)long類型的數(shù)據(jù),表示客戶端發(fā)送到服務(wù)器的頭信息中的時(shí)間信息。26.getInitHeader():獲取客戶端發(fā)送到服務(wù)器端的頭信息中的某一個(gè)特定的信息,并轉(zhuǎn)換為int類型。27.getContextPath():返回環(huán)境路徑.對于JSP來說,一般是當(dāng)前Web應(yīng)用程序的根目錄。
28.isRequestedSessionIdValid():返回一個(gè)指示客戶端請求發(fā)送Session ID是否仍然有效的布爾值。
29.isRequestedSessionIdFromCookie():返回一個(gè)指示客戶端請求發(fā)送Session ID是否存在于Cookie中的布爾值。
30.isRequestedSessionIdFromURL():返回一個(gè)指示客戶端請求發(fā)送Session ID是否存在于URL中的布爾值。
5.2.5 request對象常用方法應(yīng)用案例
【例5.2】 使用request對象的常用方法,獲取客戶端提交信息的不同部分。
本例中的用戶輸入頁面infoInput2.html只需要把例5.1的文件infoInput.html的form的action屬性值改為infoReceive2.jsp即可。infoReceive2.jsp主要代碼
<%
out.println(“姓名文本框提交信息:” + request.getParameter(“RdName”)+ “
”);out.println(“電話文本框提交信息:” + request.getParameter(“PhName”)+ “
”);out.println(“客戶端協(xié)議名和版本號:” + request.getProtocol()+ “
”);out.println(“客戶機(jī)名:” + request.getRemoteHost()+ “
”);out.println(“客戶機(jī)的IP地址:” + request.getRemoteAddr()+ “
”);out.println(“客戶提交信息的長度:” + request.getContentLength()+ “
”);
%> out.println(“---------
”);
out.println(“getContextPath:” +request.getContextPath()+ “
”);out.println(“requestURI=” + request.getRequestURI()+ “
”);out.println(“requestURL=” + request.getRequestURL()+ “
”);out.println(“servletPath=” + request.getServletPath()+ “
”);// getServletPath 不建議使用 因?yàn)楫?dāng)servlet映射成/*時(shí) 無法獲得
String uri = request.getRequestURI();String servletPath = uri.substring(request.getContextPath().length());out.println(“servletPath=” + servletPath + “
”);總結(jié):
request.getRequestURI()與request.getRequestURL()與request.getServletPath()區(qū)別
a)getRequestURI()獲得的信息:/day6/servlet/RequestServlet b)getRequestURL()獲得的信息:http://localhost/day6/servlet/RequestServlet c)getServletPath()獲得的信息: servlet/RequestServlet
getServletPath 不建議使用
因?yàn)楫?dāng)servlet映射成/*時(shí) 無法獲得。
d)request.getContextPath()獲得的信息: /day6
那如何獲取serverpath String uri = request.getRequestURI();
// /day06aaa/servlet/RequestDemo1
String servletPath = uri.substring(request.getContextPath().length());
System.out.println(“servletPath=” + servletPath);5.3 response對象
? ? 把服務(wù)器端的數(shù)據(jù)以HTTP的格式發(fā)送到客戶端瀏覽器 它的功能和request對象的功能相反
? request對象用于得到用戶提交的信息 ? 而response對象是向用戶發(fā)送信息
? 兩者結(jié)合起來完成動態(tài)頁面的交互功能。
5.3.1 response對象的功能
? response對象提供的幾種輸出結(jié)果的主要方法:
? sendRedirect():頁面重定向方法。? setStatus():設(shè)置狀態(tài)行方法。
? setContentType():設(shè)置文本類型方法。
5.3.2 sendRedirect()方法
? 將客戶端瀏覽器轉(zhuǎn)向新的頁面,頁面中重定向語句后的代碼不再被執(zhí)行。? 它可以根據(jù)用戶的不同要求轉(zhuǎn)向不同的頁面。? 例如:防盜鏈。(第3章 http協(xié)議中講解)
【例5-3】response對象的使用。
? 用戶在登錄界面輸入用戶名和密碼,提交后驗(yàn)證登錄者輸入的用戶名和密碼是否正確,根據(jù)判斷結(jié)果轉(zhuǎn)向不同的頁面。
? 其中userLogin.html為用戶輸入界面
? userReceive.jsp為接收用戶輸入信息并判斷輸入是否正確頁面
? loginCorrect.html和loginError.html分別為登錄成功界面和登錄失敗界面。
userLogin.html頁面主要代碼:
userReceive.jsp頁面源代碼:<% String Name = request.getParameter(“RdName”);String Passwd = request.getParameter(“RdPasswd”);if(Name.equals(“Mary”)&& Passwd.equals(“123456”))
response.sendRedirect(“l(fā)oginCorrect.html”);else
response.sendRedirect(“l(fā)oginError.html”);%>
? 需要注意的是,在實(shí)際的Web開發(fā)中,用戶的信息保存在數(shù)據(jù)庫中,判斷用戶登錄時(shí)所輸入的用戶名和密碼是否正確需要連接到數(shù)據(jù)庫,和數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行匹配。此處為了演示sendRedirect方法的使用,簡單的和常量進(jìn)行比較。
5.3.3 response的狀態(tài)行
1.狀態(tài)行的作用
當(dāng)頁面出現(xiàn)錯誤時(shí),服務(wù)器會自動響應(yīng),將相應(yīng)的出錯信息返回客戶端。狀態(tài)行包含3位數(shù)字的狀態(tài)代碼,代表錯誤的性質(zhì)和處理方法。共有5類狀態(tài)碼,如下:
1XX(1開頭的3位數(shù)):主要是實(shí)驗(yàn)性質(zhì)的。例如101表示服務(wù)器正在升級協(xié)議。
2XX:表示請求成功。如200表示請求成功。
3XX:表示在請求滿足之前應(yīng)采取的進(jìn)一步行動。如302請求重定向; 305表示請求必須通過代理來訪問。
4XX:瀏覽器不能滿足請求時(shí),返回的狀態(tài)碼。如404表示請求的頁面不存在。
5XX:服務(wù)器執(zhí)行出現(xiàn)錯誤時(shí),返回的狀態(tài)碼。如500表示服務(wù)器內(nèi)部發(fā)生錯誤,不能服務(wù)。
2.setStatus()方法
程序中可以使用response對象的setStatus()方法設(shè)置狀態(tài)碼。在一般情況下,不需要在程序中設(shè)置狀態(tài)碼。頁面出現(xiàn)問題時(shí),服務(wù)器會自動響應(yīng),并發(fā)送相應(yīng)的狀態(tài)碼提示用戶。
? 使用response.setStatus(int n)方法設(shè)置狀態(tài)行
? 例如response.setStatus(501)取得錯誤信息為501的出錯信息,返回該出錯頁面到客戶端。? 如果狀態(tài)代碼為出錯碼,頁面中 response.setStatus()后面的語句將不被執(zhí)行。
[例5-4]狀態(tài)行的應(yīng)用
本例包含4個(gè)文件 : StatueCode.html
顯示不同的狀態(tài)行
href=“statusCode200.jsp”>200請求成功信息
第三篇:JSP實(shí)驗(yàn)報(bào)告
中南民族大學(xué)管理學(xué)院
學(xué)生實(shí)驗(yàn)報(bào)告
課程名稱: JSP程序設(shè)計(jì) 年
級: 2010 專
業(yè): 姓 名: 學(xué) 號: 指導(dǎo)教師:
實(shí)驗(yàn)地點(diǎn): 管理學(xué)院綜合實(shí)驗(yàn)室
學(xué)年至 學(xué)第 學(xué)期
第一章 JSP簡介
實(shí)驗(yàn) Tomcat服務(wù)器的安裝與配置
一、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是讓學(xué)生掌握怎樣設(shè)置Web服務(wù)目錄、怎樣訪問Web服務(wù)目錄下的JSP頁面、怎樣修改Tomcat服務(wù)器的端口號。
二、實(shí)驗(yàn)要求
1、將下載的apache-tomcat-6.0.13.zip解壓到硬盤某個(gè)分區(qū),比如D。
2、在硬盤分區(qū)D下新建一個(gè)目錄,名字為student,見stuent設(shè)置為Web服務(wù)目錄,并為該Web服務(wù)目錄指定名字為good的虛擬目錄。
3、修改端口號為5678.在server.xml文件中找到修改端口號的部分,將端口號修改為5678.4、啟動Tomcat服務(wù)器。
5、用文本編輯器編寫一個(gè)簡單的JSP頁面biao.jsp,并保存到Web服務(wù)目錄student中。
6、用瀏覽器訪問Web服務(wù)目錄student中的jsp頁面biao.jsp。
三、實(shí)驗(yàn)內(nèi)容
1、Tomcat安裝成功并運(yùn)行
2、編碼實(shí)現(xiàn)乘法表 3.代碼
四、實(shí)驗(yàn)結(jié)果
biao.jsp頁面
五、實(shí)驗(yàn)結(jié)果分析
1、默認(rèn)的端口號為8080,若修改,在conf目錄下的server.xml文件中修改端口號。
2、設(shè)置虛擬目錄。在conf目錄下的server.xml中前加入:
3、Tomcat服務(wù)器必須保持啟動。第二章 JSP頁面與JSP標(biāo)記 實(shí)驗(yàn)1 JSP頁面的基本結(jié)構(gòu)
一、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是讓學(xué)生掌握怎樣在JSP頁面中使用成員變量,怎樣使用Java程序片、Java表達(dá)式。
二、實(shí)驗(yàn)要求
本實(shí)驗(yàn)將用戶輸入的單詞按字典順序。需要編寫兩個(gè)JSP頁面,名字分別為inputWord.jsp和showDictionary.jsp。
1、inputWord.jsp的具體要求 該頁面有一個(gè)表單,用戶通過將該表單輸入若干個(gè)單詞,并提交給showDictionary.jsp頁面。
2、showDictionary.jsp的具體要求
該頁面負(fù)責(zé)排序單詞,并將排序的全部單詞顯示給用戶。
(1)該JSP頁面有個(gè)名字為dictionary、類型是TreeSet成員變量。
(2)該JSP頁面有public void addWord(String s)方法,該方法將參數(shù)s指定的字符串添加到成員變量dictionary中。
(3)該JSP頁面在程序片中操作dictionary,即顯示全部的單詞。
三、實(shí)驗(yàn)內(nèi)容
1)inputWord.jsp頁面有一個(gè)表單,用戶通過該表單輸入若干個(gè)單詞,并提交給showDictionary.jsp頁面。
2)showDictionary.jsp負(fù)責(zé)排序單詞,并將排序的全部單詞顯示給用戶。3)代碼
四、實(shí)驗(yàn)結(jié)果
inputWord.jsp頁面
showDictionary.jsp頁面
五、實(shí)驗(yàn)結(jié)果分析
1、jsp頁面由html標(biāo)記、jsp標(biāo)記、成員變了和方法的聲明、java程序片和java表達(dá)式組成。
2、jsp頁面中的成員變量是被所有用戶共享的變量。Java程序片可以操作成員變了,任何一個(gè)用戶對jsp頁面成員變量操作的結(jié)果,都會影響到其他用戶。
實(shí)驗(yàn)2 JSP指令標(biāo)記
一、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是讓學(xué)生掌握怎樣在JSP頁面中使用include指令標(biāo)記在JSP頁面中靜態(tài)插入一個(gè)文件內(nèi)容。
二、實(shí)驗(yàn)要求
該實(shí)驗(yàn)要求使用include指令標(biāo)記使得每個(gè)頁面都包含有導(dǎo)航條。在進(jìn)行實(shí)驗(yàn)之前將名字是leader.txt的文件保存到本實(shí)驗(yàn)所使用的web服務(wù)目錄中。實(shí)驗(yàn)要求編寫3個(gè)JSP頁面,具體要求如下。first.jsp的具體要求
first.jsp使用include指令靜態(tài)插入leader.txt.second.jsp的具體要求
second.jsp使用include指令靜態(tài)插入leader.txt.third.jsp的具體要求
third.jsp使用include指令靜態(tài)插入leader.txt.三、實(shí)驗(yàn)內(nèi)容
leader.txt編寫3個(gè)JSP頁面。
1)frist.jsp使用include指令靜態(tài)插入leader.txt文本文件。2)second.jsp使用include指令靜態(tài)插入leader.txt文件。3)third.jsp使用include指令靜態(tài)插入leader.txt。3)代碼 1
2.3.4.4)
四、實(shí)驗(yàn)結(jié)果
frist.jsp頁面
second.jsp頁面
third.jsp頁面
五、實(shí)驗(yàn)結(jié)果分析
1、include指令標(biāo)記是在jsp頁面出現(xiàn)該指令的位置處,靜態(tài)的插入一個(gè)文 件。被插入的文件必須是可訪問和可使用的。Include指令標(biāo)記是在編譯 階段就處理所需要的文件,被處理的文件在邏輯和語法上依賴與當(dāng)前jsp 頁面,優(yōu)點(diǎn)是執(zhí)行速度快。
實(shí)驗(yàn)3 JSP動作標(biāo)記
一、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是讓學(xué)生掌握怎樣在JSP頁面中使用include標(biāo)記動態(tài)加載文件,使用forward實(shí)現(xiàn)頁面的轉(zhuǎn)向。
二、實(shí)驗(yàn)要求
編寫3個(gè)JSP頁面:giveFileName.jsp、readFile.jsp和error.jsp。
1、giveFileName.jsp的具體要求
要求giveFileName.jsp頁面使用include動作標(biāo)記動態(tài)加載readFile.jsp頁面,并將一個(gè)文件的名字比如ok.txt傳遞給被加載的readFile.jsp頁面。
2、readFile.jsp的具體要求
要求readFile.jsp負(fù)責(zé)根據(jù)giveFileName.jsp頁面?zhèn)鬟f過來的文件名字進(jìn)行文件的讀取操作,如果該文件不存在就使用
Forward動作標(biāo)記將用戶轉(zhuǎn)向error.jsp頁面。
3、error.jsp的具體要求 負(fù)責(zé)顯示錯誤信息。
三、實(shí)驗(yàn)內(nèi)容
1)giveFileName.jsp頁面使用include動作標(biāo)記動態(tài)加載readFtle.jsp頁面,并將一個(gè)文件的名字ok.txt傳遞給被加載的readFtle.jsp頁面。
2)readFile.jsp頁面負(fù)責(zé)根據(jù)giveFileName.jsp頁面?zhèn)鬟f過來的文件名字進(jìn)行文件的讀取操作,如果該文件不存在就使用forward動作標(biāo)記將用戶轉(zhuǎn)向error.jsp。
3)error.jsp負(fù)責(zé)顯示錯誤信息。4)代碼
四、實(shí)驗(yàn)結(jié)果
giveFileName.jsp頁面
error.jsp頁面
五、實(shí)驗(yàn)結(jié)果分析
1、include動作標(biāo)記是在jsp頁面運(yùn)行時(shí)才處理加載的文件,被加載的文件在邏輯和語 法上獨(dú)立與當(dāng)前jsp頁面,include指令標(biāo)記可以使用param子標(biāo)記向被加載的jsp 文件傳遞信息。第三章 Tag文件與Tag標(biāo)記
實(shí)驗(yàn)1 JSP頁面的基本結(jié)構(gòu)
一、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是讓學(xué)生靈活掌握在Tag標(biāo)記中使用標(biāo)記體。
二、實(shí)驗(yàn)要求
編寫一個(gè)JSP頁面giveMess.jsp和一個(gè)Tag文件handleMess.tag。JSP頁面通過調(diào)用Tag文件在表格中的單元格顯示文本,該JSP頁面通過使用標(biāo)記體將要顯示的文件傳遞給被調(diào)用的Tag文件。
三、實(shí)驗(yàn)內(nèi)容
1、giveMess.jsp頁面使用帶標(biāo)記體的Tag標(biāo)記來調(diào)用Tag文件,其中標(biāo)記體是一行文本,如下所示:
2、handelMess.tag使用
3、分別寫出giveMess.jsp和handelMess.tag的代碼。4.代碼
四、實(shí)驗(yàn)結(jié)果
giveMess.jsp頁面
五、實(shí)驗(yàn)結(jié)果分析
1、tag文件中可以有html標(biāo)記符、特殊的指令標(biāo)記、成員變了和方法、java程序片和java表達(dá)式。
2、jsp頁面使用tag標(biāo)記動態(tài)執(zhí)行一個(gè)tag文件。
3、當(dāng)jsp頁面調(diào)用一個(gè)tag文件時(shí)可能希望動態(tài)地向該tag文件傳遞信息,那么就可以使用帶有標(biāo)記體的tag標(biāo)記來執(zhí)行一個(gè)tag文件。
實(shí)驗(yàn)2 使用attribute指令
一、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是讓學(xué)生靈活掌握在Tag標(biāo)記中使用attribute指令。
二、實(shí)驗(yàn)要求
編寫一個(gè)ShowCalendar.tag文件,該Tag文件負(fù)責(zé)顯示日歷。編寫一個(gè)JSP頁面giveYearMonth.jsp,該JSP頁面使用Tag標(biāo)記調(diào)用ShowCalendar.tag文件,并且向ShowCalendar.tag文件傳遞年份和月份。
三、實(shí)驗(yàn)內(nèi)容
1、giveYearMonth.jsp通過tag標(biāo)記調(diào)用ShowCalendar.tag文件,并且向ShowCalendar.tag文件傳遞年份和月份。
2、ShowCalendar.tag文件根據(jù)jsp頁面?zhèn)鬟f過來的年份和月份顯示日歷。該文件能對jsp頁面?zhèn)鬟f過來的數(shù)據(jù)進(jìn)行判斷,比如,如果jsp頁面?zhèn)鬟f過來的數(shù)據(jù)不是數(shù)值型數(shù)據(jù),tag文件負(fù)責(zé)顯示錯誤信息。4.代碼
四、實(shí)驗(yàn)結(jié)果
giveYearMonth.jsp頁面
五、實(shí)驗(yàn)結(jié)果分析
1、一個(gè)tag文件中通過使用attribute指令,使得jsp頁面在調(diào)用tag文件時(shí),可以 向該tag文件中的對象傳遞一個(gè)引用。tag文件中使用attribute指令:
<%@ attribute name=“對象名字” required=“true”|“false” type=“對象的類型”%>
實(shí)驗(yàn)3 使用variable指令
一、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是讓學(xué)生靈活掌握在Tag標(biāo)記中使用variable指令。
二、實(shí)驗(yàn)要求
編寫一個(gè)Tag文件GetWord.tag,負(fù)責(zé)分解出字符串中的全部單詞,并將分解出的全部單詞返還給調(diào)用該Tag文件的JSP頁面。編寫一個(gè)JSP頁面giveSoring.jsp,該頁面負(fù)責(zé)向Tag文件傳遞一個(gè)由英文單詞構(gòu)成的字符串,并負(fù)責(zé)顯示Tag文件返回的全部單詞。
三、實(shí)驗(yàn)內(nèi)容
1、giveSoring.jsp通過tag標(biāo)記調(diào)用GetWord.tag,并傳遞一個(gè)由英文單詞構(gòu)成的字符串,顯示tag文件返回的全部單詞。
2、GetWord.tag使用attibute指令得到j(luò)sp頁面?zhèn)鬟f過來的字符串,并用vatiable指令返回全部的單詞。
3.代碼
四、實(shí)驗(yàn)結(jié)果 giveSoring.jsp頁面
五、實(shí)驗(yàn)結(jié)果分析
1、Tag文件可以使用variable指令把一個(gè)對象返回給調(diào)用它的jsp頁面
Tag文件使用variable指令給出返回的對象的名字、類型和有效范圍:
<%@ variable name-given=“對象名字” variable-class=“對象的類型” scope=“有效范圍”%>
第4章 JSP內(nèi)置對象 實(shí)驗(yàn)1 request對象
一、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是讓學(xué)生掌握怎樣在JSP中使用內(nèi)置對象request。
二、實(shí)驗(yàn)要求
通過JSP頁面和Tag文件實(shí)現(xiàn)數(shù)字的四則運(yùn)算,要求編寫兩個(gè)JSP頁面inputNumber.jsp和receiveNumber.jsp及一個(gè)Tag文件Computer.tag。receiveNumber.jsp使用內(nèi)置對象接受inputNumber.jsp提交的數(shù)據(jù),然后將計(jì)數(shù)任務(wù)交給Tag文件Computer.tag去完成。
三、實(shí)驗(yàn)內(nèi)容
1)inputNumber.jsp頁面提供一個(gè)表單,用戶可以通過表單輸入兩個(gè)數(shù)、選擇四則運(yùn)算符號,并將輸入的兩個(gè)數(shù)和所選擇的運(yùn)算符號提交給receiveNumber.jsp頁面。
2)receiveNumber.jsp使用內(nèi)置對象inputNumber.jsp頁面提交的數(shù)據(jù),然后將計(jì)算任務(wù)交給Tag文件Computer.tag去完成。
3)要求Computer.tag使用attribute指令得到receiveNumber.jsp頁面?zhèn)鬟f過來的書和運(yùn)算符號,使用variable指令將運(yùn)算結(jié)果返回給receiveNumber.jsp頁面。
4)代碼
四、實(shí)驗(yàn)結(jié)果
inputNumber.jsp頁面
receiveNumber.jsp頁面
五:實(shí)驗(yàn)結(jié)果分析
1、內(nèi)置對象request的作用就是用來接收客戶端提交的請求
2、request對象用的比較多的方法是getParameter方法。
request對象的getParameter方法根據(jù)指定的參數(shù),獲取客戶端提交的信息。
其語法規(guī)則如下:
<% String name=request.getParameter(“txtName”)%>
其中,name是一個(gè)字符串變量。txtName是客戶端提交信息中的一個(gè)字段名。
3、下面的就是在實(shí)驗(yàn)里面request的使用 <% String a=request.getParameter(“numberOne”);String b=request.getParameter(“numberTwo”);String operator=request.getParameter(“operator”)
實(shí)驗(yàn)2 responese對象
一、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是掌握怎樣使用response對象動態(tài)響應(yīng)用戶的請求。
二、實(shí)驗(yàn)要求
編寫兩個(gè)JSP頁面inputRadius.jsp和drawCircle.jsp頁面,drawCircle.jsp頁面使用response對象做出動態(tài)響應(yīng)。
三、實(shí)驗(yàn)內(nèi)容
1)inputRadius.jsp提供表單,用戶在表單中輸入一個(gè)代表圓的半徑的數(shù)字,提交給drawCircle.jsp頁面。
2)drawCircle.jsp頁面首先使用request對象獲得inputRadius.jsp提交的數(shù)字,然后根據(jù)數(shù)字的大小做出不同的響應(yīng)。如果數(shù)字小于等于0或者大于100,response對象調(diào)用setCountType(String s)方法將contentType屬性的值設(shè)置為text/plain,同時(shí)輸出“半徑不合理”;如果數(shù)字大于0并且小于等于100,response對象調(diào)用setContentType(String s)方法將contentType屬性的值設(shè)置為image/jpeg,并繪制一個(gè)圓;如果用戶在inputRadius.jsp頁面輸入了非數(shù)字,response對象調(diào)用sendRedirect(URL url)方法將用戶重定向到inputRadius.jsp。
3)代碼
四、實(shí)驗(yàn)結(jié)果
1、在輸入要求的范圍以內(nèi):
inputRadius.jsp頁面
drawCircle.jsp頁面
2、當(dāng)輸入的數(shù)據(jù)不符合要求的結(jié)果顯示:
inputRadius.jsp頁面
drawCircle.jsp頁面
五、實(shí)驗(yàn)結(jié)果分析:
1、response的作用就是把服務(wù)器端的數(shù)據(jù)以HTTP的格式發(fā)送到客戶端瀏覽器
2、與request相比,它的功能和request對象的功能相反。request對象用于得到用戶提交的信息而response對象是向用戶發(fā)送信息,兩者結(jié)合起來完成動態(tài)頁面的交互功能。
3、response對象的主要方法:
sendRedirect():頁面重定向方法 setStatus():設(shè)置狀態(tài)行方法
setContentType():設(shè)置文本類型方法
實(shí)驗(yàn)3 session對象
一、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是讓學(xué)生掌握怎樣使用session對象存儲和用戶有關(guān)的數(shù)據(jù)。
二、實(shí)驗(yàn)要求
使用session對象模擬購物車。編寫兩個(gè)JSP頁面choiceBook.jsp和orderForm.jsp。
三、實(shí)驗(yàn)內(nèi)容 1)用戶在choiceBook.jsp頁面通過超鏈接將自己要購買的圖書信息傳遞到orderForm.jsp頁面。
2)orderForm頁面將用戶購買的圖書信息存儲到session對象中,然后生成一個(gè)圖書訂單并顯示給用戶。
3)代碼
四、實(shí)驗(yàn)結(jié)果:
choiceBook.jsp頁面
orderForm頁面
五、實(shí)驗(yàn)結(jié)果分析:
1、session的作用就是記住客戶的連接信息,可以使用會話對象(session)。session對象記錄了每個(gè)客戶與服務(wù)器的連接信息
2、判斷session是否失效有三種情況1)、客戶是否關(guān)閉瀏覽器。2)、是否到達(dá)最大的發(fā)呆時(shí)間3)、是否調(diào)用validate()函數(shù)
3、session對象常用方法:
setAttribute(String name,java.lang.Object value):設(shè)定指定名字的屬性值,并且把它存儲在session對象中。getAttribute(String name):獲得指定名字的屬性,如果該屬性不存在,將會返回null
第5章 JSP中的文件操作(實(shí)驗(yàn))實(shí)驗(yàn)1 使用文件字節(jié)流讀寫文件
1、相關(guān)知識點(diǎn)。
Fileunputstream流以字節(jié)(byte)為單位順序地讀取文件,只要不關(guān)閉流,每次調(diào)用read的方法就書訊地讀取源中其余的內(nèi)容,直接原到尾末或流被關(guān)閉。
Fileunputstream流以字節(jié)(byte)為單位順序地寫文件,只要不關(guān)閉流,每次調(diào)用writer方法就順序地向輸出流寫入內(nèi)容。2.實(shí)驗(yàn)?zāi)康摹?/p>
本實(shí)驗(yàn)的目的是掌握使用文件輸入,輸出字節(jié)流讀寫文件。3.實(shí)驗(yàn)要求。
1)giveContent.jsp頁面提供一個(gè)表單,要求該表單提供一個(gè)text文件輸入框、select下拉列表和一個(gè)TextArea文本區(qū),用戶可以在text輸入框中輸入文件的名字、在select下拉列表選擇一個(gè)目錄、通過TextArea輸入多行文本。
2)writeContent.jsp頁面首先獲得giveContent.jsp頁面提交的文件所在目錄、名字以及TextArea文本區(qū)中的內(nèi)容傳遞給WriteTag.tag。
3)lookContent.jsp頁面提供一個(gè)表單,該表單提供兩個(gè)text文本輸入框,用戶可以在這兩個(gè)text文本框中輸入目錄和文件名字。單擊表單的“提交”按鈕將text中輸入的文件目錄以及文件名字提交給readContent.jsp。
4)readContent.jsp頁面首先獲得lookContent.jsp頁面提交的文件目錄、名字,然后使用Tag標(biāo)記調(diào)用Tag文件ReadTag.tag,并將文件所在目錄、名字傳遞給ReadTag.tag。
5)writeTag.tag文件使用attribute指令獲得writeCintent.jsp頁面?zhèn)鬟f過來的文件目錄 文件名字和文件內(nèi)容,然后使用文件字節(jié)輸入流將文件內(nèi)容寫入到文件中,給文件所在目錄就是writeCintent.jsp頁面?zhèn)鬟f過來的文家目錄,名字就是writeCintent.jsp頁面?zhèn)鬟f過來的文家名字。
6)ReadTag。Tag的具體要求
Read.Tag文件使用attribute指令獲得readContent.jsp頁面?zhèn)鬟f過來的文件目錄 文件名字和文件內(nèi)容,然后使用文件字節(jié)輸入流讀取文件,并負(fù)責(zé)現(xiàn)實(shí)所讀取的內(nèi)容。
7)代碼
4、實(shí)驗(yàn)結(jié)果:
giveContent.jsp頁面
writeContent.jsp頁面
lookContent.jsp頁面
readContent.jsp頁面
5、實(shí)驗(yàn)結(jié)果分析
1、把輸入流的指向稱做源,程序從指向源的輸入流中讀取源中的數(shù)據(jù)。而輸出流的指向是數(shù)據(jù)要去的一個(gè)目的地,程序通過向輸出流中寫入數(shù)據(jù)把信息傳遞到目的地。所有字節(jié)輸入流類都是InputStream(輸入流)抽象類的子類,而所有字節(jié)輸出流都是OutputStream(輸出流)抽象類的子類。
2、int read(): 輸入流調(diào)用該方法從源中讀取單個(gè)字節(jié)的數(shù)據(jù),該方法返 回字節(jié)值,如果未讀出字節(jié)就返回-1。
3、void write(int n): 輸出流調(diào)用該方法向輸出流寫入單個(gè)字節(jié)
實(shí)驗(yàn)2 使用文件字節(jié)流加密文件
1、相關(guān)知識點(diǎn)
fileinputstream流和filereader流都是順序的讀取文件,只要不關(guān)閉,每次調(diào)用read方法就順序的讀取源中其余的內(nèi)容,只到源的末尾或流被關(guān)閉;二者的區(qū)別是fileinputstream流以字節(jié)為單位讀取文件,filereader流以字符為單位讀取文件
Fileoutstream流和filewtiter流順序地寫文件,只要不關(guān)閉流,每次調(diào)用writer方法的就順序的向輸出流寫入內(nèi)容,只到流被關(guān)閉。二者額區(qū)別是fileoutstream流以字節(jié)為單位些文件,filewtiter流以字符為單位文件
2、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)?zāi)康氖钦莆帐褂梦募址斎胼敵鲎x寫文件
3、實(shí)驗(yàn)要求
編寫3個(gè)jsp頁面inputcontent,jsp write,jsp read.jsp ,兩個(gè)tag文件write.Tag和read.Tag 1).inputcontent,jsp的具體要求
inputcontent,jsp頁面提供一個(gè)表單,要求該表單提供textarea的輸入界面 用戶可以通過textarea的輸入界面多行文本提供交給write。Jsp界面 2.)write,jsp 的具體要求
write,jsp頁面調(diào)用一個(gè)tag文件write,jsp將inputcontent,jsp 頁面提交的文本信息加密后寫入文件save.txt中。
3)read.jsp 的具體要求
read.jsp 頁面提供一個(gè)表單,該表單提供兩個(gè)單選按鈕,名字分別是讀取加密的文件和讀取解密的文件 該頁面選中的單選按鈕的值提交給本頁面如果該頁面提交的值是單選按鈕讀取加密的文件的值 該頁面調(diào)用tag文件read.tag讀取文件save.txt如果該頁面提交的值是單選按鈕讀取解密文件的值,該頁面負(fù)責(zé)顯示read.tag文件返回的有關(guān)信息 4)write.Tag的具體要求
write.Tag文件使用attribute指令獲得write.jsp頁面?zhèn)鬟f過來的文本信息,并使用文本文件輸出流其寫入到文件save.txt 5)read.Tag的具體要求 read.Tag文件使用文件輸入流讀取文件save.txt,并根據(jù)read.jsp的要求決定是否進(jìn)行 6)代碼
四、實(shí)驗(yàn)結(jié)果:
7)inputContent.jsp頁面
8)write.jsp頁面
9)read.jsp頁面
10)
五、實(shí)驗(yàn)結(jié)果分析:
11)
1、FileInputStream流和FileReader流都是順序的讀取文件,只要不關(guān)閉流。每次調(diào)用read方法就順利的讀取源中其余的內(nèi)容,直到源的末尾或流被關(guān)閉。兩者的區(qū)別是Fileinputstream流以字節(jié)為單位讀取文件,F(xiàn)ileReader流以字符為單位讀取文件。
12)
2、FileOutStream流和FileReader流都是順序的寫文件,只要不關(guān)閉文件,每次調(diào)用write方法就順序的向輸出流寫入內(nèi)容,直到流被關(guān)閉。二者的區(qū)別是FileOutStream流以字節(jié)為單位讀取文件,F(xiàn)ileReader流以字符為單位讀取文件。
實(shí)驗(yàn)3 使用數(shù)據(jù)流讀寫Java數(shù)據(jù)
1、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是掌握使用數(shù)據(jù)流讀寫Java數(shù)據(jù)。
2、實(shí)驗(yàn)要求
編寫兩個(gè)JSP頁面writeData.jsp和readData.jsp。
3、實(shí)驗(yàn)內(nèi)容
1)writeData.jsp頁面使用Java程序片將一個(gè)int型數(shù)據(jù)、一個(gè)long型數(shù)據(jù)、一個(gè)char型數(shù)據(jù)、一個(gè)String型數(shù)據(jù)和一個(gè)double型數(shù)據(jù)寫入到名字為javaData.data的文件中。
2)readData.jsp頁面讀取javaData.data文件中的數(shù)據(jù)并顯示出來。3)代碼
4、實(shí)驗(yàn)結(jié)果
writeData.jsp頁面
readData.jsp頁面
5、實(shí)驗(yàn)結(jié)果分析
1、Java使用流(stream)來執(zhí)行輸入輸出(I/O)的功能,流是一種數(shù)據(jù)的源頭和目的之 間的通信途徑.用于讀入數(shù)據(jù)稱為輸入流(input stream), 用于寫出數(shù)據(jù)稱為輸出流(output stream).2、當(dāng)使用流時(shí)需要使用java.io包,因此在涉及數(shù)據(jù)流操作的程序中都要先導(dǎo)入 java.io包:import java.io.*;
第六章 JSP中使用數(shù)據(jù)庫
要求在webapps目錄下新建一個(gè)web服務(wù)目錄chapter6。除特別要求外,本章實(shí)驗(yàn)所涉及的jsp頁面均保存在chapter6中;tag文件保存在chapter6web-inttags目錄中。
實(shí)驗(yàn)中用到的數(shù)據(jù)庫為book,其中的表為bookform表。在進(jìn)行實(shí)驗(yàn)之前首先完成下列任務(wù):
1、使用microsoft access 2003 創(chuàng)建一個(gè)數(shù)據(jù)庫book(book.mdb)。
2、在數(shù)據(jù)庫book中創(chuàng)建名名字為bookform的表,表的字段及屬性如圖6-1所示。
3、講數(shù)據(jù)庫book設(shè)置為名字為information的數(shù)據(jù)源。
實(shí)驗(yàn)1 查詢記錄
1、相關(guān)知識點(diǎn)
本實(shí)驗(yàn)使用jdbc-odbc橋接器方式和數(shù)據(jù)庫建立連接,查詢數(shù)據(jù)庫中表的記錄的步驟是:(1)與數(shù)據(jù)庫information建立連接;
Connection con=DriverManager.get Connection(‘jdbc:odbc: information’);(2)返回Statement對象;
Statement sql=con.createStatement();(3)向數(shù)據(jù)庫發(fā)送關(guān)于查詢記錄的sql語句。返回查詢結(jié)果,即Resultset對象
2、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是掌握使用jdbc查詢數(shù)據(jù)庫中表的記錄。
3、實(shí)驗(yàn)要求
編寫一個(gè)jsp頁面inputMess.jsp。編寫一個(gè)tag文件FindBook.tag。1)inputMess.jsp的具體要求
inputMess.jsp頁面提供表單。表單允許用戶輸入要查詢的內(nèi)容,以及選擇針對該內(nèi)容的查詢條件,比如,輸入“實(shí)用”,那么可以指定該內(nèi)容是書名的一部分或作者姓名等。inputMess.jsp頁面查詢條件條件提交給當(dāng)前頁面,當(dāng)前頁面調(diào)用FindBook.tag文件完成查詢操作。2)FindBook.tag的具體要求
FindBook.tag文件的使用attribute指令獲得inputMess.jsp頁面?zhèn)鬟^來的字段的查詢條件,然后與數(shù)據(jù)源information建立連接、根據(jù)得到的查詢條件查詢bookForm表。FindBook.tag文件使用variable指令的將查詢結(jié)果返回給inputMess.jsp頁面。
4、jsp頁面的效果示例
inputMess.jsp的效果如圖6-2所示。
5、參考代碼
可以按照實(shí)驗(yàn)要求,參考本代碼編寫代碼。1)jsp頁面參考代碼、實(shí)驗(yàn)結(jié)果
inputMess.jsp
7、實(shí)驗(yàn)結(jié)果分析:
1、DriverManager類:用語跟蹤可用的JDBC驅(qū)動程序并產(chǎn)生數(shù)據(jù)庫連接。
2、Connection接口:用于取得數(shù)據(jù)庫信息、生成數(shù)據(jù)庫語句,并管理數(shù)據(jù)庫事務(wù)。
3、Statement接口:用于在基層連接上運(yùn)行SQL語句,并且生成一個(gè)結(jié)果集。
4、查詢結(jié)果一般封裝在ResultSet對象中。ResultSet實(shí)際上是一張數(shù)據(jù)表。ResultSet對象有多種方法用來從查詢結(jié)果中讀取數(shù)據(jù)
5、在tag文件通過使用 attribute指令,就可以讓調(diào)用該tag文件的jsp頁面向該tag文件傳遞在jsp頁面輸入的查詢內(nèi)容的數(shù)據(jù)。tag文件通過使用variable屬性可以從tag文件向jap頁面返回符合查詢條件的內(nèi)容的數(shù)據(jù)
實(shí)驗(yàn)2 更新記錄
1、相關(guān)知識點(diǎn)
本實(shí)驗(yàn)使用jdbc-odbc橋接器方式和數(shù)據(jù)庫建立連接,查詢數(shù)據(jù)庫中表的記錄的步驟如下:(1)與數(shù)據(jù)庫information建立連接;
Connection con=DriverManager.get Connection(‘jdbc:odbc: information’);(2)返回Statement對象;
Statement sql=con.createStatement();(3)向數(shù)據(jù)庫發(fā)送關(guān)于更新記錄的sql語句: int m=sql.executeUpdate(更新記錄的sql語句);更新成功m的值為1,否則為0。
2、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是掌握使用jdbc更新數(shù)據(jù)庫中表的記錄。
3、實(shí)驗(yàn)要求
編寫一個(gè)jsp頁面updateRecord.jsp和兩個(gè)tag文件UpdateRecord.tag、GetRecord.tag。updateRecord.jsp負(fù)責(zé)調(diào)用GetRecord.tag文件,顯示GetRecord.tag返回待更新的記錄的有關(guān)字段的值;updateRecord.jsp調(diào)用UpdateRecord.tag文件,并顯示UpdateRecord.tag返回的有關(guān)更新記錄是否成功的信息。1)updateRecord.jsp的具體要求 updateRecord.jsp頁面提供一個(gè)表單,該表單允許用戶輸入某種圖書的isbn號以及針對該isbn號的圖書的更新信息;該頁面負(fù)責(zé)將圖書的isbn號傳遞給GetRecord.tag,將圖書的更新信息傳遞給UpdateRecord.tag。2)GetRecord.tag的具體要求
GetRecord.tag文件使用attribute指令獲得updateRecord.jsp頁面?zhèn)鬟f過來的圖書的isbn號,并顯示和該圖書對應(yīng)的記錄。3)UpdateRecord.tag的具體要求
UpdateRecord.tag文件使用attribute指令獲得updateRecord.jsp頁面?zhèn)鬟f過來的圖書更新信息,然后更新數(shù)據(jù)庫中bookForm表中的記錄,并返回更新成功的消息給updateRecord.jsp頁面。
4、jsp頁面效果示例
updateRecord.jsp的效果如圖6-3所示。
5、參考代碼
6、實(shí)驗(yàn)結(jié)果
updateRecord.jsp
7、實(shí)驗(yàn)結(jié)果分析
1、在數(shù)據(jù)庫的連接于實(shí)驗(yàn)一是一樣的,只是調(diào)用的方法不一樣,在查詢時(shí)Statement對象調(diào)用方法public int executeUpdate(String sql)
2、在jsp頁面輸入圖書的ISBN號,GetRecord.tag文件使用attribute指令獲得updateRecord.jsp頁面?zhèn)鬟f過來的圖書的ISBN號,在數(shù)據(jù)庫里進(jìn)行查找,并顯示和該圖書對應(yīng)的記錄
3、UpdateRecord.tag文件使用attribute指令獲得updateRecord.jsp頁面?zhèn)鬟f過來的圖書更新信息即圖書價(jià)錢的變化從39到25.5,然后更新數(shù)據(jù)庫中bookForm表中的記錄,并返回更新是否成功的消息給updateRecord.jsp頁面。這樣,如果在查詢該圖書,那么顯示的信息就是更新后的。
實(shí)驗(yàn)3 刪除記錄
1、相關(guān)知識點(diǎn)
本實(shí)驗(yàn)使用jdbc-odbc橋接器方式和數(shù)據(jù)庫建立連接,那么刪除數(shù)據(jù)庫中表的記錄的步驟如下:
(1)與數(shù)據(jù)庫information建立連接;
Connection con=DriverManager.get Connection(‘jdbc:odbc: information’);(2)返回Statement對象;
Statement sql=con.createStatement();(3)向數(shù)據(jù)庫發(fā)送關(guān)于刪除記錄的sql語句: int m=sql.executeUpdate(更新記錄的sql語句);刪除成功m的值為1,否則為0。
2、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是掌握使用jdbc刪除數(shù)據(jù)庫中表的記錄。
3、實(shí)驗(yàn)要求
編寫一個(gè)jsp頁面inputDeletedISBN.jsp和一個(gè)tag文件DelRecord.jsp.1)inputDeletedISBN.jsp的具體要求
inputDeletedISBN.jsp頁面提供一個(gè)表單,該表單允許用戶圖書的ISBN提交到本頁面。2)DelRecord.jsp的具體要求
inputDeletedISBN.jsp頁面首先獲得本頁面提交的圖書的ISBN,然后使用tag標(biāo)記調(diào)用DelRecord.jsp刪除數(shù)據(jù)庫中表的相應(yīng)的記錄。
4、jsp頁面效果示例
inputDeletedISBN.jsp的效果如圖6-4所示:
5、參考代碼
可以按照實(shí)驗(yàn)要求,參考本代碼編寫代碼。
6、實(shí)驗(yàn)結(jié)果
inputDeletedISBN.jsp
7、實(shí)驗(yàn)結(jié)果分析:
1、在連接方法和所用的方法都與更新語句相同,因?yàn)閑xecuteUpdate()方法執(zhí)行SQL的INSERT,UPDATE或DELETE語句,返回int值,給出受查詢影響的行數(shù)
2、將圖書的ISBN輸入到件jsp頁面,然后由tag文件進(jìn)行相應(yīng)的處理
3、將滿足條件的圖書直接刪除,并將結(jié)果顯示在本頁面。
第七章 jsp與javabean 要求在webapps目錄下新建一個(gè)web服務(wù)目錄chapter7。除特別要求外,本章實(shí)驗(yàn)所涉及的jsp頁面均保存在chapter7中。實(shí)驗(yàn)涉及的Javabean的包名均為bean.date,因此,要求在chapter7下建立子目錄webclassesbeandate,Javabean的字節(jié)碼文件保存在該子目錄中。
實(shí)驗(yàn)1 有效范圍為request的bean 1.相關(guān)知識點(diǎn)
JSP頁面使用useBean標(biāo)記調(diào)用一個(gè)有效范圍是request的bean:
本實(shí)驗(yàn)的目的是掌握使用有效范圍是request的bean的存儲信息。3.實(shí)驗(yàn)要求 編寫一個(gè)JSP頁面inputAndShow.JSP和一個(gè)名字為computer的javabean,其中computer由pc.class類負(fù)責(zé)創(chuàng)建。 1)inputAndShow.jsp的具體要求 inputAndShow.jsp頁面提供一個(gè)表單。其中表單允許用戶輸入計(jì)算機(jī)的品牌 型號和生產(chǎn)日期,該表單將用戶輸入的信息提交給當(dāng)前調(diào)用名字為compter的bean,并使用表單提交的數(shù)據(jù)設(shè)置computer的有關(guān)屬性的值,然后顯示compter的各個(gè)屬性值。2)pc.java的具體要求 編寫的pc.java應(yīng)當(dāng)有描述計(jì)算機(jī)品牌 型號 生產(chǎn)日期的屬性,并提供相應(yīng)的getXxx和setXxx方法,來獲取和修復(fù)這些屬性的值。Pc.java中試用package語句,起的包名是bean.data。將pc.java編譯后的字節(jié)碼文件pc.class保存到chapter7WEB-INFclassesbeandata的目錄中、4.JSP頁面效果示列 inputAndShow.jsp的效果如圖: 5、參考代碼 可以按照實(shí)驗(yàn)要求,參考本代碼編寫代碼。1)jsp頁面參考代碼、實(shí)驗(yàn)結(jié)果 inputAndShow.jsp頁面 7、實(shí)驗(yàn)結(jié)果分析 1、JavaBean是一種可復(fù)用,跨平臺的組件。 2、如果request的bean那么request是用戶請求訪問的當(dāng)前組件、以及和當(dāng)前web組件共享同一用戶請求的web組件。范圍是指在一個(gè)jsp網(wǎng)頁發(fā)出請求到另一個(gè)jsp網(wǎng)頁之間,隨后這個(gè)屬性就失效,設(shè)定request的范圍時(shí)可利用request對象中的setattribute()和getattribute(),簡單的講就是客戶端的一次請求。 實(shí)驗(yàn)2 有效范圍為session的bean 1.相關(guān)知識點(diǎn) JSP頁面使用useBean標(biāo)記調(diào)用一個(gè)有效范圍是session的bean: 本實(shí)驗(yàn)?zāi)康氖亲寣W(xué)生掌握使用有效范圍是session的bean顯示計(jì)算機(jī)的信息,3.實(shí)驗(yàn)要求 本實(shí)驗(yàn)2要求和實(shí)驗(yàn)1類似,但是和實(shí)驗(yàn)1不同的是,要求編寫兩個(gè)jsp頁面input.jsp和show,jsp。編寫一個(gè)名字為compter的javabean,其中compter由pc.class類負(fù)責(zé)創(chuàng)建。 1)input.jsp的具體要求 input.jsp頁面提供一個(gè)表單。其中表單允許用戶輸入計(jì)算機(jī)的品牌 型號和生產(chǎn)日期,該表單將用戶輸入的信息提交給當(dāng)前調(diào)用名字為compter的bean,并使用表單提交的數(shù)據(jù)設(shè)置computer的有關(guān)屬性的值。要求在input.jsp提供一個(gè)超鏈接以便用戶單機(jī)這個(gè)超鏈接訪問show.jsp頁面。13)show.jsp的具體要求 Show.jsp調(diào)用名字為computer的bean,并顯示bean的各個(gè)屬性的值。3)pc.java的具體要求 編寫的pc.java應(yīng)當(dāng)有描述計(jì)算機(jī)品牌 型號 生產(chǎn)日期的屬性,并提供相應(yīng)的getXxx和setXxx方法,來獲取和修復(fù)這些屬性的值。Pc.java中試用package語句,起的包名是bean.data。將pc.java編譯后的字節(jié)碼文件pc.class保存到chapter7WEB-INFclassesbeandata的目錄中。4.JSP頁面效果示列 Input.jsp的效果如圖 show.jsp的效果如圖 6、實(shí)驗(yàn)結(jié)果 input.jsp頁面 Show.jsp頁面 7、實(shí)驗(yàn)結(jié)果分析 1、session就是JavaBean對象被創(chuàng)建后,一直存在于當(dāng)前回話中,在同一會話中,共享同一JavaBean 2、session基于會話的,當(dāng)用戶網(wǎng)頁關(guān)閉的話,session就清空了或是到達(dá)了session最大的發(fā)呆時(shí)間。 實(shí)驗(yàn)3 有效范圍application的bean 1.相關(guān)知識點(diǎn) JSP頁面使用useBean標(biāo)記調(diào)用一個(gè)有效范圍是application的bean: 本實(shí)驗(yàn)?zāi)康氖钦莆帐褂糜行Х秶莂pplication的bean制作一個(gè)簡單留言板。3.實(shí)驗(yàn)要求 要求編寫兩個(gè)jsp頁面inputMess.jsp和show.jsp。編寫一個(gè)名字為board的javabean,其中board由MessBoard.class類負(fù)責(zé)創(chuàng)建.。第6章 inputMess.jsp的具體要求 inputMess.jsp頁面提供一個(gè)表單。其中表單允許用戶輸入留言者的姓名 留言標(biāo)題和留言內(nèi)容,該表單將用戶輸入的信息提交的當(dāng)前頁面,當(dāng)前頁面調(diào)用名字為board的bean,并使用表單提交的數(shù)據(jù)設(shè)置board的有關(guān)屬性的值。要求在inputMess.jsp中提供一個(gè)連接,已便用戶單擊這個(gè)超鏈接是訪問show.jsp頁面 第7章 show.jsp的具體要求 Show.jsp調(diào)用名字為board的bean,并顯示該bean的allMessage屬性的值 3)MessBoard.class的具體要求 編寫MessBoard.java應(yīng)當(dāng)有刻畫留言者的姓名.留言標(biāo)題 和留言內(nèi)容屬性,并刻畫全部留言信息的屬性allMessage。將MessBoard.java保存到chapter7WEB-INFclassesbeandata的目錄中。4.JSP頁面效果示列 inputMess.jsp的效果如圖 show.jsp的效果如圖 5、參考代碼 6、實(shí)驗(yàn)結(jié)果 inputMess.jsp頁面 show.jsp 頁面 7、實(shí)驗(yàn)結(jié)果分析 1、如果在scope指定范圍內(nèi),該JavaBean已存在,則 3、Application:在服務(wù)器運(yùn)行期間有效,當(dāng)運(yùn)行Tomcat時(shí),就會生成Application,而且所有用戶在訪問相同服務(wù)目錄項(xiàng)的文件時(shí),application對象都是相同的,當(dāng)關(guān)閉Tomcat時(shí),Application對象失效。 (1)創(chuàng)建名稱為“UserInfo.java”類文件,該文件的主要代碼如下: package com; public class UserInfo { private String username=“"; private String password=”“; private String repassword=”“; private String realname=”“; private String sex=”“; private String age=”“; private String born=”“; private String address=”“; private String introduce=”“; public String getUsername(){ return username; } public void setUsername(String username){ this.username = username; } public String getPassword(){ return password; } public void setPassword(String password){ this.password = password; } public String getRepassword(){ return repassword; } public void setRepassword(String repassword){ this.repassword = repassword; } public String getRealname(){ return realname; } public void setRealname(String realname){ this.realname = realname; } public String getSex(){ return sex; } public void setSex(String sex){ this.sex = sex; } public String getAge(){ return age; } public void setAge(String age){ this.age = age; } public String getBorn(){ return born; } public void setBorn(String born){ this.born = born; } public String getAddress(){ return address; } public void setAddress(String address){ this.address = address; } public String getIntroduce(){ return introduce; } public void setIntroduce(String introduce){ this.introduce = introduce; } } (2)用戶注冊頁面的代碼如下: <%@ page contentType=”text/html;charset=gb2312“ language=”java“ im port=”java.sql.*“ errorPage=”“%> JSP編程實(shí)驗(yàn)報(bào)告 學(xué)生姓名:學(xué)生班級:學(xué)生學(xué)號:指導(dǎo)教師:實(shí)驗(yàn)n(n-實(shí)驗(yàn)順序號):實(shí)驗(yàn)名稱 一、實(shí)驗(yàn)?zāi)康亩?shí)驗(yàn)內(nèi)容及步驟 三、源代碼 四、運(yùn)行界面 五、收獲和體會第四篇:JSP實(shí)驗(yàn)報(bào)告(范文模版)
第五篇:JSP編程實(shí)驗(yàn)報(bào)告