Java EE 複習題集

一、填空題

(1)第一章 概述

大多數應用,從PC機上的簡單報表程序到大型機上的複雜計算,都由三部分組成:大多數應用,從PC機上的簡單報表程序到大型機上的複雜計算,都由三部分組成:表現層,業務邏輯層,數據訪問層。
Java EE爲滿足開發多層體系結構的企業級應用的需求,提出“組件-容器 ”的編程思想。Java EE應用的基本軟件單元是 JavaEE 組件 。 基本軟件單元的運行環境被稱爲 容器 。
兩層體系結構應用程序分爲應用層 和 服務器層。
所謂的企業級應用程序,並不是特指爲企業開發的應用軟件,而是泛指那些爲 大型組織部門 創建的應用程序。
在三層分佈式企業應用程序中,包括 應用層 、 應用服務器層 、 數據服務器層 三層。
Java EE客戶端組件既可以是一個 Web瀏覽器 、一個 Applet ,也可以是一個 應用程序 。
Java EE web組件包括 servlet 和 JSP 。
Java EE有兩種類型的EJB組件: 會話Bean 和 消息驅動Bean 。
Java EE 6提供的組件主要包括三類: 客戶端組件 、 Web組件 、 業務組件 。
(2)第三章 servlet

Servlet組件在進行重定向時,需要使用 ServletResponse 接口的方法是 sendRedirect() 。
httpServletRequest提供了兩個方法用於從請求中解析出上傳的文件: Part getPart(String name) 和 Collection getParts() 。
一個Servlet的配置參數保存在 ServletConfig 對象中,這個配置對象(能/不能) 不能 被其他Servlet訪問。
MIME的全稱是 Multimedia Internet Mail Extension(多媒體網絡郵件擴展) , ServletResponse中響應正文的默認MIME類型爲 text/plain , 而HttpServetResponse中的響應正文的默認MIME類型爲 text/html 。
PDF文件的MIME類型是 application/pdf , Microsoft Word文檔的類型是 application/msword 。在Servlet中設置MIME類型應使用 HttpServletResponse 對象的方法 setContentType() 。
所有的Servlet都必須實現下面的兩個接口之一: HttpServlet 和 GenericServlet 。
HTTP協議是一種 無狀態 協議,服務器不記錄關於客戶的任何信息。
在Web程序設計中,客戶端以表單方式向服務器提交數據是最常見的方法。表單數據的提交方法有兩種: Get 和 Post 。
常見會話跟蹤技術有 Cookie 、 URL重寫 和 隱藏表表單域 。
(3)第四章 JSP

JSP顯式註釋的語法形式: <!-註釋-!> ;JSP隱式註釋的語法形式: <%–註釋–%> 。
JSP內置對象的作用範圍有四種 page , request , session , application 。
JSP的include動作組件的語法形式: <jsp:include page=“文件名” flush=“true”/> 。
JSP的forward動作組件的語法形式: <jsp:forward page=“網頁名稱”/> 。
JSP的param動作組件的語法形式: <jsp:param name=“名稱” , value=“值”/> 。
JSP頁面中聲明變量的基本格式是: <%!變量聲明%> 。
JSP頁面除了普通HTML代碼之外,還主要有如下三種成分: 腳本元素 、 指令 、 動作 。
表達式語言EL提供兩種不同的存取器: 點運算符“ . ” 和 方括號" [ ] " 。
JSP的默認字符編碼是 ISO-8859-1 。
(4) 第五章 JavaBean

在JSP頁面中,與Java Bean有關的標記有三個: jsp:useBeanjsp:setPropertyjsp:getProperty
JavaBean的生命週期範圍有四種是: page 、 request 、 session 、 application 。
Java Bean在標記 jsp:userBean 中利用 Scope 屬性聲明Java Bean的生命週期範圍
jsp:getProperty用法的一般形式: <jsp:getPropertity name=“beanId” propertity=“propertityName”> 。
jsp:setProperty用法的一般形式: <jsp:setPropertity name=“beanId” propertity=“propertityName” value=“propertityValue”> 。
當JavaBean的某個屬性爲null時,使用表達式語言獲得的信息是空字符串還是null對象?答案是 空字符串 。
JSP能夠利用表達式語言訪問JavaBean的屬性,(也能/不能) 不能 利用表達式語言設置JavaBean的屬性。
(5)第六章 JSF

JSF是一個基於 MVC 架構的框架,其中模型角色由 Managed Bean 承擔,實現具體的業務邏輯,視圖角色由 XHTML頁面 承擔,實現信息展示和與用戶的交互,控制角色由 JSF框架 承擔,實現具體的控制邏輯。
Managed Bean與普通JavaBean的區別,Manged Bean在類的聲明前增加了一個註解 @Managed 。
在JSF應用中,當接收到客戶端的JSF請求後,是由JSF框架中的 核心控制組件 FaceServlet 對請求進行統一處理。
JSF 2.0將image, css, javascript等資源統一放到web應用根目錄下的 resource 中。
JSF 2.0提供了定義和訪問資源的標準機制,列舉兩個訪問資源的JSF標記: <h:outputScript> 、 <h:outputStylesheet> 。
JSF提供了兩種類型的導航組件: 按鈕 和 鏈接 。
在JSF框架下,視圖都是以 xhtml 的形式存在,它們採用 Facelets 作爲視圖定義語言。
JSF框架的導航組件中,鏈接標記有三種: <h:commandLink> 、 <h:link> 、 <h:outputLink> 。
JSF在轉換和驗證時都有可能會產生錯誤信息,這些錯誤信息可以通過標記<h:message>顯示出來,而這些預定義的錯誤信息有時是沒有本地化的,爲了對這些消息進行本地化設置,可以修改屬性 converterMassage 、 validatorMassage 、 requireMassage ,讓這些屬性指向本地化資源即可。
CDI的全稱是 上下文注入依賴(Contexts And Dependency Injection) ,CDI Bean是Java EE 6規範的一項重大功能特性之一,提供了一種更加強大的託管Bean模型。與Managed Bean不同的是,這種託管Bean是由 Java EE應用服務器 來管理和控制的。
JSF中立即事件類型通過設置組件的 immediate 屬性來設置,它會將提前進行 事件處理操作 而無須等到調用應用階段。
JSF的核心標記庫有四種: core或f: 、 html或h: 、 facelets或ui: 、 composite components 或 composite: 。
JSF框架中的每個視圖都有一個唯一的String類型的標識,稱爲 View ID 。(或視圖ID)。
JSF的視圖組件都是 _html文件,可以通過 表達式語句 直接引用Managed Bean的屬性和方法。
(6)第七章 JDBC

利用JDBC訪問數據庫過程中,主要涉及三種資源: 數據庫連接對象Connection , SQL語句對象 , 訪問結果集對象 。
給定具體的JDBC URL,獲取數據庫連接的方法是調用DriverManager對象的 getConnection 方法來獲取一個代表數據庫連接的 java.sql.connection 對象。
ResultSet具有三個獲取流的方法: getBinaryStream 、 getAsciiStream 、 getUnicodeStream .
JDBC支持三種類型的Statement對象: Statement , PreparedStatement , CallableStatement 。
JDBC URL的格式是: jdbc:子協議:數據庫定位器 。
(7)第八章 JPA

JPA操作的基本單元稱爲 Entity(實體) , 它其實是一個普通的 Java 對象,通常對應數據庫中的一個表。
在聲明覆合主鍵時,需要的兩個註解是: @Embeddable 、 @EmbeadedId 。
JPA提供了註解 @GeneratedValue 來自動生成主鍵。
註解@GeneratedValue支持四種主鍵生成策略: Table 、 Sequence 、 Identity 、 Auto 。
在JPA中,註解@Transient表示的含義是: 其標註的屬性不需要持久化 。
在JPA中,如果使用了java.util.Date類型,則必須額外標註 @Temporal 註解說明轉化成java.sql包中的哪種類型。
在JPA中,持久化上下文有兩種類型,它們是 事物範圍持久化上下文 , 擴展範圍持久化上下文 。
在JPA中,新增一個實體,調用EntityManage的方法是 persist() , 查詢時調用的方法是find(),該方法的兩個參數是 Entity類型 , Entity的ID 。
命名參數的格式是“ :+ 參數名”, 位置參數的格式是“ ?+位置編號 ”。
在JPQL中,爲了支持使用數據庫本地支持的SQL語句,提供了一種稱爲本地查詢的方式,該查詢方式也分爲 動態查詢 和 名稱查詢 兩種類型。
ORM全稱是 Object Relation Mapping 。
Entity中的char[], Character或String類型的屬性通常映射爲 CLOB(Character Large Objects) 類型的字段,而Entity中的byte[], Byte[]或實現了serializable接口的對象通常映射爲 BLOB(Binary Large Objects) 類型的字段。
JPA支持兩種類型的加載方式: 主動加載 和 被動加載 。
(8)第九章 EJB

EJB組件分爲兩種類型: 會話Bean , 消息驅動Bean 。
在EJB3.1規範中, EJB組件的實現可以僅僅是一個POJO,其全稱是 Plain Old Java Object ,簡單的原始Java對象 。它不繼承任何類型,也不需要任何實現接口。
會話Bean分爲三種類型: 有狀態的會話 , 無狀態的會話 , 單例會話 。
單例Bean可以採用兩種併發管理方式,一種是 由容器託管 ,另一種是 由Bean自身實現 。
EJB組件通過以下四種機制與容器交互: 回調方法 , , , 上下文和依賴注入 。
二、簡答題

(1)第一章 概述

三層體系結構的優點有哪些?
答:①安全性高。②易維護。③快速響應。④系統擴展靈活。

兩層體系結構的缺點有哪些?
答:①安全性低。②部署困難。③耗費系統資源。

簡述Java EE的“組件-容器”編程思想。
答:①Java EE應用的基本軟件單元是Java EE組件。所有的Java EE組件都運行在特定的運行環境之中。組件的運行環境被稱爲容器。

②容器爲組件提供必需的底層基礎功能,容器提供的底層基礎功能被稱爲服務。組件通過調用容器提供的標準服務來與外界交互。

Java EE體系結構的優點?
答:①獨立於硬件配置和操作系統。

②堅持面向對象的設計原則。

③靈活性、可移植性和互操作性。

④輕鬆的企業信息集成。

請解釋“慣例優於配置,僅異常才配置”的含義。
答:對於Java EE組件的一些屬性和行爲,容器按照一些約定俗成的慣例進行配置,此時開發人員連註解都可以省略。只有當組件的屬性和行爲不同於慣例時,才需要進行配置。

(2)第三章 Servlet

Servlet的基本工作流程?
答: ①客戶端將請求發送到服務器。

②服務器上的web容器實例化(裝入)Servlet,併爲Servlet進程創建線程。

③Web容器將請求信息發送到Servlet。

④Servlet創建一個響應,並將其返回到Web容器。

⑤Web容器將響應返回客戶端。

⑥服務器關閉或Servlet空閒時間超過一定限度時,調用destroy()方法退出。

在創建Web應用程序時,通過Servlet上下文(ServletContext)可以實現哪些功能?
答:①訪問Web應用程序資源;

②在Servlet上下文屬性中保存web應用程序信息;

③獲取應用初始化參數信息;

④提供日誌支持。

HttpServletResponse的sendRedirect方法與RequestDispatcher的forward方法有什麼區別?
①RequestDispatcher.forward()是容器中控制權的轉向,在客戶端瀏覽器的地址欄中不會顯示出轉向後的地址;而HttpServletResponse.sendRedirect()方法則是完全的跳轉,瀏覽器將會得到跳轉的地址,並重新發送請求連接。

②RequestDispatcher.forward()仍舊是在同一次請求處理過程中。HttpServletResponse.sendRedirect()方法則是結束第一次請求,由瀏覽器發起一次新的請求。因此,前者更高效。

③RequestDispatcher.forward()只能轉向到web應用內部的資源;而HttpServletResponse.sendRedirect()可以轉到其他服務器上的某個資源。

(3)第四章 JSP

列舉JSP的5個內置對象,並做簡要說明。
答:①request:代表來自客戶端的請求,封裝了用戶提交的信息;

②response:代表服務器對客戶端的響應;

③out:代表向客戶端發送數據的對象;

④session:支持web應用程序開發過程中的會話管理;

⑤application:代表運行在服務器上的應用程序;

⑥config:能獲取當前JSP頁面(當前文件)的初始化參數和一些方法;

⑦pageContext:代表當前頁面運行的一些屬性;

⑧page:代表了正在運行的由JSP文件產生的類對象;

⑨exception:處理JSP文件在執行時所有發生的錯誤和異常。

jsp:forward與response.sendRedirect()實現重定位有何不同?
答:①response.sendRedirect()是向瀏覽器發送一個特殊的Header,由瀏覽器來做轉向,在瀏覽器地址欄可以看到地址變化。

jsp:forward則不同,它是直接在服務器端執行重定位,瀏覽器並不知道,瀏覽器地址並不變化。

列舉JSP內置對象的作用範圍。
答:①page;②request;③session;④application。

(4)第五章 JavaBean

什麼樣的Java類是一個JavaBean?
答:①對於數據類型”protype”的每個可讀屬性property,Bean必須有一個get方法:public protype getProperty(){} 。

②對於數據類型”protype”的每個可寫屬性property,Bean必須有一個set方法:public void setProperty(protype x){} 。

③定義一個不帶任何參數的構造方法。

JSP如何與JavaBean結合?二者如何傳遞消息?
答:①JSP可以使用三個標記jsp:useBeanjsp:setPropertyjsp:getProperty與JavaBean進行結合,還可以使用表達式語言訪問JavaBean的屬性。

②JSP可以使用腳本、標記、表達式語句訪問JavaBean的屬性,還可以通過腳本、標記、request對象的參數設置JavaBean的屬性。

(5)第六章 JSF

什麼是JSF?它有哪些優點?
答:JSF(Java Server Faces)是一種用於構建Java EE Web應用表現層的框架標準,提供了一種以組件爲中心的事件驅動的用戶界面構建方法。

優點在於:

①JSF是Java EE規範推薦的表現層框架標準

②JSF吸收了流行框架的標準

③便於與其他Java EE技術集成

描述Managed Bean的生命週期。
答:①Application: @ApplicationScoped, 整個應用。

②Session: @SessionScoped, 整個對話。

③View:@ViewScoped,整個視圖。

④Request:@RequestScoped, 整個請求。

⑤None: 臨時。

寫出 JSF常規流程的6個階段。
答:①恢復視圖;②應用請求值;③處理校驗;④更新模型值;⑤調用應用;⑥顯示響應。

簡要說明JSF標記庫?
答: ①core:前綴f:;②html: 前綴h:;③facelets: 前綴ui:; ④Composite Components: 前綴Composite:。

JSF與JSP支持表達式語言的區別是什麼?
答:①使用的分隔符不同。②作用方向不同。③JSF與JSP的隱式對象不同。

列舉JSF框架中Bean驗證框架的5個內置註解。
答:①Min:所註解的元素必須爲數字,其值要大於或等於給定的最小值

②Max:所註解的元素必須爲數字,其值要小於於或等於給定的最大值

③Size:被註解的元素必須位於給定的最小值和最大值之間。

④NotNull:被註解的元素不能爲null

⑤Null:被註解的元素必須爲null

⑥Future:所註解的元素必須是未來的日期

⑦Last:所註解的元素必須是過去的日期

⑧Pattern:被註解的元素(String)必須匹配給定的Java正則表達式

(6)第七章 JDBC

簡述JDBC工作原理。
答:①JDBC爲多種關係數據庫提供了統一訪問方式。

②真正的數據庫訪問操作實現是由各自數據庫廠商提供的。通常,把廠商提供的特定於數據庫訪問的API稱爲數據庫JDBC驅動程序。

③JDBC通過提供一個抽象的數據庫接口,使得程序開發人員在編程時可以不用綁定在特定數據庫廠商的API上,大大增加了應用程序的可移植性。

什麼是數據源?什麼是連接池?二者之間的關係?
答:①數據源存儲了所有建立數據庫連接的信息。

②連接池是JDBC爲第三方應用服務器提供的一個由數據庫廠家實現的管理標準接口,緩存一定數量的數據庫鏈接資源對象。

③所有連接池和數據源的實現信息都存儲在 JNDI 中。連接池一定以數據源的形式提供服務。但是數據源並不依賴連接池。數據源保存的實例可以直接通過JDBC來訪問數據庫。
簡述ResultSet的光標5個屬性。
答:①TYPE_FORWARD_ONLY:包含只進光標的結果集。

②TYPE_SCROLL_INSENSITIVE:結果集包含的光標可前後滾動,其他用戶對數據庫的修改將不會影響此結果集。

③TYPE_SCROLL_SENSITIVE:與上面一個的區別在於,其他用戶對數據庫的修改將會影響此結果集。

④CONCUR_READ_ONLY:結果集中包含的數據是隻讀數據。

⑤CONCUR_UPDATABLE:結果集中的數據可更新到數據庫中。

(7)第八章 JPA

描述命名查詢與動態查詢的區別?
答:①創建一個動態查詢,使用方法EntityManager的createQuery(), 它有一個字符串參數,表示一個JPQL查詢。而命名查詢是靜態查詢,由嵌入到@NamedQuery 註解或等價XML描述中的元數據表示。

②與動態查詢相比,命名查詢執行效率更高。因爲持久化提供器在應用程序啓動時將JPQL字符串翻譯爲SQL,而不是在運行時進行轉換。

簡述Entity的4個狀態。
答:(1)New:已經創建了Entity的實例,但尚未與持久化上下文進行關聯。

(2)Managed:Entity與持久化上下文進行關聯,且實現與數據庫中的信息映射。

(3)Detached:Entity實現數據庫中的信息映射,但不再與持久化上下文關聯。

(4)Removed:Entity對應的數據庫中的數據已被刪除。

畫出Entity的生命週期變化圖。
在這裏插入圖片描述
簡述JPA主鍵自動生成的四種策略?
答:①Table策略;②Sequence策略;③Identity策略;④Auto策略。

(8)第九章 EJB

簡述EJB與容器交互的四種機制?
答:①回調方法;②EJBContext;③JNDI (Java命名和目錄接口);④上下文和依賴注入。

畫出有狀態會話Bean的生命週期示意圖。
在這裏插入圖片描述

畫出無狀態會話Bean的生命週期示意圖。
在這裏插入圖片描述
原文地址鏈接:https://blog.csdn.net/gnosed/article/details/86004895

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章