一、選擇題
1、對于JSP的通用規(guī)則,描述正確的是:( )
- JSP標記不區(qū)分大小寫。
- 指令和腳本元素的語法不是基于XML的,但有替代的基于XML的語法。
- 在標記中出現(xiàn)的屬性值可以不用引號括起來,比如:<%@ page language=”Java” %>和<%@ page language=java %>是等同的。
- 在標記中使用字符/(正斜杠)作為轉(zhuǎn)義字符。
- 如果URL不是以”/”開始的,就被解釋為相對于當前的JSP路徑。
2、在web.xml有如下代碼段:( )
<context-param>
<param-name>webmaster</param-name>
<param-value>myaddress@mycompany.com</param-value>
</context-param>
在Servlet中如何把webmaster的值:myaddress@mycompany.com取出來?
- 使用ServletContext的getInitParameter(“webmaster”)方法
- 使用GenericServlet的getInitParameter(“webmaster”)方法
- 使用RequestDispatcher的getInitParameter(“webmaster”)方法
- 使用ServletConfig的getInitParameter(“webmaster”)方法
3、在web.xml有如下代碼段:( )
<servlet>
<servlet-name>teacher</servlet-name>
<servlet-class>teacherCart</servlet-class>
</servlet>
在Servlet中如何把servlet名:teacher取出來?
- 使用Servlet的getServletName方法。
- 使用ServletRequest的getServletName方法。
- 使用ServletContext的getServletName方法。
- 使用ServletConfig的getServletName方法。
4、標記處理器必須對從JSP引擎發(fā)來的調(diào)用做出反應。其中有兩個重要的方法,當打開或者關閉標記就會調(diào)用它們,它們分別是:( )
- dostart()方法和doend()方法。
- doStart()方法和doEnd()方法。
- doStartTag()方法和doEndTag()方法。
- dostartTag()方法和doendTag()方法。
5、對于應用開發(fā)和部署的過程,J2EE規(guī)范定義了一個步驟,請按先后次序選擇正確的步驟:( )
- JSP和Servlet的開發(fā)、EJB的開發(fā)、打包、運行服務器
- HTML等靜態(tài)資源的開發(fā)、Servlet的開發(fā)、會話Bean的開發(fā)、實體Bean的開發(fā)
- 應用組件的開發(fā)、把應用組件合成模塊、把模塊合成應用、應用部署
- 組件開發(fā)、合成應用、合成模塊、部署
6、在J2EE中,關于JSP文件中的page指令在JSP文件中出現(xiàn)的位置和次數(shù),正確的是( )。
- page指令可以在JSP中的任何地方,以任何順序出現(xiàn)
- 一個JSP文件可以有任意多個page指令
- 一個JSP文件只能有一個page指令
- 在整個JSP文件中,雖然可以有多個page指令,但是任何屬性/值對只能出現(xiàn)一次
7、在J2EE 中,下面JSP指令的描述,正確的是( )
- 指令以“<”開始,以“>”結束
- 指令以“<%”開始,以“%>”結束
- 指令以“<%@”開始,以“%>”結束
- 指令以“<jsp:”開始,以“/>”結束
8、 在J2EE中,<%=”1+4”%>將輸出( )。
- 1+4
- 5
- 14
- 不會輸出,因為表達式是錯誤的
9、在J2EE中,下列關于JSP的scriptlet的陳述正確的是( )。
- scriptlet是包含的<%和%>之間的
- 整個JSP可以有多個<%和%>對
- scriptlet不但包含Java代碼,還可以包含html代碼
- scriptlet可以包含import語句
10、有J2EE中,以下的page指令設置了使用的腳本語言是Java,且導入了java.rmi.*和java.util.*包,正確的是( )。
- %@page Language=”Java”,import=”java.rmi.*;java.uitl.*”%
- <%@page language=”Java” Import=”java.rmi.*,java.util.*”%>
- %@page language=”Java”;import=”java.rmi.*,java.util.*”%
- %@page language=”Java” import=”java.rmi.*,java.util.*”%
11、以下哪些不屬于struts2標簽分類()。
- 控制標簽
- 表單UI標簽
- 非表單UI標簽
- 格式化標簽
12、 按照MVC設計模式,Servlet用于實現(xiàn)( )
- Controller
- View
- Model
- 容器
13、某JavaWeb應用的上下文路徑是root,配置文件web.xml中有如下片段,則以下說法正確的是( )。
<servlet>
<servlet-name>process</servlet-name>
<servlet-class>slt.ProcessServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>process</servlet-name>
<url-pattern>/proc</url-pattern>
</servlet-mapping>
- 在包slt中,有一個名為ProcessServlet.class的文件
- 該Servlet的訪問路徑是http://機器IP:端口號/root/proc
- 該Servlet的訪問路徑是http://機器IP:端口號/root/ProcessServlet
- 該Servlet的訪問路徑是http://機器IP:端口號/root/process
14、有關filter說法正確的是( )
- filter只能附加到一個Servlet或JSP頁面上
- filter是Struts2框架的核心
- filter是可插入的一種Web組件,允許開發(fā)人員實現(xiàn)Web應用程序中的預處理和后期處理邏輯
- filter可以支持的功能包括日志記錄、提高性能、安全處理、會話處理、XSLT轉(zhuǎn)換
- filter是一個Java程序,它在與之相關的Servlet或JSP頁面之前運行,起到檢查這些資源被輸入的請求信息,以做預先處理的一些功能
15、下面關于Hibernate的說法,錯誤的是()
A. Hibernate是一個“對象-關系映射”的實現(xiàn)
B. Hibernate是一種數(shù)據(jù)持久化技術
C. Hibernate是JDBC的替代技術
D. 使用Hibernate可以簡化持久化層的編碼
16、有關Servlet過濾器說法正確的是( )。
A. 過濾器是一個Java程序,它在與之相關的Servlet或JSP頁面之前運行,起到檢查這些資源被輸入的請求信息,以做預先處理的一些功能
B. 過濾器只能附加到一個Servlet或JSP頁面上
C. Servlet過濾器是可插入的一種Web組件,允許開發(fā)人員實現(xiàn)Web應用程序中的預處理和后期處理邏輯
D. 過濾器可以支持的功能包括日志記錄、提高性能、安全處理、會話處理、XSLT轉(zhuǎn)換
17、在J2EE實現(xiàn)企業(yè)級應用開發(fā)中,( )是描述標記庫的XML文檔
A. DTD文件
B. EAR文件
C. WAR文件
D. TLD文件
18、在J2EE MVC架構模式體系結構中,( )是實現(xiàn)控制器的首選方案
- JavaBean
- Servlet
- JSP
- XML
19、在三層結構中,數(shù)據(jù)訪問層承擔的責任是( )
A. 定義實體類
B. 數(shù)據(jù)的增刪改查操作
C. 業(yè)務邏輯的描述
D. 頁面展示和控制轉(zhuǎn)發(fā)
20、下面關于數(shù)據(jù)持久化概念的描述,錯誤的是( )
A. 數(shù)據(jù)可以由持久狀態(tài)轉(zhuǎn)換為瞬時狀態(tài)
B. 將數(shù)據(jù)轉(zhuǎn)換為持久狀態(tài)的機制稱為數(shù)據(jù)持久化
C. 保存在內(nèi)存中數(shù)據(jù)的狀態(tài)是瞬時狀態(tài)
D. 持久狀態(tài)的數(shù)據(jù)在關機后數(shù)據(jù)依然存在
21、在使用了Hibernate的系統(tǒng)中,要想在刪除某個客戶數(shù)據(jù)的同時刪除該客戶對應的所有訂單數(shù)據(jù),下面方法可行的是( )
A. 配置客戶和訂單關聯(lián)的cascade屬性為save-update
B. 配置客戶和訂單關聯(lián)的cascade屬性為all
C. 設置多對一關聯(lián)的inverse屬性為true
D. 設置多對一關聯(lián)的inverse屬性為false
22、下面創(chuàng)建Criteria對象的語句中正確的是( )
A. Criteria c = query.createCriteria();
B. Criteria c = query.addCriteria();
C. Criteria c = session.createCriteria();
D. Criteria c = session.createCriteria(User.class);
23、使用Session的( )會把對象的狀態(tài)從數(shù)據(jù)庫中移除
A. delete()
B. remove()
C. clear()
D. removeAll()
24、關于依賴注入,下列哪說法是正確的( )。
A. 依賴注入是面向?qū)ο蠹夹g的替代品
B. 依賴注入即是“面向?qū)ο蟆钡木幊?/p>
C. 依賴注入的目標是在代碼之外管理程序組件間的依賴關系
D. 依賴注入的使用會增大程序的規(guī)模
25、Hibernate配置文件中,不包含下面的( )。
A. “對象-關系映射”信息
B. 實體間關聯(lián)的配置
C. show_sql等參數(shù)的配置
D. 數(shù)據(jù)庫連接信息
E. 主鍵信息配置
26、下面的程序執(zhí)行后沒有報錯,但數(shù)據(jù)總保存不到數(shù)據(jù)庫,最可能的原因是( )。
public static void main(String[] args){
SessionFactory sf=new Configration().configure().buildSessionFactory();
Session session=sf.openSession();
Medal medal=new Medal();
medal.setOwner(“totong”);
medal.setType(“Gold medal”);
session.save(user);
session.close();
}
A. 配置文件配置有誤
B. 沒有在配置文件中包含對映射文件的聲明
C. 沒有對持久化操作捕捉異常
D. 沒有開啟事務
27、對于以下程序,Customer對象在第幾行變?yōu)槌志没癄顟B(tài)( )。
Customer customer=new Customer();
customer.setName(“Tom”);
Session session1=sessionFactory.openSession();
Transaction tx1 = session1.beginTransaction(); //line1
session1.save(customer); //line2
tx1.commit(); //line3
session1.close(); //line4
A. line1
B. line2
C. line3
D. line4
28、在Spring的配置文件中,包含如下所示的配置代碼,則下面說法正確的是( )。
<bean id= “testBean” class= “test.TestBean”>
<property name= “dp” value= “10”/>
<property name= “sp” value= “mm”/>
</bean>
A. 可以通過下列代碼獲取對象實例:
ApplicationContext context=new ClassPathXmlApplicationContext(“di.xml”);
TestBean t = (TestBean)context.getBean(“test. TestBean”);
B. TestBean中一定有如下語句:private String dp = “”;
C. TestBean中一定有方法:public void setSp(String value)
D. 屬性dp的類型可能是int也可能是String
E. TestBean中一定有方法:public void getSp(String value)
29、以下關于SessionFactory的說法哪些正確( )。
A. 對于每個數(shù)據(jù)庫事務,應該創(chuàng)建一個SessionFactory對象
B. 一個SessionFactory對象對應一個數(shù)據(jù)庫存儲源
C. SessionFactory的load()方法用于加載持久化對象
D. SessionFactory是重量級的對象,不應該隨意創(chuàng)建,如果系統(tǒng)中只有一個數(shù)據(jù)庫存儲源,只需要創(chuàng)建一個
E. SessionFactory的get()方法用于加載持久化對象
30、下面一對多關聯(lián)的配置中,存在哪些錯誤( )。
<set name=”orders” inverse=”false” cascade=”true”>
<one-to-many class=”com.x.entity.Order” column=”customer_id” />
</set>
A. cascade屬性不可設置為true
B. inverse屬性不可以設置為false
C.應為type=”com.x.entity.Order”
D. set節(jié)點應改為list節(jié)點
E. column屬性不可在<one-to-many>節(jié)點內(nèi)設置
二、判斷題
1) MVC的表示層由servlet/jsp/javabean共同組成( )
2) Web服務器就是j2ee服務器( )
3) Web.xml文件中配置servlet時,serlvet-name的名稱必須和指定的servlet類文件的名稱相同( )
4) MVC中的控制器負責接收事件,確定合適的處理程序,并對業(yè)務邏輯進行處理,然后觸發(fā)合適的響應給用戶。( )
5) 持久化的定義是把對象轉(zhuǎn)換稱字符串的形式通過網(wǎng)絡傳輸,在另一端接收到這個字符串后能把對象還原出來。( )
6) 在web.xml中配置session失效時間。單位為:分鐘( )
7) 構建Struts 2應用的最基礎的幾個類庫是struts2-core、commons-logging、webwork-core、freamarker以及ognl。( )
8) 通過forward()請求轉(zhuǎn)發(fā)的時候,請求和響應對象也將一起被轉(zhuǎn)發(fā)到目的頁面( )
9) sendRedirect()方法也是請求轉(zhuǎn)發(fā)的一種方式( )
10) 標志庫描述符文件的后綴名是xml( )
11) TLD文件的擴展名是 .tld( )
12) Hibernate是JDBC的替代技術。( )
13) 依賴注入的目標是在代碼之外管理程序組建間的依賴關系,依賴注入是面向?qū)ο蠹夹g的替代品。( )
14) Struts2中的控制器類是一個普通的Servlet。( )
15) AOP采取攔截方法調(diào)用方式實現(xiàn),可以在調(diào)用方法前,后,拋出異常時攔截。( )
16) 對于每個數(shù)據(jù)庫事務,應該創(chuàng)建一個SessionFactory對象。( )
三、填空題
1) Jsp指令包括( page ),include,( taglib )
2) Spring是一個開源框架,是為了解決企業(yè)應用開發(fā)的復雜性而創(chuàng)建的,Spring使用基本的( javabean )來完成以前只可能由EJB完成的事情。
3) JSP的內(nèi)置對象包括( request ),( session ),( out ),application,pageContext,config,exception,( response )。
4) Cookie已經(jīng)得到很廣泛的應用,它被作為(客戶端 )保存信息的一種技術。
5) 對于Http Servlet,service()被分解成doGet(),doPost(),(doDelete() )等方法
6) Struts2可以使用JSTL,但也支持一個更強大和靈活的表達式語言是( OGNL ).
7) Struts2以FilterDispacher為核心控制器,它的初始化方法為( init() )。
8) Servlet中的會話是通過( HttpServletRequest )類的getSession() 來創(chuàng)建的
9) 基于Hibernate映射實體類中表示主鍵的屬性的標注是( @Id );映射實體類中普通屬性的標注是( @Column );實體屬性對應的列用標注@Entity。
10) Spring可以將簡單的組件配置、組合成為復雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個( xml )文件里
四、簡答題:
1、什么是web容器
給處于其中的應用程序組件(JSP,SERVLET)提供一個環(huán)境,使JSP,SERVLET直接更容器中的環(huán)境變量接**互,不必關注其它系統(tǒng)問題。主要有WEB服務器來實現(xiàn)。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴格遵守J2EE規(guī)范中的WEB APPLICATION 標準。我們把遵守以上標準的WEB服務器就叫做J2EE中的WEB容器。
2、BS與CS的含義。
C/S是Client/Server的縮寫。服務器通常采用高性能的PC、工作站或小型機,并采用大型數(shù)據(jù)庫系統(tǒng),如Oracle、Sybase、Informix或 SQL Server??蛻舳诵枰惭b專用的客戶端軟件。
B/S是Brower/Server的縮寫,客戶機上只要安裝一個瀏覽器(Browser),如Netscape Navigator或Internet Explorer,服務器安裝Oracle、Sybase、Informix或 SQL Server等數(shù)據(jù)庫。在這種結構下,用戶界面完全通過WWW瀏覽器實現(xiàn),一部分事務邏輯在前端實現(xiàn),但是主要事務邏輯在服務器端實現(xiàn)。瀏覽器通過Web Server 同數(shù)據(jù)庫進行數(shù)據(jù)交互。
3、forward 和redirect的區(qū)別
前者僅是容器中控制權的轉(zhuǎn)向,在客戶端瀏覽器地址欄中不會顯示出轉(zhuǎn)向后的地址;后者則是完全的跳轉(zhuǎn),瀏覽器將會得到跳轉(zhuǎn)的地址,并重新發(fā)送請求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時,盡量使用forward()方法,并且,這樣也有助于隱藏實際的鏈接。在有些情況下,比如,需要跳轉(zhuǎn)到一個其它服務器上的資源,則必須使用sendRedirect()方法。
4、JSP和Servlet有哪些相同點和不同點,他們之間的聯(lián)系是什么?
JSP是Servlet技術的擴展,本質(zhì)上是Servlet的簡易方式,更強調(diào)應用的外表表達。JSP編譯后是servlet。Servlet和JSP最主要的不同點在于,Servlet的應用邏輯是在Java文件中,并且完全從表示層中的HTML里分離開來。而JSP的情況是Java和HTML可以組合成一個擴展名為.jsp的文件。JSP側(cè)重于視圖,Servlet主要用于控制邏輯。
5、頁面間對象傳遞的方法
request,session,application等
6、JSP四種范圍是什么?區(qū)別是什么?
Page:指單頁jsp page的范圍;
Request:的范圍只在一jsp頁發(fā)出請求到另一頁之間,隨后這個屬性失效;
Session:范圍是用戶和服務器連接的那段時間,用戶與服務器斷開屬性就失效;
Application:作用范圍最大,在服務器一開始執(zhí)行服務到服務器關閉為止??赡茉斐煞掌髫撦d過重。
7、jsp有哪些內(nèi)置對象?作用分別是什么?
JSP共有以下9種基本內(nèi)置組件:
Request: 用戶端請求,此請求會包含來自GET/POST請求的參數(shù)
Response: 網(wǎng)頁傳回用戶端的回應
pageContext: 網(wǎng)頁的屬性是在這里管理
session: 與請求有關的會話期
application: servlet 正在執(zhí)行的內(nèi)容
out: 用來傳送回應的輸出
config: servlet的構架部件
page: JSP網(wǎng)頁本身
exception: 針對錯誤網(wǎng)頁,未捕捉的例外
8、請簡述struts2 中chain、redirect、redirectaction的區(qū)別。
redirect:action處理完后重定向到一個視圖資源(如:jsp頁面),請求參數(shù)全部丟失,action處理結果也全部丟失。redirect-action:action處理完后重定向到一個action,請求參數(shù)全部丟失,action處理結果也全部丟失。chain:action處理完后轉(zhuǎn)發(fā)到一個action,請求參數(shù)全部丟失,action處理結果不會丟失。
9、Request對象的主要方法:
setAttribute(String name,Object):設置名字為name的request的參數(shù)值
getAttribute(String name):返回由name指定的屬性值
getCookies():返回客戶端的所有Cookie對象,結果是一個Cookie數(shù)組
getParameter(String name):獲得客戶端傳送給服務器端的有name指定的參數(shù)值
getParameterValues(String name):獲得有name指定的參數(shù)的所有值
getSession([Boolean create]):返回和請求相關Session
getServletPath():獲取客戶端所請求的腳本文件的路徑
removeAttribute(String name):刪除請求中的一個屬性
10、說一說Servlet的生命周期?
servlet有良好的生存期的定義,包括加載和實例化、初始化、處理請求以及服務結束。這個生存期由javax.servlet.Servlet接口的init(),service()和destroy()方法表達。 Servlet被服務器實例化后,容器運行其init方法,請求到達時運行其service方法,service方法自動派遣運行與請求對應的doXXX方法(doGet,doPost)等,當服務器決定將實例銷毀的時候調(diào)用其destroy()方法。
11、請說出Hibernate中持久化對象的生命周期以及各種狀態(tài)直接的區(qū)別,并描述相互之間是如何轉(zhuǎn)換的。
Hibernate中持久化對象的生命周期有臨時態(tài)(瞬態(tài))、持久態(tài)和游離態(tài)三種。當new一個新的對象時,該對象處于臨時態(tài);處于臨時態(tài)的對象未與session關聯(lián),數(shù)據(jù)未保存到數(shù)據(jù)庫中;當該對象被當作session的參數(shù)使用的時候,該對象處于持久態(tài);處于持久態(tài)的對象與session關聯(lián)起來,持久化后對象中的數(shù)據(jù)被保存到數(shù)據(jù)庫中;事務提交,session關閉后,對象處于游離態(tài)。處于游離態(tài)的對象脫離了session的管理。
12、Spring框架的優(yōu)點都有什么。
Spring是分層的架構,你可以選擇使用你需要的層而不用管不需要的部分;Spring是POJO編程,POJO編程使得可持續(xù)構建和可測試能力提高依賴注入和IoC使得JDBC操作簡單化;Spring是開源的免費的;Spring使得對象管理集中化合簡單化。
選擇題答案:1-5 E A D C C 6-10 B C A AB B 11-15 D A B BCDE C 16-20 ACD D B B A 21-25 B D A C A 26-30 D B D BD AE
判斷題答案:1-5 XXXVX 6-10XVXVX 11-16 VXXXVX