一、 填空題
- 一個完整的JSP頁面是由普通的HTML標記、JSP指令標記、JSP動作標記、 變量聲明 與方法聲明 、程序片 、表達式 、 注釋 7種要素構成。
- JSP頁面的基本構成元素,其中變量和方法聲明(Declaration) 、 表達式 (Expression)和Java程序片(Scriptlet)統稱為JSP腳本元素 。
- 指令標記、JSP動作標記統稱為 JSP標記 。
- “<%!”和“%>”之間聲明的方法在整個頁面內有效,稱為頁面的成員方法 。
- 在“<%!”和“%>”之間聲明的變量又稱為 頁面成員變量 ,其作用范圍為整個JSP頁面。
- JSP頁面的程序片中可以插入 HTML 標記。
- 當JSP頁面的一個客戶線程在執行 synchronized 方法時,其他客戶必須等待。
- JSP頁面中,輸出型注釋的內容寫在 “<!--” 和 “-->” 之間。
- .JSP聲明函數時,如果在前面加上 synchronize 關鍵字,功能是當前一個用戶在執行該方法時,其他用戶必須等待,直到該用戶完成操作。
- Page指令的屬性Language的默認值是 java 。
- 在Error.jsp頁面中,要使用Exception對象,必須設置的指令是 <%@page isErrorPage = “true”%>.
- 要使java bean在整個應用程序的聲明周期中,被該應用程序中的任何JSP文件所使用,則該java bean的Scope屬性必須設置為 application 。
- JSP的_ __session__ __對象用來保存單個用戶訪問時的一些信息。
- response對象的_ sendRedirect(URL url)_ _方法可以將當前客戶端的請求轉到其他頁面去。
- 當客戶端請求一個JSP頁面時,JSP容器會將請求信息包裝在__ _request__對象中。
- response.setHeader(“Refresh”, “5”)的含義是指 頁面刷新時間為 5秒__。
- 在JSP中為內置對象定義了4種作用范圍,即 Application Scope 、Session Scope 、Page Scope 和Request Scope 四個作用范圍。
- 表單的提交方法包括___ get ___和___post_ _方法。
- 表單標記中的__ action _屬性用於指定處理表單數據程序url的地址。
- JavaBean是一個 java 類,它必須有一個 無參的構造 方法。
- JSP的是內部對象可以直接使用,它是由 web容器 創建的。
- 在JSP中,頁面間對象傳遞的方法: request 、 session 、 application 、 cookie 等方法。
- 在jsp頁面中,可以用request對象的 getParameterValues() 方法來獲取其他頁面傳遞參數值的數組。
- 在JSP中使用JavaBean的標簽是 <jsp:useBean class=BeanName id=Bean實例> ,其中id的用途是 實例化一個Bean對象 。
- JavaBean中用一組set方法設置Bean的私有屬性值,get方法獲得Bean的私有屬性值。set和get方法名稱與屬性名稱之間必須對應,也就是:如果屬性名稱為xxx,那么set和get方法的名稱必須為 setXxx() 和 getXxx() 。
- 用戶在實際Web應用開發中,編寫Bean除了要使用import語句引入Java的標准類,可能還需要自己編寫的其他類。用戶自己編寫的被Bean引用的類稱之為 Bean的輔助類
- 創建JavaBean的過程和編寫Java類的過程基本相似,可以在任何Java的編程環境下完成 編寫、編譯和發布 。
- 布置JavaBean要在Web服務目錄的WEB-INF\classes文件夾中建立與 Bean的包名 對應的子目錄,用戶要注意目錄名稱的大小寫。
- 使用Bean首先要在JSP頁面中使用 import 指令將Bean引入。
- 要想在JSP頁面中使用Bean,必須首先使用 <jsp:useBean> 動作標記在頁面中定義一個JavaBean的實例。
- JSTL標簽庫中, c:forEach 標簽用來循環輸出集合中的數據。
- 獲取request作用域中名為“uname”值的EL表達式是 ${uname} 。
- 編寫過濾器類需要實現的 Filter 接口。
- Filter接口中最主要的方法是 doFilter 方法。
- 實現Filter接口的類需要重寫doFilter方法、 init 方法、destroy方法。
二、 選擇題
1. |
如果做動態網站開發,以下( A )可以作為服務器端腳本語言(選擇一項) |
|
|
|
|
|
A. |
Java |
|
B. |
Jsp |
|
C. |
Javascript |
|
D. |
Html |
2. |
JSP中存在如下代碼:<%="2"+"4" %>,運行該JSP后,以下說法正確的是( C )(選擇一項) |
|
|
|
|
|
A. |
沒有任何輸出 |
|
B. |
輸出6 |
|
C. |
輸出24 |
|
D. |
指令將引發錯誤 |
3. |
在JSP中,使用( C )對象的( )方法可完成網頁重定向(選擇一項) |
|
|
|
|
|
A. |
request,getRequestDispatcher() |
|
B. |
request,forward() |
|
C. |
response,sendRedirect() |
|
D. |
response,setRequestDispatcher() |
4. |
在JSP中使用JDBC語句訪問數據庫,正確導入SQL類庫的語句是( A )(選擇一項) |
|
|
|
|
|
A. |
<%@ page import="java.sql.*" %> |
|
B. |
<%@ page import="sql.*" %> |
|
C. |
<% page import="java.sql.*" %> |
|
D. |
<%@ import="java.sql.*" %> |
5. |
對於分頁查詢, 以下說法不正確的是( B )(選擇一項) |
|
|
|
|
|
A. |
可以減輕服務器壓力 |
|
B. |
對於程序開銷極大 |
|
C. |
以提高用戶體驗 |
|
D. |
對於不同數據庫有不同的SQL指令 |
6 |
對於ServletRequest接口的getAttribute()方法,說法正確的是( A )(選擇一項) |
|
|
|
|
|
A. |
獲取指定名稱的屬性值 |
|
B. |
設置指定屬性的值 |
|
C. |
刪除指定屬性的值 |
|
D. |
以上都不對 |
7. |
對JSTL說法中正確的是( AB )(選擇二項) |
|
|
|
|
|
A. |
foreach用來循環輸出集合中的數據 |
|
B. |
set標簽用來定義變量 |
|
C. |
out標簽只能輸出session中的變量值 |
|
D. |
if標簽主要用來執行數據庫操 |
8. |
在JSP頁面中,下列( A )表達式語句可以獲取頁面請求中名字為title的文本框的內容。(選擇一項) |
|
|
|
|
|
A. |
<%=request.getParameter("title")%> |
|
B. |
<%=request.getAttribute("title")%> |
|
C. |
<%=request.getParameterValues("title")%> |
|
D. |
<%=request.getParameters("title")%> |
9. |
jsp在執行過程中經過()階段,由web容器將之轉換成java源代碼( A )(選擇一項) |
|
|
|
|
|
A. |
翻譯 |
|
B. |
編譯 |
|
C. |
執行 |
|
D. |
響應 |
10. |
jsp在執行過程中經過()階段,會將java源碼轉換成class文件( B )(選擇一項) |
|
|
|
|
|
A. |
翻譯 |
|
B. |
編譯 |
|
C. |
執行 |
|
D. |
響應 |
11. |
在JSP的小腳本中,使用以下( C)語句可以使瀏覽器重定向到另一個頁面(選擇一項) |
|
|
|
|
|
A. |
request.sendRedirect("http://www.jb-aptech.com.cn"); |
|
B. |
request.sendRedirect(); |
|
C. |
response.sendRedirect("http://www.jb-aptech.com.cn"); |
|
D. |
response.sendRedirect(); |
12. |
JSP文件test.jsp文件如下所示,運行時,將發生(D)。(選擇一項) <html> <% String str = null;%> str is <%=str%> </html> |
|
|
|
|
|
A. |
編譯階段出現錯誤 |
|
B. |
翻譯階段出現錯誤 |
|
C. |
執行字節碼時發生錯誤 |
|
D. |
運行后,瀏覽器上顯示:str is null |
13. |
JSP頁面的page指令主要用於設置該頁面的各種屬性,page指令的language屬性的作用是( B )。(選擇一項) |
|
|
|
|
|
A. |
將需要的包或類引入到JSP頁面中 |
|
B. |
指定JSP頁面使用的腳本語言,默認為Java |
|
C. |
指定JSP頁面采用的編碼方式,默認為text/html |
|
D. |
服務器所在國家編碼 |
14. |
在java Web應用開發中,Servlet程序需要在( B )文件中配置。(選擇一項) |
|
|
|
|
|
A. |
Jsp |
|
B. |
web.xml |
|
C. |
struts.xml |
|
D. |
servlet.xml |
15. |
在Java EE中,HttpServletResponse的( B )方法用於一個HTTP請求重定向到另一個資源。(選擇一項) |
|
|
|
|
|
A. |
sendURL() |
|
B. |
sendRedirect() |
|
C. |
forward() |
|
D. |
redirectURL() |
16. |
在JSP頁面中進行訪問控制時,一般會使用JSP的( B )內置對象實現對用戶的會話跟蹤(選擇一項) |
|
|
|
|
|
A. |
Request |
|
B. |
Session |
|
C. |
Response |
|
D. |
Application |
17. |
在JSP頁面中有如下Java代碼,一共存在( B)處錯誤(選擇一項) <% String userName= (String)session.getParameter("userName"); if(userName==null) { %> 您尚未登錄! <% } else { %> 歡迎您,<%=userName %> <% } %> |
|
|
|
|
|
A. |
0 |
|
B. |
1 |
|
C. |
2 |
|
D. |
3 |
18. |
在JSP中,以下哪個方法可以正確獲取復選框的值( C )(選擇一項) |
|
|
|
|
|
A. |
request.getParameterValue() |
|
B. |
response.setParameterValues() |
|
C. |
request.getParameterValues() |
|
D. |
request.getParameter() |
19. |
在一個jsp頁面中包含了這樣一種頁面元素,<% int i = 10; %>這是( B )(選擇一項) |
|
|
|
|
|
A. |
表達式 |
|
B. |
小腳本 |
|
C. |
指令 |
|
D. |
注釋 |
20. |
在JSP中,以下( C )技術最適合實現購物車的存儲(選擇一項) |
|
|
|
|
|
A. |
Page |
|
B. |
Request |
|
C. |
Session |
|
D. |
Application |
21. |
以下JSP關鍵代碼的運行效果為( A )。(選擇一項) <% Map map=new HashMap(); map.put("a","Java"); map.put("b","JSP"); map.put("a","C#"); request.setAttribute("map",map); %> ${map.b}<br/> ${map["a"]} |
|
|
|
|
|
A. |
JSP C# |
|
B. |
JSP JAVA |
|
C. |
運行時出現錯誤 |
|
D. |
什么也不輸出。 |
22. |
以下JSP代碼片段的輸出結果是( D )(選擇一項) <% String getName(String name){ return name.subString(0,3); } %> 姓名:<%=getName("齊德龍東強")%> |
|
|
|
|
|
A. |
姓名: |
|
B. |
姓名:齊德 |
|
C. |
姓名:齊德龍 |
|
D. |
編譯錯誤 |
23. |
index.jsp中代碼如下,可以正確填寫到橫線處的代碼為( AB )(選擇二項) <%@ pae language="java" pageEncoding="ISO-8859-1" ______________%> <% Date date = new Date(); %> <%=date%> |
|
|
|
|
|
A. |
import="java.util.*" |
|
B. |
import="java.util.Date" |
|
C. |
package="java.util.*" |
|
D. |
package="java.util.Date" |
24. |
以下JSP代碼運行后的結果為( B )。(選擇一項) <%int i =8;%> <%=i+"8"%> |
|
|
|
|
|
A. |
i8 |
|
B. |
88 |
|
C. |
16 |
|
D. |
編譯錯誤 |
25. |
在下JSP代碼,用戶訪問login.jsp頁面點擊“登錄”后的顯示結果是( C )。(選擇一項) login.jsp頁面代碼如下: <form action="display.jsp"> <input type="text" name="u1" value="admin1"/> <input type="text" name="u2" value="admin2"/> <input type="submit" value="登錄"/> </form> display.jsp頁面代碼如下: <% request.setAttribute("x","admin3"); request.getRequestDispatcher("success.jsp").forward(request,response); %> success.jsp頁面代碼如下: <%=request.getParameter("u1")%> <%=request.getAttributer("x")%> |
|
|
|
|
|
A. |
admin1 admin2 |
|
B. |
admin1 null |
|
C. |
admin1 admin3 |
|
D. |
null admin3 |
26. |
如下JSP代碼輸出集合中各元素,橫線處應填寫( AC )。(選擇二項) <% List<String> strs= new ArrayList<String>(); strs.add("北京"); strs.add("上海"); strs.add("浙江"); request.setAttribute("strs",strs); %> <c:forEach var="strList" items="___________"> <c:out value="________"></c:out> </c:forEach> |
|
|
|
|
|
A. |
${strs},${strList} |
|
B. |
${strList},${strs} |
|
C. |
${requestScope.strs},${strList} |
|
D. |
${strList}, ${requestScope.strs} |
27. |
假設當前為2013年4月15日,則如下JSP代碼輸出結果為( A )。(選擇一項) <%@page import="java.util.Date"%> <%@ page import ="java.text.SimpleDateFormat"%> <% SimpleDateFormat formater=new SimpleDateFormat("yyyy年MM月dd日"); String strTime = formater.format(new Date()); %> <%=strTime%> |
|
|
|
|
|
A. |
2013年04月15日 |
|
B. |
2013年05月15日 |
|
C. |
13年4月15日 |
|
D. |
編譯錯誤 |
28. |
以下JSP關鍵代碼的功能為輸出"姓名:陳小斌",橫線處應填寫( AC ).(選擇二項) <% Map stus = new HashMap(); stus.put("stu1","王曉"); stus.put("stu2","黃青"); stus.put("stu3","陳小斌"); request.setAttribute("stuList",stus); %> 姓名:____________ |
|
|
|
|
|
A. |
${stuList.stu3} |
|
B. |
${stuList[stu3]} |
|
C. |
${stuList["stu3"]} |
|
D. |
${stuList."stu3"} |
29. |
如下JSP代碼輸出集合中各元素,橫線處應填寫( AC )。(選擇二項) <% List<String> strs= new ArrayList<String>(); strs.add("北京"); strs.add("上海"); strs.add("浙江"); request.setAttribute("strs",strs); %> <c:forEach var="strList" items="___________"> <c:out value="________"></c:out> </c:forEach> |
|
|
|
|
|
A. |
${strs},${strList} |
|
B. |
${strList},${strs} |
|
C. |
${requestScope.strs},${strList} |
|
D. |
${strList}, ${requestScope.strs} |
30. |
在部署帶有Servlet的Java Web程序時,( D )不是必需的。(選擇一項) |
|
|
|
|
|
A. |
web.xml文件 |
|
B. |
WEB-INF文件夾 |
|
C. |
classes文件夾 |
|
D. |
csses文件夾 |
31. |
在JSP中,以下哪個方法可以正確獲取復選框的值( C )(選擇一項) |
|
|
|
|
|
A. |
request.getParameterValue() |
|
B. |
response.setParameterValues() |
|
C. |
request.getParameterValues() |
|
D. |
request.getParameter() |
32. |
JSP中的有很多內置對象可以方便程序開發,其中不包括( C )(選擇一項) |
|
|
|
|
|
A. |
Out |
|
B. |
Request |
|
C. |
Redirect |
|
D. |
Response |
33. |
在一個jsp頁面中包含了這樣一種頁面元素,<% int i = 10; %>這是( B )(選擇一項) |
|
|
|
|
|
A. |
表達式 |
|
B. |
小腳本 |
|
C. |
JSP指令 |
|
D. |
注釋 |
34. |
在JSP中,以下( C )技術最適合實現購物車的存儲(選擇一項) |
|
|
|
|
|
A. |
Page |
|
B. |
Request |
|
C. |
Session |
|
D. |
Application |
35. |
在使用表單提交數據時,如果<form>標簽的method屬性未指定的時候,則以下說法中正確的是( B )(選擇一項) |
|
|
|
|
|
A. |
默認為POST請求 |
|
B. |
默認為GET請求 |
|
C. |
默認為Fast請求 |
|
D. |
編譯錯誤 |
36. |
如果要把一個“accp”字符串信息放在session對象里,則下列正確的是( A )(選擇一項) |
|
|
|
|
|
A. |
session.setAttribute("message","accp"); |
|
B. |
session.setAttribute(message,"accp"); |
|
C. |
session.setAttribute("accp","message"); |
|
D. |
session.setAttributes("message","accp"); |
37. |
在JSP中,假設表單的method="post",在發送請求時中文亂碼處理的正確做法是( A )(選擇一項) |
|
|
|
|
|
A. |
request.setCharacterEncoding("utf-8"); |
|
B. |
response.setCharacter("utf-8"); |
|
C. |
request.setContentType("text/html;charset=utf-8"); |
|
D. |
response.setContentType("text/html;charset=utf-8"); |
38. |
在JSP中,對於數據的共享可通過不同的作用域對象實現,如果該數據僅限當前頁面有效,可選擇的作用域對象( A )。(選擇一項) |
|
|
|
|
|
A. |
PageContext |
|
B. |
Request |
|
C. |
Session |
|
D. |
Application |
39. |
jsp中,對ServletRequest接口提供的setAttribute()方法共享數據,對此,以下說法正確的是( A )(選擇一項) |
|
|
|
|
|
A. |
其原型是setAttribute(String key,Object value),第一個參數表示變量名稱,第二個參數表示要存入的數據 |
|
B. |
其原型是setAttribute(Object value,String key),第一個參數表示變量名稱,第二個參數表示要存入的數據 |
|
C. |
其原型是setAttribute(String key,String value),第一個參數表示變量名稱,第二個參數表示要存入的數據 |
|
D. |
其原型是setAttribute(String value,List value),第一個參數表示變量名稱,第二個參數表示要存入的數據 |
40. |
在JSP中,pageContext、request、session、application均提供了存取數據的通用方法,假設已經在session中存入了名為"currentUser"的User對象,則取出該數據的正確語句是( BC )(選擇二項) |
|
|
|
|
|
A. |
User user = session.getAttribute("currentUser"); |
|
B. |
User user = (User)session.getAttribute("currentUser"); |
|
C. |
Object user = session.getAttribute("currentUser"); |
|
D. |
String user = (String)session.getAttribute("currentUser"); |
三、 判斷題
- JSP引擎執行字節碼文件的主要人物之一是直接將HTML內容發給客戶端。(T)
- JSP頁面中的變量和方法聲明(Declaration)、表達式(Expression)和Java程序片(Scriptlet)統稱為JSP標記。(T)
- JSP頁面中的指令標記、JSP動作標記統稱為腳本元素。(F)
- 在“<%!”和“%>”標記之間聲明的Java的變量在整個頁面內有效,不同的客戶之間不共享。(F)
- 在“<%!”和“%>”標記之間聲明的Java的方法在整個頁面內有效。(T)
- 頁面成員方法不可以在頁面的Java程序片中調用。(F)
- 程序片變量的有效范圍與其聲明位置有關,即從聲明位置向后有效,可以在聲明位置后的程序片、表達式中使用。(T)
- 程序片變量不同於在“<%!”和“%>”之間聲明的頁面成員變量,不能在不同客戶訪問頁面的線程之間共享。(T)
- JSP中Java表達式的值由服務器負責計算,並將計算值按字符串發送給客戶端顯示。(T)
- 在Java程序片中可以使用Java語言的注釋方法,其注釋的內容會發送到客戶端。(F)
- 不可以用一個page指令指定多個屬性的取值。(F)
- jsp:include動作標記與include指令標記包含文件的處理時間和方式不同。(T)
- jsp:param動作標記不能單獨使用,必須作為jsp:include、jsp:forward標記等的子標記使用,並為它們提供參數。(T)
- <jsp:forward...>標記的page屬性值是相對的URL地址,只能靜態的URL。(F)
- JSP頁面只能在客戶端執行。(F)
- JSP頁面中不能包含腳本元素。(F)
- Page指令不能定義當前JSP程序的全局屬性。(F)
- 在JSP中,<%!intc=5;out.print(c);%>此式正確.。(F)
- <jsp:getProperty>中的name及property區分大小寫。(T)
- JSP主要的指令有page,import,include等三個(F)
- 當同時有多個請求發送到一個Servlet時,服務器將會為每個請求創建一個新的線程來處理客戶端的請求。(T)
- HTML稱為超文本元素語言,它是HypertextMarkedLanguage的縮寫。(T)
- 一個HTML文檔必須有<head>和<title>元素。(F)
- 超級鏈接不僅可以將文本作為鏈接對象,也可以將圖像作為鏈接對象。(T)
- 表單域一定要放在<form>元素中。(T)
- 盒子模型中的top、right、bottom、left屬性取值即可以是像素數,也可是百分比,並且只有父容器的position取值為非static值時才有效。(T)
- 用戶在瀏覽器中輸入http://127.0.0.1:8080/ch2/ch2_1.html即可訪問本機上的該頁面。(T)
- 在網頁中圖形文件與網頁文件是分別存儲的。(T)
- 絕度路徑是文件名的完整路徑;相對路徑是指相對當前網頁文件名的路徑。(T)
- 超級鏈接<a>標記的target屬性取值為鏈接的目標窗名,可以是parent、blank、self、top。(F)
- Tomcat服務器支持直接使用application對象。(F)
- out對象是一個輸出流,它實現了javax.servlet.JspWriter接口,用來向客戶端輸出數據。(T)
- 利用response對象的sendRedirect方法只能實現本網站內的頁面跳轉,但不能傳遞參數。(F)
- JSP的Response對象作用是向客戶端發送數據,但是一次會話過程,一個Response對象只能包含一個Coolie和一個HTTP文件頭。否則拋出內存越界異常。(F)
- 在MVC模式中,因為Servlet負責創建JavaBean,所以JavaBean的構造函數可以帶有參數,除了保留get和set規則外,還可以有其他功能的函數。(T)
- JSP是Servlet的升級版本,JSP出來后,Servlet也就退出了歷史的舞台。(F)
- JSP輸出表達式,正確的語法規則是<%=表達式%>。(T)
- JavaBean的屬性可讀寫,編寫時set方法和get方法必須配對。(F)
- JavaBean也是Java類,因此也必須有主函數。(F)
- 和過濾器相關的接口主要有:Filter、FilterConfig和FilterChain。(T)
四、 簡答題
- 相比servlet,jsp的優勢在哪里?
- 畫圖說明訪問a.jsp的整個流程。
- <% %>是java代碼塊的語法。如果在jsp文件中寫多個代碼塊,它們都是位於_jspService方法里嗎?
- 看代碼解決問題:
<%
a) int c = 10;
%>
<%
b) int d = c+10; //這個代碼塊能引用上個代碼塊的變量嗎?說出理由。
%>
五、 編碼題
1、編寫程序實現登錄功能
要求:
1)頁面使用jsp表單提交,包含姓名和密碼
2)提交目的地為Servlet,在Servlet中獲得表單提交的數據
3)在Servlet中判斷,如果姓名是“張三”,密碼是“123”,返回客戶登錄成功
4)寫出核心代碼即可
JSP:
1 <form action="login" method="post">
2 <table>
3 <tr>
4 <td>姓名</td>
5 <td>
6 <input type="text" name="uname">
7 </td>
8 </tr>
9 <tr>
10 <td>密碼</td>
11 <td>
12 <input type="text" name="pwd">
13 </td>
14 </tr>
15 <tr>
16 <td colspan="2" align="center">
17 <input type="submit" value="登錄">
18 </td>
19 </tr>
20 </table>
21 </form>
Servlet:
1 public class LoginServlet extends HttpServlet 2 { 3 protected void doGet(HttpServletRequest req, HttpServletResponse resp) 4 throws ServletException, IOException 5 { 6 doPost(req, resp); 7 } 8 protected void doPost(HttpServletRequest req, HttpServletResponse resp) 9 throws ServletException, IOException 10 { 11 req.setCharacterEncoding("utf-8"); 12 String name = req.getParameter("uname"); 13 String pwd = req.getParameter("pwd"); 14 System.out.println(name + "=" + pwd); 15 resp.setContentType("text/html;charset=utf-8"); 16 if (name.equals("張三") && pwd.equals("123")) 17 { 18 resp.getWriter().println("登錄成功"); 19 } else
20 { 21 resp.getWriter().println("登錄失敗"); 22 } 23 } 24 }
web.xml配置
1 <servlet>
2 <servlet-name>login</servlet-name>
3 <servlet-class 4 >com.guangsoft.LoginServlet</servlet-class 5 >
6 </servlet>
7 <servlet-mapping>
8 <servlet-name>login</servlet-name>
9 <url-pattern>/login</url-pattern>
10 </servlet-mapping>