JSP第二版課後習題下載:https://download.csdn.net/download/weixin_42859280/11265785
JSP第二版課後習題答案下載:https://download.csdn.net/download/weixin_42859280/11265728
剪切之前的:https://blog.csdn.net/weixin_42859280/article/details/94355366
習題四【第三版3章】
一、選擇題
1、在JSP中,要定義一個方法,需要用到以下( )元素。D
A.<%= %> B.<% %>
C.<%@ %> D.<%! %>
2、在J2EE中,在一個JSP文件中,有表達式<%=2+3 %>,它將輸出( )。 B
A.2+3 B.5
C.2 D.不會輸出,因爲表達式是錯誤的
3、在JSP中,( )動作用於將請求轉發給其他JSP頁面。 A
A.forward B.include
C.useBean D.setProperty
4、要設置某個JSP頁面爲錯誤處理頁面,以下page指令正確的是( )。 B
A.<%@ page errorPage="true"%>
B.<%@ page isErrorPage="true"%>
C.<%@ page extends="javax.servlet.jsp.JspErrorPage"%>
D.<%@ page info="error"%>
5、當瀏覽器第二次訪問以下JSP網頁時的輸出結果是什麼?( )C
<%! int a=0; %>
<%
int b=0;
a++;
b++;
%>
a:<%= a %> <br>
b:<%= b %>
選項:
A.a=0 b=0 B. a=1 b=1
C. a=2 b=1 D. a=2 b=2
6、關於<jsp:include>, 下列說法不正確的是( )。D【百度說是C】
A. 它可以包含靜態文件。
B. 它可以包含動態文件。
C. 當它的flush屬性爲true時,表示緩衝區滿時,將會被清空。
D. 它的flush屬性的默認值爲true。
Include指令(編譯時包括)又叫靜態引用,約等於同一個界面,可以共享數據。
Include動作(運行時包括)又叫動態引用,完全是兩個界面,不能共享數據。
autoFlush 定義緩衝滿時,緩衝輸出是否自動完成(flush)或拋出異常。
缺省值爲true。
7、在JSP中,對<jsp:setProperty>標記描述正確的是( )。C
A. <jsp:setProperty>和<jsp:getProPerty>必須在一個JSP文件中搭配出現。
B. 就如同session.setAttribute()一樣,來設計屬性/值。
C. 和<jsp:useBean>動作一起便用,來設置bean的屬性值。
D. 就如同request.setAttribute()一樣,來設置屬性/值。
使用<jsp:getproperty>之前,必須<jsp:usebean>來創建它。
不能使用<jsp:getproperty>來檢索一個已經被索引了的屬性。
8、在 myjsp.jsp 中,關於下面的代碼說法錯誤的是( )。A
<%@ page language="java" import="java.util.*" errorPage="error.jsp" isErrorPage="false" %>
A.該頁面可以使用 exception 對象 。
B.該頁面發生異常會轉向 error.jsp 。
C. 存在 errorPage 屬性時,isErrorPage 是必須的屬性值且一定爲 false 。
D.error.jsp 頁面一定要有isErrorPage 屬性且值爲 true。
9、下列哪一種不是JSP 中的註釋符( )。 A
A. <!--註釋內容--> B. /*註釋內容*/
C. //註釋內容 D. /**註釋內容**/
A是HTML裏面的。
https://blog.csdn.net/weixin_42859280/article/details/94357167
10、J2EE中在JSP中要使用user包中的User類,則以下寫法正確的是( )。A
A. <jsp:useBean id="user"class="user.User"scope="page"/>
B. <jsp:useBean class="user.Use.class"/>
C. <jsp:useBean name="user"class="user.User"/>
D. <jsp:useBeam id="user"class="user"import="user.*"/>
二、判斷[1:表示對;0:表示錯;]
1、在page指令中,import參數允許重複使用多次。( )1
2、<!-- -->中可以使用<% %>動態輸出註釋內容,同時<%-- --%>中也可以使用<% %>,因爲預覽JSP頁面時沒有報錯。( )1
[P54]
3、當page標識的isThreadSafe屬性設爲true時,JSP只可以接受一個用戶訪問。( )0
【P61,默認是true,能同時處理多個用戶請求。false,一個jsp一次只能處理一個請求】
4、<jsp:include page="body.jsp?name=tom&password=123" />可用於在JSP頁面中包含body.jsp文件,並傳遞兩個參數name和password。( )0
【它沒有這個功能】
5、<%@ include file=”URL” %>允許包含動態文件和靜態文件,但是這兩種包含文件的結果是不同的,如果文件僅僅是靜態文件,那麼這種包含僅僅是把包含文件的內容加到JSP文件中去,這個被包含的文件不會被JSP編譯執行。相反地,如果被包含文件是動態文件,那麼這個被包含文件會被JSP編譯器執行。( )0
這個命令只有靜態的。
三、填空
1、JSP有三個指令元素:
<%@page%>、<%@include %>、<%@taglib %>
2、JSP的腳本元素包含以下4個部分:
隱藏註釋(Hidden Comment)、聲明(Declarations)、腳本段(ScriptLets)、表達式(Expression)
、 、 、 。
3、動作元素<jsp:setProperty>的作用爲 設置javabean對象的屬性值 。
4、<jsp:forward>的作用是 頁面跳轉 。
5、在JSP頁面中可以聲明方法,但是僅在 當前頁面 內有效。
四、簡答
1. 如何在HTML網頁中嵌入JSP程序代碼?怎樣來定義JSP中的聲明區與程序區?
答:在JSP網頁中必須於<%與%>符號間嵌入程序代碼。
JSP聲明的語法格式爲:
<%! declaration; [ declaration; ] ... %> 或
<%! 聲明; [聲明; ] ... %>
腳本代碼的語法格式如下:
<% code fragment %> 或
<% 代碼 %>
2. 請說明JSP中有哪3個指令元素,以及這3個指令的主要用途。
答:page指令:可用來設置JSP網頁的特性,如編碼方式、引用類、緩衝區等。
include指令:可用來將HTML、文本文件或者JSP程序加載當前的JSP網頁。
taglib指令:可用來引用一個自定義的標籤庫。
3. JSP中include指令與include動作的區別是什麼?
答:include指令是指把其它頁面的Java代碼(源碼)加進來,跟本頁面的代碼合併在一起,
相當於把源碼從那個頁面複製到本頁面中來,然後再編譯。
並且由於本頁面編譯時已經包含了別的文件的源碼,所以以後其它頁面更改時,
本頁面並不理會,因爲已經編譯過了。
<jsp:include>動作是指兩個頁面的代碼運行完以後,
再把包含的那個頁面運行後的HTML結果頁面加到本頁面運行後的HTML結果頁面中來。
所以是運行時包含,並且還可以傳遞參數給被包含的頁面。
4. JSP網頁可以使用的特殊操作元素有哪些?其中<jsp:forward>與<jsp:param>操作元素各有什麼功能?
答:可使用的操作元素有<jsp:param>、<jsp:include>、<jsp:forward>、<jsp:plugin>。
<jsp:forward>:可將當前瀏覽器顯示網頁的網址,重新導向新的網址。
<jsp:param>:主要用來傳遞參數給JSP程序,而由程序取得參數值。
五、編程
1. 編寫一個JSP程序,計算10!,並顯示出結果。要求先聲明計算階乘的方法,再調用該方法,最後在頁面上輸出結果。
(進階要求,通過表單提交一個正整數,然後計算它的階乘。)
2. 在JSP頁面中靜態包含文件。要求程序包含兩個文件,主文件靜態包含一個能夠計算數據的算數平方根的頁面。
3. 動態包含頁面並傳遞數據。要求程序包含兩個文件,主文件加載次文件,並將隨機產生的0~1之間的數據傳遞給它,並且在頁面上顯示出來。
(進階要求,把動態包含改爲動態重定向,比較兩者之間的區別。)
4. 計算三角形的面積。要求由用戶輸入三角形的三條邊,判斷這三條邊是否能構成一個三角形,若能構成三角形,則輸出三角形的面積。
習題五【對應第三版4章】
一、選擇題
1、在J2EE中,下列( )語句可以獲取頁面請求中的一個單選框的選項值(單選框的名字爲name)。C
A. response.getParameter("name");
B. request.getAttribute("name");
C. request.getParameter("name");
D. request.getParameters("name");
P89
2、在J2EE中,request對象的( )方法可以獲取頁面請求中一個表單控件對應多個值時的用戶的請求數據。D
A.String getParameter(String name)
B.String[] getParameter(String name)
C.String getParameterValuses(String name)
D.String[] getParameterValues(String name)
P91下面
3、以下對象中作用域最大的是( )。C
A.request B.session
C.application D.page
P116
4、在JSP頁面中,能夠完成輸出操作的內置對象是 ( )。A
A. out B. response
C. request D. config
P103
5、要在session對象中保存屬性,可以使用以下哪個語句?( )B
A. session.getAttribute("key","value");
B. session.setAttribute("key","value");
C. session.setAtrribute("key");
D. session.getAttribute("key");
P109
6、需要刪除session中的某個屬性key,可以調用下面的( )方法。B
A. remove(“key”)
B. removeAttribute("key")
C. invalidate()
D. logout()
P110
7、在J2EE中,假如HttpSession的getLasAccessTime()方法返回值爲x,getCreationTime()方法返回值爲y,則爲x - y()。C
A.兩個連續請求之間間隔的最長時間
B.最近的兩個連續請求之間的時間間隔
C.最後使用session發送請求的時間和session創建時間的間隔
D.最後使用session發送請求的時間
P110
8、以下代碼能否編譯通過,假如能編譯通過,運行時得到什麼輸出結果( )。A
<%
request.setAttribute("count",new Integer(0));
Integer count = request.getAttribute("count") ;
%>
<%=count %>
A. 編譯不通過
B. 可以編譯運行,輸出0
C. 編譯通過,但運行時拋出ClassCastException
D. 可以編譯通過,但運行無輸出
9、現在session中沒有任何屬性,閱讀下面2個JSP中的代碼,將分別輸出( )。A
<%
out.println(session.getAttribute("svse "));
%>
<%
session.invalidate();
out.println(session.getAttribute("svse "));
%>
A. null, 異常信息
B. null, null,
C. 異常信息,異常信息
D. 異常信息,null
1,返回一個什麼都沒有的。所以是null
2,返回一個前面已經結束的。所以會爆出錯誤。
10、Form表單提交的信息中含有“name= svse”,閱讀下面的JSP,a.jsp將輸出()。A
接受該請求的JSP:
<%
response.sendRedirect(“a.jsp");
%>
a.jsp包含如下代碼
<%=request.getParameter(“name") %>
A. null
B. 什麼都不輸出
C. 異常信息
D. svse
P89.沒有實際參數與之對應的時候。就會輸出null。89頁有例子。
二、判斷[1:表示對;0:表示錯;]
1、<jsp:forward ... >標記的page屬性值是相對的URL地址,只能靜態的URL。( )0 P70 3.4.2
2、利用response對象的sendRedirect方法只能實現本網站內的頁面跳轉,但不能傳遞參數。( )0 P98
3、contentType屬性用來設置JSP頁面的MIME類型和字符編碼集,取值格式爲"MIME類型"或"MIME類型;charset=字符編碼集",response對象調用addHeader方法修改該屬性的值。( )0 P96
4、在J2EE中,重定向到另一個頁面,可以用request.sendRedirect("http://www.jb-aptech.com.cn");( )1P98
【有爭議】
https://blog.csdn.net/qq_27668813/article/details/51394736
5、應用application對象能在不同用戶之間共享數據( )。1 P116
三、填空
1、當客戶端請求一個JSP頁面時,JSP容器會將請求信息包裝在 對象中。request
2、已知文件look.jsp的路徑爲c:/myjsp/inc,文件login.jsp的路徑爲c:/myjsp。若使用response的重定向方法由look.jsp跳轉到login.jsp中,則正確的寫法爲________________ 。response.sendRedirect(“../login.jsp”);
3、當getParameter()方法的參數部分指定的輸入控件不存在時,該方法的返回值爲 ____________。null
4、列表框的name屬性值爲“city”,並且允許多選,若要一次讀取所有的選中項並存放於數組str中,則對應的java語句爲____________________ 。String[] str=request.getParameterValues(“city”);
5、給定一個JSP程序源碼如下:
<jsp:include page = “test.jsp”flush = “true”>
<jsp:param name = “location”value = “beijing”/>
</jsp:include>
在test.jsp中加入____________________代碼片斷可以輸出參數location的值。<%=request.getParameter(“location”)%>
P89
四、簡答
1. JSP中的內建對象包含哪些?試簡述這些對象在JSP中的主要功能。
答:request:取得客戶端數據與系統的信息。
response:響應客戶端信息。
application:記錄與處理上線者共享的數據。
session:記錄與處理上線者的個別數據。
out:控制數據輸出的操作。
config:取得JSP編譯後Servlet的信息。
pageContext:存取與處理系統運行時期的各項信息。
page:表示當前的JSP網頁。
2. response重定向方法sendRedirect()和動作元素<jsp:forward>的區別是什麼?
(1)response.sendredirect()會在客戶端呈現跳轉後的URL地址;
這種跳轉稱爲客戶端跳轉。使用response.sendredirect()將重定向的URL發送到客戶端,
瀏覽器再根據這個URL重新發起請求。所以用這個方法時,
你在瀏覽器地址欄上會看到新的請求資源的地址。
並且這個時候的request,response都和第一次的不一樣了。
這時是重新產生了新的request,response。
(2)使用<jsp:forward>完全是在服務器上進行,瀏覽器地址欄中的地址保持不變;
這種跳轉稱爲服務器端跳轉。所以使用這個方法時沒有產生新的用request,response。
因爲request沒有變,在同一個請求內,可以用request來轉遞參數。
(3)response.sendRedirect()想帶參數的話,
自己在地址中寫成 xxx.jsp?param1=aaa&... 這種形式傳遞參數。
<jsp:forward>能夠使用<jsp:param/>標籤向目標文件傳送參數和值 ,
目標文件必須是一個動態的文件,能夠處理參數。
(4)<jsp:forward>後面的語句不會被執行也不會繼續發送到客戶端,
response.sendRedirect()後面的語句會繼續執行,除非語句前面有return。
(5)<jsp:forward>是在服務器的內部進行轉換,只發送給客戶端最後轉到的頁面,
速度會比較快;response.sendRedirect()需要服務器與客戶端之間的往返,
可以轉到任何頁面,包括網絡有效域名。但速度比較慢。
3. application與session對象存儲數據變量的方式有何區別?
答:application:記錄聯機用戶共享的數據。session:記錄聯機用戶的個別數據。
4. 請說明session對象的生命週期在哪些狀況下會結束。
答:當以下四種情形之一發生時,session與其中的數據便會消失:
(1)用戶關閉當前正在使用的瀏覽器程序。
(2)關閉網頁服務器。
(3)用戶未向服務器提出請求超過預設的時間,Tomcat服務器預設爲30分鐘。
(4)運行程序結束session。
五、編程
1. 編寫一個簡單的網上測試系統。要求由兩個頁面組成,第一個頁面顯示試題,例如單選題,如圖5-37所示。第二個頁面獲取考生提交的選擇,統計考生得分並顯示。
2. 信息的保存和獲取。
例如簡單的網上購物,將購買者的姓名、商品名保存在session對象中,實現一個Web目錄下的頁面對session對象中信息的共享。要求創建3個頁面,第1個頁面輸入用戶的姓名,第2個頁面輸入購買商品名的名稱,第3個頁面實現結賬處理。
3. 簡單的用戶登錄。
用戶通過輸入用戶名和密碼(假設用戶名和密碼都是admin)進入用戶或管理員頁面,拒絕繞過登錄頁面直接進入用戶或管理員頁面。
要求創建4個文件,第1個是用戶登錄頁面,此頁面輸入用戶名和密碼以及登錄類型,如圖5-38所示。
圖5-37 網上測試單選題 圖5-38 用戶登錄頁面
第2個文件對提交信息進行檢查,如果輸入正確則根據登錄類型分別進入到管理員或普通用戶頁面,用重定向的方法實現跳轉到這兩個頁面。如果輸入有誤,則彈出警示對話框,如圖5-39所示,讓用戶重新輸入信息。
第3個文件是管理員頁面,顯示管理員成功登錄的信息。
第4個文件是普通用戶頁面,顯示普通用戶成功登錄的信息。
4. 用application對象實現一個簡單的聊天室。
要求採用application對象記錄所有用戶的留言信息並在頁面上顯示出來,如圖5-40所示。
圖5-39 警示對話框 圖5-40 顯示聊天內容
習題六【第三版5章】
一、選擇題
1、在web程序中,cookie和session的信息保存位置分別在哪裏?( ) A
A. cookie保存在客戶端,session保存在服務器端
B. cookie和session都保存在客戶端
C. cookie和session都保存在服務器端
D. cookie保存在服務器端,session保存在客戶端
cookie:P133 session:P147
2、有關會話跟蹤技術描述不正確的是( )。D
A. Cookie是Web服務器發送給客戶端的一小段信息,客戶端請求時,可以讀取該信息發送到服務器端 P133
B.關閉瀏覽器意味着會話ID丟失,但所有與原會話關聯的會話數據仍保留在服務器上,直至會話過期。實話
C.在禁用Cookie時可以使用URL重寫技術跟蹤會話。P147
D.隱藏表單域將字段添加到HTML表單並在客戶端瀏覽器中顯示。P148
3、J2EE中,Servlet API 爲使用Cookie,提供了( )類。 A
A. Javax.servlet.http.Cookie
B. Javax.servlet.http.HttpCookie
C. Javax.servlet. Cookie
D. Javax.servlet.http. HttpCookie
4、帶有名爲myCookie 的cookie存在於客戶計算機上,服務器發送有同名的一個cookie。 這會發生什麼?( )A
A.新cookie 重寫到老的cookie B.新 cookie 被拒絕
C.作爲拷貝存貯新cookie D.拋出一個異常
5、不能在不同用戶之間共享數據的方法是( )。A
A.通過cookie
B.利用文件系統
C.利用數據庫
D.通過ServletContext對象
6、如何獲取一個 Cookie[] ?( )。 A
A.request.getCookies()
B.request.getCookie()
C.response.getCookies()
D.response.getCookie()
7、如何發送Cookie? ( )B
A. 使用new Cookie語句
B. 調用response.addCookie方法
C. 使用Cookie的setMaxAge方法
D. setCookie方法
8、將Cookie保存到客戶端,就是爲了以後得到其中保存的數據。以下說法錯誤的是( )。C
A.調用HttpServletRequest的getCookies得到一個Cookie對象的數組
B.在客戶端傳來的Cookie數據類型都是數組類型,因此要得到其中某一項指定的Cookie對象,需要遍歷數組來找。
C.在客戶端傳來的Cookie數據類型都是枚舉類型,因此要得到其中某一項指定的Cookie對象,需要指定元素位置來找。
D.JSP將調用request.getCookies()從客戶端讀入Cookie,getCookies()方法返回一個HTTP請求頭中的內容對應的Cookie對象。
9、Cookie調用getValue( )方法取得( )。A
A.與指定名字關聯的值
B.從客戶端讀入Cookie
C.檢查各個Cookie的名字
D.檢查各個Cookie的值
10、下面的代碼使用setMaxAge()方法設置Cookie對象login在一天之內都是有效的是( )B
A.login.setMaxAge(3600);
B.login.setMaxAge(86400);
C.login.setMaxAge(1);
D.login.setMaxAge(7200);
二、判斷[1:表示對;0:表示錯;]
1、當用戶關閉瀏覽器的時候,Cookie的數據便會消失。( )0
2、Cookie實質是服務器端與客戶端之間傳送的普通HTTP頭,可以保存也可以不保存在客戶的硬盤上。( )1
3、Cookie在生成時就會被指定一個Expire值,這就是Cookie的生存週期,在這個週期內Cookie有效,超出週期Cookie就會被清除。( )1
4、使用Cookie的目的就是爲用戶帶來方便,爲網站帶來增值,但是事實上Cookie會造成嚴重的安全威脅。( )0
5、Cookie中的內容大多數經過了加密處理,因此在我們看來只是一些毫無意義的字母數字組合,只有服務器的CGI處理程序才知道它們真正的含義。( )1
三、填空
1、Cookie數據存儲的功能由 瀏覽器 所提供,因此,Cookie功能都必須要有瀏覽器的支持才行。
2、Response對象的addCookie(Cookie cookie)方法添加一個 Cookie 對象,用來保存客戶端的用戶信息。
3、用Request的 getCookies() 方法可以獲得這個Cookie。
4、用response對象的 addCookie 方法可以將cookie對象寫入客戶端。
5、要刪除某一個客戶端的Cookie,必須使用前面的sexMaxAge()方法,並將Cookie的存在期限設爲__0__。
四、簡答
1. 簡述Cookie的概念與使用方式。
答:Cookie爲瀏覽器提供的功能,是一種可將聯機用戶的數據存儲在客戶端計算機上的技術,
要運用Cookie必須先建立一個Cookie對象來存儲字符串數據,再將此Cookie對象傳送到客戶端。
2. 查看自己計算機上Cookie文件的保存位置。瀏覽網頁,運行本書的例子,看是否會把信息記錄在此位置?文件是如何命名的?文件的內容是什麼?
答:在默認情況下,Cookie是隨着用戶關閉瀏覽器而自動消失的。
所以書上例子不會保存Cookie。如果在例2中我們在usingCookie.
jsp中使用setMaxAge()方法,設置Cookie對象的存在期限。
這樣Cookie對象就會保存在硬盤中的Cookies文件夾中
如“C:\Documents and Settings\Administrator\Cookies”如文件“administrator@ch06[1].txt”。
內容是如下代碼
“name
d
localhost/ch06/
1024
1524104704
30118001
4117789296
30117999
*”
3. Cookie的常見用途有哪些?
(1)網站瀏覽人數管理
由於代理服務器、緩存等的使用,
唯一能幫助網站精確統計來訪人數的方法就是爲每個訪問者建立一個唯一的ID。
使用Cookie,網站可以完成以下工作:測定多少人訪問過;
測定訪問者中有多少是新用戶(即第一次來訪),多少是老用戶;
測定一個用戶多久訪問一次網站。
通常情況下,網站設計者是藉助後臺數據庫來實現以上目的的。
當用戶第一次訪問該網站時,網站在數據庫中建立一個新的ID,
並把ID通過Cookie傳送給用戶。用戶再次來訪時,網站把該用戶ID對應的計數器加1,
得到用戶的來訪次數或判斷用戶是新用戶還是老用戶。
(2)按照用戶的喜好定製網頁外觀
有的網站設計者,爲用戶提供了改變網頁內容、佈局和顏色的權力,
允許用戶輸入自己的信息,然後通過這些信息對網站的一些參數進行修改,以定製網頁的外觀。
(3)在電子商務站點中實現諸如“購物籃”等功能
可以使用Cookie記錄用戶的ID,這樣當你往“購物籃”中放了新東西時,
網站就能記錄下來,並在網站的數據庫裏對應着你的ID記錄當你“買單”時,
網站通過ID檢索數據庫中你的所有選擇就能知道你的“購物籃”裏有些什麼。
4. Cookie與session有何不同?
session與Cookie同樣是用來記錄上線用戶的個別數據的,兩者的差異在於session是存在於服務器端,
而Cookie則是存在於客戶端。
五、編程
1. 理解並掌握Cookie的作用及利用Cookie實現用戶的自動登錄功能,如圖6-10所示。
圖6-10 應用Cookie保存用戶信息
當服務器判斷該用戶是首次登錄時,會自動跳轉到登錄頁面等待用戶登錄,並填入相關信息。通過設置Cookie的有效期限來保存用戶的信息。關閉瀏覽器後,驗證是否能夠自動登錄,若能登錄打印歡迎信息,否則跳轉到登錄頁面。
習題七【第三版6章】
- 選擇題
1、<jsp:useBean>聲明對象的默認有效範圍爲( )。A
A. page B. session C. application D. request
page對象就是指jsp頁面本身,是java.lang.Object實例。
2、編寫JavaBean就是編寫一個Java類,所以只要會寫類就能編寫一個Bean,一個完整JavaBean在類的命名上需要遵守以下規則,其中錯誤的是( )。D
A. 類中方法的訪問屬性必須是public的。類中方法的訪問屬性必須是public的
B. 對於boolean類型的成員變量,允許使用is代替get。對於boolean類型的成員變量,允許使用is代替get和set
C. 類中如果有構造方法,那麼這個構造方法也是public的,並且是無參數的。
類中如果有構造方法,那麼這個構造方法也是public的,並且是無參數的
D. 在JavaBean中定義屬性時,應該定義成public。javaBean的屬性定義爲pirvate
https://blog.csdn.net/yihuliunian/article/details/90900212[遵守一下4項規定。]
3、關於JavaBean的說法,哪個是正確的?( )D
A. JavaBean的具體類可以不是public的。[P167]
B. JavaBean可以只提供一個帶參數的構造器。[P167]
C. jsp:userBean可以向HTML標記一樣不關閉。[]
D. JavaBean可以保存狀態。
4、下邊哪個不是MVC中的組成部分?( )B
A. JavaBean B. FrameWork C. JSP D. Servlet
5、下面哪一個是正確使用JavaBean的方式?( )A
A. <jsp:useBean id="address" class="AddressBean" />P172
B. <jsp:useBean name="address" class="AddressBean"/>
C. <jsp:useBean bean="address" class="AddressBean" />
D. <jsp:useBean beanName="address" class="AddressBean" />
6、在JSP中使用<jsp:getProperty>標記時,不會出現的屬性是:( )C
A. name B. property C. value D.以上皆不會出現
7.、在JSP中調用JavaBean時不會用到的標記是:( )A
A.<javabean> B. <jsp:useBean> C.<jsp:setProperty> D. <jsp:getProperty>P170首行
8.、關於JavaBean正確的說法是:( )A
A. Java文件與Bean所定義的類名可以不同,但一定要注意區分字母的大小寫
B. 在JSP文件中引用Bean,其實就是用<jsp:useBean>語句
他的這種說法沒錯,但是太絕對了,還有其他的方法可以引用bean啊,因爲它是選擇題,所以語句要要求很嚴謹
C. 被引用的Bean文件的文件名後綴爲.java
jsp中還可以通過Java腳本來newJavabean對象
D. Bean文件放在任何目錄下都可以被引用
所有編譯好的JavaBean都需要放在某個應用目錄下的_____WEB-INF/classes_______目錄之下。
9、 test.jsp文件中有如下一行代碼:
<jsp:useBean id=”user” scope=”__” type=”com.UserBean”>
要使user對象可以作用於整個應用程序,下劃線中應添入( )。D
A. page B. request C. session D. application
作用於整個應用程序
10、下面哪項是錯誤的設置Bean屬性值的方法( )。 B
A. <jsp:setProperty name="beanInstanceName" property= "*" />
B.<jsp:setProperty name="beanInstanceName" property="propertyName"/>
C.<jsp:setProperty name="beanInstanceName" property="propertyName"
param="parameterName" />
D. <jsp:setProperty name="beanInstanceName" property="*" value="{string | <%= expression
%>}"/>
屬性名稱應該一一對應,數量上可以不一致
二、判斷題[1:表示對;0:表示錯;]
1、在MVC模式中,因爲Servlet負責創建JavaBean,所以JavaBean的構造函數可以帶有參數,除了保留get和set規則外,還可以有其他功能的函數。( )1
2、Bean文件放在任何目錄下都可以被引用。( )0
3、get請求處理的數據量大小不受到限制。( )0
4、<jsp:getProperty>必須出現在其對應的<jsp:usebean>標籤之後。( )1【事實】
5、相同的Javabean只會實例化一次。( )0【https://zhidao.baidu.com/question/1642382354215987180.html】
三、填空題
1、Javabean是一種 Java 類,通過封裝 屬性 和 方法 成爲具有某種功能或者處理某個業務的對象,簡稱bean。
2、在Tomcat中,所有編譯好的JavaBean都需要放在某個應用目錄下的_____WEB-INF/classes_______目錄之下。
3、JSP開發網站的兩種模式分爲______jsp+javabean__________和_____jsp+javabean+servlet___________ 。
4、如果你想使用Javabean設計一個網站計數器,那麼該bean的scope應當設爲 application 。
5、按功能JavaBean可以分爲____可視化JavaBean_________和_______非可視化JavaBean_____。
四、問答題
1. 試說明什麼是JavaBean。
答:JavaBean是一種特殊的Java程序,是用於包裝特定功能的程序代碼,
可以被JSP網頁重複使用,其本身無法獨立運行,是JSP網頁程序組件化的核心。
2. 試說明如何在JSP網頁中載入JavaBean。
A:<jsp:useBean id=id-name scope=scope-name class=class-name />
3. JavaBean對象可聲明哪些不同的生命週期?
答:request、session、page及applaction。
4. JavaBean程序除了必須要有一個無傳入值的建構式之外,還有哪些特色?
答:除了必須要有一個無傳入值的建構式之外,還必須是一個公開的類,並以set及get開頭的方法來設置與取得屬性。
5. 試說明Get和Post方法之間的差異?
答:Post和Get這兩種設置方式主要的差異在於數據的傳送方式,
前者將所要傳送的數據包含在HTTP文件頭中,
後者則是將數據直接串接在網址欄的後端,
兩者都可使用GetParameter取得傳送的數據內容。
五、編程
1、要求編寫兩個JSP頁面:input.jsp和show.jsp。編寫一個名字爲car的JavaBean,其中car由Car.class類負責創建。
input.jsp頁面提供一個表單。其中表單允許用戶輸入汽車的牌號、名稱和生產日期,該表單將用戶輸入的信息提交給當前頁面,當前頁面調用名字爲car的bean,並使用表單提交的數據設置car的有關屬性的值。要求在input.jsp提供一個超鏈接,以便用戶單擊這個超鏈接訪問show.jsp頁面。
show.jsp調用名字爲car的bean,並顯示該bean的各個屬性的值。
編寫的Car.java應當有汽車號碼、名稱和生產日期的屬性,並提供相應的getXxx和setXxx方法,來獲取和修改這些屬性的值。
習題八[對應第三版本7章]
一、選擇題
1.在WEB應用程序的目錄結構中,在WEB-INF文件夾中的lib目錄是放( )文件的。C
A. .jsp文件 B. .class文件 C. .jar文件 D. web.xml文件
2、java.io.File對象的( )方法可以新建一個文件。D
A. delete() B. createFile() C. mkdir() D. createNewFile()
3、在JSP應用程序中要求刪除所有photo目錄中的的文件,但是保留文件夾,下列代碼中空缺位置最適合的選項爲( )。A
String path=request.getRealPath("photo");
File fp1=new File(path);
File[] files=fp1.listFiles();
for(int i=0;i<files.length;i++)
{
if(__________________________)
{
files[i].delete();
}
}
A. files[i].isFile() B. files[i].isDirectory() C. !files[i].isFile() D. ! files[i].isDirectory()
4、下列File對象的哪個方法能夠判斷給定路徑下的文件是否存在。( )C
A. canRead() B .canWrite() C. exists() D. isDirectory()
5、BufferedReader處理Reader類中的方法外,還提供了public String readLine()方法,該方
法讀入一行文本,這裏的“一行”指字符串以“\n”或什麼做結尾。( )C
A. \t B. \f C. \r D. \p
二、判斷題[1:表示對;0:表示錯;]
1、File類直接處理文件和文件系統,它並不涉及文件的讀寫操作。( )1
2、創建一個File對象,就會在某個物理路徑下創建一個文件或目錄。( )0
3、使用Java的輸出流寫入數據的時候,就會開啓一個通向目的地的通道,這個目的地可以是文件,但不能是內存或網絡連接等。( )0
4、“純文本”類的信息,一般使用字符流來進行處理。( )1
5、InputStream抽象類的read方法出錯後一定會拋出一個IOException異常。( )1
三、填空題
1、Java中有四個“輸入/輸出”的抽象類, 、 、 和 。
InputStream 、OutputStream、Writer、Reader
2、從網站上下載jspsmartupload.jar這個文件,將此文件放到網站的 WEB-INF\lib 文件夾底下。
3、字節流類爲處理字節式輸入/輸出提供了豐富的環境,其處理單元爲 1 個字
節;字符流提供了處理任何類型輸入/輸出操作的足夠功能,字符流處理的單元爲 2
個字節的Unicode字符。
四、問答題
1. JSP網頁使用File類之前,將哪個命名空間載入?
import="java.io.*"
2. 試說明如何利用File類進行文件目錄的操作?
答:利用File類進行文件目錄的操作首先必需建立一個File對象,
將所要操作文件或是目錄完整路徑當作參數傳入,當File對象建立之後,
JSP網頁便可以利用這個對象調用File類的所有方法,以進行各種文件目錄的操作。
3. 簡述文件存取操作的操作過程。
答:首先利用File類建立一個參照指定文件的目錄的File實體對象,
接下來利用FileWriter和FileReader這兩個類,進行指定文件的讀寫,
其中的FileWriter的write方法,負責將數據寫入文件,而FileReader的read則用來讀取文件中的數據。
五、編程
1、 創建兩個文件selectContent.jsp和writeContent.jsp,首先使用selectContent.jsp中的表單輸入存放路徑、保存的文件名和將要寫入文件的文件內容信息,提交後,由writeContent.jsp文件負責將內容寫到指定的文件中,同時放到指定的路徑下。運行結果如圖8-12和圖8-13所示。
圖8-12 selectContent.jsp頁面 |
圖8-13 提交成功後的結果 |
2、. 創建兩個文件selectFile.jsp和readContent.jsp。首先使用selectFile.jsp中的表單輸入存放路徑和將要讀取的文件名,提交後,由readContent.jsp文件負責將文件讀出並顯示在頁面上。運行結果如圖8-14和圖8-15所示。
圖8-14 selectFile.jsp頁面 圖8-15 提交成功後的結果
習題十【對應三版本8章】
一、選擇題
1、創建JSP應用程序時,配置文件web.xml應該在程序下的( )目錄中。C
A. admin B. servlet C. WEB-INF D. WebRoot
2、 Oracle數據庫的JDBC驅動程序類名及完整包路徑爲:( )D
A. jdbc.driver.oracle.OracleDriver
B. jdbc.oracle.driver.OracleDriver
C. driver.oracle.jdbc.OracleDriver
D. oracle.jdbc.driver.OracleDriver
3、請選出微軟公司提供的連接SQL Server 2000的JDBC驅動程序。( )C
A. oracle.jdbc.driver.OracleDriver B. sun.jdbc.odbc.JdbcOdbcDriver
C. com.microsoft.jdbc.sqlserver.SQLServerDriver D. com.mysql.jdbc.Driver
4、下述選項中不屬於JDBC基本功能的是:( )D
A. 與數據庫建立連接 B. 提交SQL語句 C. 處理查詢結果 D. 數據庫維護管理
5.在 JSP中,便用 Resultset對象的 next()方法移動光標時,如果超過界限,會拋出異常,該異常通常是( )。C
A.InterruptedExceptlon B.AlreadyBoundExceptlon C.SQLException D.NetExcePtlon
6、cn是Connection對象,創建Statement 對象的方法是:( )B
A. Statement st=new Statement (); B. Statement st=cn.createStatement()
7、查詢數據庫得到的結果集中,遊標最初定位在( )。B
A. 第一行 B. 第一行的前面 C. 最後一行 D. 最後一行的後面
8、在JDBC中,下列哪個接口不能被Connection創建( )。D
A.Statement B.PreparedStatement C.CallableStatement D.RowsetStatement
9、該程序加載的是哪個驅動?( )A
A. JDBC-ODBC橋連接驅動 B.部分Java編寫本地驅動
C. 本地協議純Java驅動 D.網絡純Java驅動
10、下列代碼生成了一個結果集
conn=DriverManager.getConnection(uri,user,password);
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery("select * from book");
rs.first();rs. previous();
下面哪項對該rs描述正確( )
A.rs.isFirst()爲真 B.rs.ifLast()爲真 C.rs.isAfterLast()爲真 D.rs.isBeforeFirst()爲真
二、判斷題[1:表示對;0:表示錯;]
1、使用JDBC-ODBC橋效率會有所降低。( )1
2、Statement對象提供了int executeUpdate(String sqlStatement)方法,用於實現對數據庫中數據的添加、刪除和更新操作。( )1
3、數據庫服務與Web服務器需要在同一臺計算機上。( )0
4、使用數據庫連接池需要煩瑣的配置,一般不宜使用。( )0
5、JDBC構建在ODBC基礎上,爲數據庫應用開發人員、數據庫前臺工具開發人員提供
了一種標準,使開發人員可以用任何語言編寫完整的數據庫應用程序。( )0
三、填空題
1、JSP應用程序配置文件的根元素爲 _______<web-app>___________。
2、JDBC的主要任務是:__________________、__________________、__________________。
與數據庫建立連接 、 發送SQL語句 、 處理結果 。
3、如果想創建一個不敏感可滾動並且不可更新的結果集,參數選擇__________________和__________________。
ResultSet.TYPE_SCROLL_INSENSITIVE ResultSet.CONCUR_READ_ONLY
4、在可更新的結果集中插入一條新紀錄,需要移動首先到可更新行,調用_______moveToInsertRow();___________函數。
5、Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 是__________Access________數據庫的加載驅動語句。
四、問答題
1. 試說明Statement與ResultSet接口的意義,以及它們生成的對象在JSP程序處理數據庫時,分別扮演着什麼樣的角色?
答:Statement:Statement接口中主要是提供了一些SQL運行的方法,
以及設置運行SQL後所返回ResultSet類型對象的屬性。
由此接口所生成的對象在JSP中同樣是用來運行各種SQL指令與設置Resultset對象的屬性。
ResultSet:ResultSet接口下所定義的方法大都是用來控制ResultSet對象中指針的移動的,
以取得其中的數據元素。
2. 試列舉說明Statement運行SQL指令的3種方法成員。
答:execute():運行一般SQL指令,例如建立數據庫、修改數據表等等。
executeQuery():運行以SELECT語句開頭的描述,
這個方法同時返回一個包含查看結果的ResultSet對象。
3. 說明如何一次運行多段SQL語句。
答:首先建立一個Statement對象,將多個想要運行的SQL指令以addBatch()方法加到批處理文檔中,
最後引用executeBacth()方法運行。
五、編程
1. 使用本章的數據庫ch10中student表的結構,創建3個頁面selectStudent.jsp、byNumber.jsp和byName.jsp,通過JSP頁面對student表進行名字和學號的查詢。運行效果如圖10-28、圖10-29和圖10-30所示。
圖10-28 selectStudent.jsp頁面 |
圖10-29 byNumber.jsp頁面 |
2. 使用本章數據庫ch10中student表的結構通過JSP頁面對student表進行添加、刪除和修改。添加JSP頁面處理功能:添加新學生、修改和刪除選中的學生信息,如圖10-31所示(或者自行設計界面)。
圖10-30 byName.jsp頁面 圖10-31 演示頁面
習題十二【對應三版本10章】
一. 選擇題
1. 下面Servlet的哪個方法用來爲請求服務,在Servlet生命週期中,Servlet每被請求一次它就會被調用一次。( )A
A.service() B.init() C. doPost() D.destroy()
P286
2. Servlet 可以在以下( )三個不同的作用域存儲數據。B
A.HttpServletRequest、HttpServletResponse、HttpSession
B.HttpServletRequest、HttpSession、ServletContext
C.HttpServletResponse、HttpSession、ServletContext
D.HttpServletRequest、HttpServletResponse、ServletContext
P298 P307 P311
3. 在J2EE中,Servlet從實例化到消亡是一個生命週期。下列描述正確的是( )。ABD
A.在典型的Servlet生命週期模型中,每次Web請求就會創建一個Servlet實例,請求結束Servlet就消亡了P286
B.init()方法是容器調用的Servlet實例此方法僅一次 P293
C.在容器把請求傳送給Servlet之後,和在調用Servlet實例的doGet或者doPost方法之前,容器不會調用Servlet實例的其他方法
D.在Servlet實例在service()方法處理客戶請求時,容器調用Servlet實例的init()方法一定成功運行了P293
4. 在J2EE中,給定某Servlet的代碼如下,編譯運行該文件,以下陳述正確的是( )。B
Public class Servlet1 extends HttpServlet{
Public void init() throws ServletException{
}
Public void service(HttpServletRequest request,HttpServletResponse response)
Throws ServletException,IOException{
PrintWriter out = response.getWriter();
Out.println(“hello!”);
}
}
A. 編譯該文件時會提示缺少doGet()或者dopost()方法,編譯不能夠成功通過
B.編譯後,把Servlet1.class放在正確位置,運行該Servlet,在瀏覽器中會看到輸出文字:hello!
C.編譯後,把Servlet1.class放在正確位置,運行該Servlet,在瀏覽器中看不到任何輸出的文字
D.編譯後,把Servlet1.class放在正確位置,運行該Servlet,在瀏覽器中會看到運行期錯誤信息
5. 下面是IP地址爲222.22.49.189Web服務器上,ch應用下的一個Servlet部署文件的片段:
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>myservlet.example.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/helpHello</url-pattern>
</servlet-mapping>
訪問此Servlet的URL地址是。( )A
A.http://222.22.49.189:8080/ch/helpHello【默認】
B.http://222.22.49.189:8080/ch/helpHello.java
C.http://222.22.49.189:8080/helpHello
D./helpHello
6. 在Web應用的部署描述文件中下面哪個選項能夠將com.example.LoginServlet servlet 映射爲 /utils/LoginServlet?( )D
A. <servlet>
<servlet-class>com.example.LoginServlet</servlet-class>
<url-pattern>/utils/LoginServlet</url-pattern>
</servlet>
B. <servlet-mapping>
<servlet-class>com.example.LoginServlet</servlet-class>
<url-pattern>/utils/LoginServlet</url-pattern>
</servlet-mapping>
C. <servlet>
<servlet-mapping>
<servlet-class>com.example.LoginServlet</servlet-class>
<servlet-name>Login Servlet</servlet-name>
<url-pattern>/utils/LoginServlet</url-pattern>
</servlet-mapping>
</servlet>
D. <servlet>
<servlet-name>Login.Servlet</servlet-name>
<servlet-class>com.example.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login.Servlet</servlet-name>
<url-pattern>/utils/LoginServlet</url-pattern>
</servlet-mapping>
7. 在Web容器中,以下哪兩個類別的實例分別代表HTTP請求與響應對象?( )BC
A. HttpRequest B. HttpServletRequest
C. HttpServletResponse D. HttpPrintWriter
二. 判斷[1:表示對;0:表示錯;]
1. 不能給一個Servlet映射多個訪問路徑。( 0)P292
2. JSP技術是在Servlet之後產生的,它以Servlet爲核心技術,是Servlet技術的一個成功應用。( 1)P事實
3. 實現轉發需要兩個步驟,首先在Servlet中要得到RequestDispatcher對象,然後在調用該對象的forward方法實現轉發。
( 1 )P313-314
三. 填空
1. 在Servlet中有兩種異常處理機制:______和_______。
程序式異常處理機制和聲明式異常處理機制。P316.以及標題。
2. 如果某個類要成爲Servlet,則它應該繼承_________、________或_________接口或類。
HttpServlet、GenericServlet、Servlet
3. Servlet 的生命週期又一系列事件組成,把這些事件按照先後順序排序_________、________、_________、________、_________。
加載類,實例化,初始化,請求處理,銷燬
四. 簡答
1. 簡述Servlet和JSP的關係。
答:Servlet是服務器端運行的一種Java應用程序。當瀏覽器端有請求則將其結果傳遞給瀏覽器。
在JSP中使用到的所有對象都將被轉換爲Servlet或者非Servlet的Java對象,
然後被執行,所以執行JSP實際上與執行Servlet是一樣的。
2. 簡述Servlet的生命週期。
答:
Servlet的生命週期可分爲下面幾個階段:
(1)裝載Servlet。
(2)實例化一個Servlet實例對象。
(3)調用Servlet的init( )方法進行初始化。
(4)服務。
(5)卸載。
3. 簡述HttpSession接口的功能和使用方法。
答:
.HttpSession接口是Servlet提供會話追蹤解決方案。 HttpSession對象存放在服務器端,只是對cookie和url重寫技術的封裝應用。
使用HttpSession進行會話控制的過程:
(1)獲得一個HttpSession實例對象;
(2)訪問和設置與會話相關聯信息,維護會話的狀態;
(3)廢棄會話數據。
4. 簡述開發一個Servlet所需要的步驟。
答:
第一步:編寫Servlet實例
第二步:在web.xml文件中配置該Servlet
第三步:編寫其它文件
五、編程
1. 編寫一個HTML頁面和一個Servelt,實現利用Servelt()的doPost()方法讀取HTML文件中Form表單內容。
2. 編寫一個利用HttpSession接口的用戶登錄的Servlet,當用戶已經登錄時,返回歡迎信息,否則轉向登錄頁面。
習題十三【對應三版本11章】
一、選擇題
1. 在web.xml文件中,有下列代碼:
<filter-mapping>
<filter-name>LogFilter</filter-name>
<url-pattern>/*.jsp</url-pattern>
< dispatcher > REQUEST </ dispatcher >
< dispatcher > INCLUDE < /dispatcher >
</filter-mapping>
Hello.jsp文件的代碼如下:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<html>
<body bgcolor=cyan>
<jsp:include file="date.jsp"/>
<jsp:forward page="helpHello.jsp"/>
<a href="login.jsp">登錄</a>
</body>
</html>
訪問Hello.jsp文件,過濾器LogFilter過濾的文件有( )D
A.Hello.jsp B.helpHello.jsp
C.login.jsp D.date.jsp
< dispatcher > REQUEST </ dispatcher >
不要request
< dispatcher > INCLUDE < /dispatcher >
不要include
2. 下列哪個不屬於監聽器接口ServletContextAttributeListener提供的方法()D
A.public void attributeAdded(ServletContextAttributeEvent event)
B.public void attributeRemoved(ServletContextAttributeEvent event)
C. public void attributeReplaced(ServletContextAttributeEvent event)
D.public void valueBound(HttpSessionBindingEvent event)
P355
3. 下列哪個不屬於Servlet2.3提供的監聽器。( )D
A.ServletContext對象狀態變化(事件)的監聽器P351
B.HttpSession對象狀態變化(事件)的監聽器P351
C.HttpServletRequest對象狀態變化(事件)的監聽器[沒找到]
D.HttpServletResponse對象狀態變化(事件)的監聽器
【或者,可以按照P351的。沒有response】
4. 爲了實現對下列jsp代碼動作的監聽,需要定義的監聽器必須實現下列哪些接口。( )BD
test.jsp文件代碼如下:
<%
getServletContext().setAttribute("userName","hellking");
getServletContext().removeAttribute("userName");
request.getSession.setAttribute("user","hellking");
%>
A. ServletContextListener B. ServletContextAttributeListener
C. HttpSessionAttributeListener D. HttpSessionBindingListener
E. ServletRequestAttributeListener
5.給定某Servlet程序的片段如下,用戶在瀏覽器地址欄中鍵盤鍵入正確的請求URL並回車後,在控制檯上顯示的結果是。()C
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException ,IOException
{
System.out.println("get");
doPost(request,response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException ,IOException
{
System.out.println("post");
}
A.get B.post C.getpost D.postget
【嗯哼?】
二、判斷[1:表示對;0:表示錯;]
1. 部署過濾器的工作內容,實際就是在Web應用的Web.xml文件中配置過濾器。( 1)
2. 在Web.xml文件中部署監聽器,用<listener>註冊監聽器,用<listener-mapping>映射監聽器。( 0)P353
filter-mapping的配置:我們將uimfilter過濾器映射給所有的jsp文件【P342】
3. 如果使指定的IP訪問JSP時報錯,並告知用戶不能訪問,可以使用監聽器。( 1 )
【監聽器的理解:監聽器好比一個衛兵,衛兵一直站在那裏等待長官的命令,當衛兵收到長官的命令以後,立即執行
之前已經協定好的事件。】
三、填空
1. 對Web應用來說,_______就是駐留在服務器端,在源數據和目的數據間,對Web請求和Web響應的頭屬性(Header)和內容體(Body)進行操作的一種特殊Web組件。過濾器&filter&Filter
2. 過濾器對象使用_______對象調用過濾器鏈中的下一個過濾器或者是目標資源。
FilterChain & filterchain & Filterchain & filterChainP339
3. 在J2EE中,使用Servlet過濾器時,需要在web.xml通過_____元素將過濾器映射到Web資源。<filter-mapping>[P342]
4. 在一個Filter中,處理filter業務的是____方法。 [P339-]
doFilter (ServletRequest request,ServletResponse response, FilterChain chain)
四、簡答
1. 什麼是過濾器?什麼是監聽器?分別應用在哪些方面?
2. Filter接口、FilterConfig接口和FilterChain接口的功能分別是什麼?提供的方法有哪些?
3. ServletContextListener接口、ServletContextAttributeListener接口和HttpSessionBindingListener接口的功能分別是什麼?提供的方法有哪些?
4. JSP亂碼如何解決,列舉幾種解決方案?
5. 如何編寫、配置過濾器,舉例說明?
6. 如何編寫、配置監聽器,舉例說明?
五、編程
1. 編寫一個過濾器LogFilter.java,對Request請求進行過濾,記錄請求的訪問時間戳、從請求獲取遠程地址、從請求獲取遠程主機名、客戶請求的資源URI、客戶用的瀏覽器,並記錄到日誌文件中。
2. 編寫一個監聽器ContextListener .java,監聽Web應用的啓動和停止,並記錄到日誌文件中。
習題十四【對應三版本12章】
一. 選擇題
1. 給定程序片段:
<% String value = "beanvalue"; %>
<% request.setAttribute ("com.example.bean", value); %>
<%--插入代碼處--%>
在第3行插入哪個EL表達式,能夠計算並輸出"beanValue"。( )E
A. ${bean} B. ${value} C. ${beanValue}
D. ${com.example.bean}
E. ${requestScope["com.example.bean"]}
F. ${request.get("com.example.bean").toString()}
2. 假定在web應用中,請求參數productID包含產品的標識符,下面哪兩個EL表達式能夠計算productID的值。( )B
A. ${product ID}
B. ${param.productID}
C. ${params.productID}
D. ${params.productID[1]}
3. 用戶的會話對象中存在屬性cart,以下哪兩條語句能夠將該屬性從session中刪除( ) DE
A. ${cart = null}
B. <c:remove var="cart" />
C. <c:remove var="${cart}" />
D. <c:remove var="cart" scope="session" />
E. <c:remove scope="session">cart</c:remove>
F. <c:remove var="${cart}" scope="session" />
G. <c:remove scope="session">${cart}</c:remove>
4. 在JSP頁面中,開發人員需要構建如下的動態代碼:
if ( test1 ) {
// action1
} else if ( test2 ) {
// action2
} else {
// action3
}
下面個JSTL的結構能夠實現相同的功能?B
A. <c:choose>
<c:when test="test1" >action1</c:when>
<c:when test="test2">action2</c:when>
<c:when>action3</c:when>
</c:choose>
B. <c:choose>
<c:when test="test1">action1</c:when>
<c:when test="test2">action2</c:when>
<c:otherwise>action3</:otherwise>
</c:choose>
C. <c:if test="test1">
<c:then>action1</c:then>
<c:else-if test=""test2">
<c:then>action2</c:then>
<c:else>action3</c:else>
</c:else-if>
</c:if>
D. <c:if test="test1">
<c:then>action1</c:then>
<c:else>
<c:if test="test2">
<c:then>action2</c:then>
<c:else>action3</c:else>
</c:if>
<c:else>
<c:if>
二. 判斷[1:表示對;0:表示錯;]
1. JSTL代碼片段<c:import url="foo.jsp"/>能夠實現導入其他web資源的功能。(1 )
2. <fmt:setLocale>是用於設置本地屬性的JSTL標記。( 1)
3. SQL標記庫中的標記<sql:query>是用來修改數據庫中的記錄。(0 )
三. 填空
1. 假定在web應用中,請求參數productID包含產品的標識符,能夠計算productID值的EL表達式____。
2. JSTL的全稱是____。
3. JSTL提供的標籤分爲5大類,分別是_____、______、______、______和______。
4. 在JSTL核心標籤當中,網頁數據的存取操作行爲是由標籤_______、_____與______等3個標籤所設置的。
5. 在與url有關的標籤中,______用來設置一個超級鏈接。
6. 流程控制標籤用來控制程序運行的流程, __________搭配__________與__________,來進行多重判斷。
7. <c:forEach>標籤通過屬性值_____、_____與_____控制循環的間隔數及起始與結束值。
8. <c:out>標籤中使用____屬性表示要輸出的內容。
9. <c:set>標籤的作用是____。
10. 標識EL語法元素的符號爲______。
11. EL中的三元運算符爲________。
12. 與存活期範圍有關的4個隱含對象分別是______、_______、_______以及_______。
13. 隱含對象_______與_______,可直接用來存取表單傳遞的參數。
14 系統初始化數據存放於WEB-INF文件夾的_____,隱含對象____可用來對其進行訪問。
1. ${param.productID}
2. JSP Standard Tag Library
3. JSTL提供的標籤分爲5大類,分別是[核心標籤]、[i18n國際化格式標籤]、[SQL標籤]、[XML標籤]和[函數標籤]。
4. 在JSTL核心標籤當中,網頁數據的存取操作行爲是由標籤[out]、[set]與[remove]等3個標籤所設置的
5. 在與url有關的標籤中,[<c:url>]用來設置一個超級鏈接。
6. 流程控制標籤用來控制程序運行的流程,[<c:choose>]搭配[<when>]與[<otherwise>],來進行多重判斷。
7. <c:forEach>標籤通過屬性值[begin]、[end]及[step]控制循環的間隔數及起始與結束值。
8. value
9. 將EL表達式的值存儲在一個變量中
10. 標識EL語法元素的符號爲[&{}]。
11. EL中的三元運算符爲[A?B:C]。
12. 與存活期範圍有關的4個隱含對象分別是[pageScope]、[requestScope]、[sessionScope]及[applicationScope]。
13. 隱含對象[param]及[paramValues],可直接用來存取表單傳遞的參數。
14. 系統初始化數據存放於WEB-INF文件夾的[web.xml]中,隱含對象[initParam]可用來對其進行存取。
四. 簡答
1. 請簡述JSTL與一般的JSP技術有何差異。
2. JSTL標籤的分類主要有哪幾種,請簡單說明。
3. 使用JSTL有何優點?
4. 在Tomcat中安裝使用JSTL的步驟有哪些?
5. <c:if>和<c:choose>這兩種標籤都可以用來進行流程判斷,請說明它們的差異及用法。
6. 說明如何使用JSTL所提供的<sql:setDataSource>標籤設置聯機信息。
7. 在EL中訪問變量的值可以使用如下的EL元素:${變量名},如果沒有指定變量的有效範圍,JSP容器會依次到哪幾個範圍內查找該變量?
8. 說明如何運用隱含對象取得表單參數
1.
請簡述JSTL與一般的JSP技術有何差異。
答:使用JSTL實現動態JSP頁面的最大特點在於簡單,避免了使用腳本片段帶來的許多問題,Web應用開發人員利用JSTL可以取代直接嵌入頁面的代碼片段,提高程序可讀性和可維護性。
2.
JSTL標籤的分類主要有哪幾種,請簡單說明。
答:核心標籤庫、I18N 格式標籤庫、SQL 標籤庫、XML 標籤庫、函數標籤庫
4.
在Tomcat中安裝使用JSTL的步驟有哪些?
Sun的JSTL頁面(http://java.sun.com/products/jsp/jstl)提供JSTL規範文檔和相關實現的下載。Apache Jakarta項目是JSTL標準的一種實現,具體下載網址爲:http://www.apache.org/dist/jakarta/taglibs/standard/。Windows系統下軟件包的對應下載的文件名爲:jakarta-taglibs-application-current.zip。
Jakarta JSTL的實現是一些JAR文件,如果在Web應用中使用JSTL,就需要在Web應用的WEB-INF\lib目錄下包含JSTL的JAR文件。將jstl.jar和standard.jar複製到Tomcat網站根目錄下的文件夾WEB-INF\lib當中,並將tld目錄複製到Tomcat的WEB-INF目錄下,重新啓動Tomcat之後,就可以開始使用JSTL了。
5.
<c:if>和<c:choose>這兩種標籤都可以用來進行流程判斷,請說明它們的差異及用法。
答:<c:if>標籤用於進行條件判斷,只有當其test屬性指定的Boolean表達式值爲true時纔會處理其本體的內容,否則不執行。
<c:choose>標記用來處理多個可選條件下的選擇。<c:choose>標記需要和<c:when>、<c:otherwise>標記配套使用,並且<c:when>和<c:otherwise >必須依附在<c:choose>標籤下。
6.
1. 說明如何使用JSTL所提供的<sql:setDataSource>標籤設置聯機信息。
答:
使用<sql:setDataSource>標記來指定數據源,其語法爲:
<sql:setDataSource
{ dataSource=“dataSource” | url=“jdbcUrl”
[driver=“driverClassName”]
[user=“userName”]
[password=“password”] }
[var=“varName”]
[scope=“{page|request|session|application}”] />
url屬性用於指定連接的url。driver屬性用於指定驅動程序。
dataSource屬性爲數據源。
7.
答:pageScope]、[requestScope]、[sessionScope]及[applicationScope]。
8.
答:隱含對象param與paramValues被設計用來提供使用request之外的一個選擇,這兩個對象最大的好處便是簡化了request參數數據的存取,其功能相對於request對象如下表所示:
EL對象 Request對象
${param.paraName} request.getParameter(paraName)
${paramValues.paraName } request.getParameterValues(paraName)
以下爲取值的範例程序:
${param.yearValue }
param內容包含當前網頁所有的request參數,這段程序代碼取得其中名爲yearValue的參數值。
五. 編程
1. 使用JSTL標準標記庫中的標記輸出1~100的數字之和。
提示:本程序所使用的JSTL核心標記庫的uri爲http://java.sun.com/jsp/jstl/core。
2. 使用標準標籤庫中的<c:foreach>標籤、<c:if>標籤和<c:out>標籤列出1~100中能被2整除不能被3整除的數字。
圖15-11 帶body的標籤