首頁>技術>

第一部分:Servlet/JSP快速入門

1. 請列舉至少6種javaEE技術,並簡述其作用。

解析:

javaEE是一系列的技術,主要包括13種。對於開發人員來說,瞭解幾種主要的技術是非常必要的,例如JDBC、JSP、Servlet、XML、JNDI、JMS、JTA等。

參考答案:

(1) JDBC(Java Database Connectivity):用來訪問資料庫的API。

(2) JavaServlet :是一種小型的Java程式,擴充套件了web伺服器的功能。

(3) JSP(Java Server Pages):JSP頁面由HTM程式碼和嵌入其中的Java程式碼組成,用來實現動態檢視。

(4) JNDI(Java Name and Directory Interface): JNDI API被用於訪問名字和目錄服務。

(5) EJB(Enterprise JavaBean):實現業務邏輯的元件,可以構成分散式系統。

(6) RMI(Remote Method Invoke):呼叫遠端物件方法。

(7) Java IDL/CORBA:將Java和CORBA整合在一起。

(8) XML(Extensible Markup Language):可以用它來定義其他標記語言的語言。

(9) JMS(Java Message Service):用於和訊息中介軟體相互通訊的API。

(10) JTA(Java Transaction Achitecture):一種標準的API,可以訪問各種事務管理器。

(11) JTS(Java Transaction Service):是CORBA OTS事務監控的基本實現。

(12) JavaMail:用於存取郵件服務的API。

(13) JAF(JavaBeans Activation Framework):JavaMail利用JAF來處理MIME編碼的郵件附件。

2. 在web.xml檔案中配置Servlet時,主要配置哪些資訊?

解析: 使用IDE開發Servlet時,配置資訊可以透過視覺化方式定義。然而對於web應用開發員來說,瞭解Servlet的配置非常必要,能夠在必要的時候手動進行修改。

參考答案: 配置Servlet時,主要配置<servlet>以及< servlet -mapping>,如下所示:

<servlet>

<servlet-name>IndexServlet</servlet-name>

<servlet-class>com.oracle.servlet.IndexServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>IndexServlet</servlet-name>

<url-pattern>/IndexServlet</url-pattern>

</servlet-mapping>

其中<servlet-class>是Servlet原始檔的名字,<servlet-name>是自定義的名字,往往使用類名。<url-pattern>是其中非常重要的資訊,用來配置訪問Servlet的邏輯路徑。必須以/開頭。

<servlet-class>com.oracle.FirstServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>FristServlet</servlet-name>

<url-pattern>/frist<url-pattern>

<servlet-mapping>

其中,<servlet-class>是Servlet原始檔的名字,<servlet-name>是自定義的名字,往往使用類名。<url-pattern>是非常重要的資訊,用來配置訪問Servlet的邏輯路徑,必須以/開頭。

3. 如果透過一個連結訪問Servlet,預設呼叫Servlet中的哪個方法提供服務?

解析 度與不同的HTTP請求方法Servlet中都定於了對應的doXXXX方法接受請求。一超級連結的方式提交請求,預設的GET方式,所以將呼叫Servlet中的doGet方法。程式設計師應該熟悉每種使用者請求對應的HTTP方式。

4. 如果一個表單<form>沒有顯示指定method屬性值,那麼預設使用什麼方法提交請求?

解析 表單提交時Web應用中常見的請求方式,一般情況下,建議使用POST方式提交請求,因為這種方式請求引數在請求體重傳遞,不會顯示在URL中。但是,如果在HTML的<form>標記中沒有使用method屬性指定提交方式,預設是GET方式。

參考答案 預設使用GET方式。

5. 請求介面中的哪個方法可以返回請求引數的值?哪個方法可以把請求引數的多個值同時返回?

解析 Web應用中複雜重要的的功能往往透過表單提交實現,使用者利用表單可以輸入很多資訊,這些資訊被稱為請求引數。在Web應用開發中,獲得請求引數幾乎是使用最多的功能,程式設計師應該熟練掌握獲得請求引數有關的所有方法。

參考答案 請求介面中的getParameter 方法可以返回某一個請求引數的值,getParaneterValues方法可以把摸個請求引數的多個值同時返回,封裝到一個數組中,例如復框的多個值。

6.響應介面中的哪個方法可以設定內容型別?用簡單程式碼演示。

解析 響應可以封裝伺服器端返回到客戶端的資料。而這些資料的格式和編碼都需要使用響應中的方法進行設定。如果設定錯誤,客戶端瀏覽器將無法顯示。

參考答案 響應中的soracleontentType方法可以設定內容型別,如下所示:

//設定響應的內容型別

Respose.soracleontentType(“text/htmllcharset=gb2312”);

上述程式碼中設定響應的內容型別是text或者html,編碼格式是gb2312.

7.簡述JSP的執行過程

解析 很多初級開發員對JSP的理解比較膚淺,不熟悉JSP的執行過程,JSP出錯時很難排錯,開發員必須熟悉JSP的執行過程,這樣才能編寫出優良的JSP並能順利除錯。

參考答案

(1) 容器將JSP翻譯成符合Servlet規範的類。

(2) 容器編譯JSP生成的類。

(3) 容器初始化JSP例項;

(4) 將請求和相應物件傳遞給JSP例項的服務方法,提供服務。

8.JSP中的<% %>和<% =%>有什麼區別?

解析 JSP從表面上看就是HTML程式碼中混合了Java程式碼,而為了區別Java程式碼和HTML程式碼,規範中定義了一些符號,即指令碼元素。初級開發員應該從熟悉這些指令碼元素開始,逐步熟悉JSP的開發。

參考答案 <% %>稱為指令碼片段,可以包含任何符合語法的Java程式碼,可以同時包含多行程式碼。而<% =%>稱為表示式,=號後面是一個表示式,這個表示式的值將被輸出到瀏覽器中,表示式後面不用使用分號結束,而且每個<% =%>只能包含一個表示式。

9.JDBC程式設計中主要有哪幾種語句物件?有什麼區別?

解析 JDBC主要用來操作資料庫,操作資料庫本質上是透過執行SQL語句完成。所以,JDBC程式設計中,能夠用來執行SQL語句的語句物件非常重要,每種語句物件都存在一些區別,開發員應該熟悉並掌握。

參考答案 JDBC中主要有以下3種語句物件:

(1) Statement:Statement是所有語句物件的父介面,定義了語句物件的規範。

(2) PreparedStatement:預編譯的語句物件,將待執行的語句進行了預編譯,可以在執行時動態指定SQL語句中的引數。

(3) CallableStatement:可以用來呼叫資料庫的儲存過程。

10、簡述使用JDBC操作資料庫的主要步驟。

解析 不論使用什麼資料庫軟體,JDBC操作資料庫的步驟都基本相同。開發員一定需要注意的是,JDBC的連線物件、語句物件、結果集等都是高開銷物件,使用完畢一定要在finally語句中進行關閉處理,否則將降低應用的效能。

參考答案

(1) 載入驅動類;

(2) 獲得連線物件;

(3) 獲得語句物件;

(4) 執行SQL語句,如果是查詢語句,需要處理結果集;

(5) 關閉結果集。語句物件。資料庫連線物件。

11.說明MVC模式的含義,並用圖表示web應用中MVC模式中每部分之間的關係

解析 對於web開發員來說,正確理解MVC模式非常關鍵。目前,大多數web應用都是基於MVC模式進行架構,也有很多MVC框架能夠幫助開發員快速搭建MVC應用。值得注意的是,使用JSP,Servlet,JavaBean可以構建MVC模式的應用,但是MVC是一種架構思想,並不僅侷限於JSP,Servlet,JavaBean這個範圍內,可以使用很多其他技術實現。

參考答案 MVC本來應用於桌面程式中,M是指資料模型 , V是指使用者介面 , C則是控制器,至今已被廣泛使用。使用MVC的目的是將M和V實現程式碼分離,從而使同一個程式可以使用不同的表現形式。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。MVC模式是近些年被JavaEE平臺廣泛使用的設計模式。Web應用中的MVC模式與桌面程式中的MVC模式有所不同。由於web應用大多基於請求響應模式,因此往往做不到“一旦M改變,V應該同步更新”。MVC每部分之間的關係如下

第二部分 詳解Servlet元件開發

1 . 請說明Servlet的宣告週期

解析 Servlet作為伺服器端的元件,需要在容器中才能執行,容器管理Servlet的生命週期。對於web開發員來說,瞭解Servlet的宣告週期才能更好地進行Servlet程式設計。

參考答案

階段一:初始化

客戶端第一次訪問Servlet,或者容器載入應用時(配置<load-on-startup>),容器呼叫Servlet類的構造方法,例項化一個Servlet物件,該物件存在於伺服器端記憶體中,容器將啟動多執行緒併發訪問該物件。例項化結束後,將對Servlet例項進行初始化,先呼叫init(Servloracleonfig)方法,在呼叫init()方法

階段二:提供服務

Servlet初始化成功後,容器呼叫Servlet介面中定義的service(ServletRequest req,ServletResponse res)方法。Service將請求和響應物件轉換成HttpServletRequest req,HttpServletResponse resp)方法。HttpServlet中的service方法,將請求根據請求方式轉發給對應的doXXX方法,如doGet、doPost

階段三 銷燬

Servlet提供服務結束,或者一段時間後,容器將銷燬Servlet例項。銷燬Servlet例項前,容器先呼叫Servlet介面中定義的destroy方法,允許完成一些自定義的操作。

2. 什麼是Servlet的初始化引數?如何配置?如何在程式中獲得?

解析 如果摸個Servlet需要一些引數,可以再web.xml中今夕配置,而不必要硬編碼到原始碼中,這樣可以方便地進行修改。值得注意的是,Servlet的初始化引數只能在當前的Servlet中使用,其他Servlet中無法使用。

參考答案 Servlet的初始化引數指的是初始化Servlet例項時的引數,可以再web.xml中盡享配置,如下所示:

<servlet>

<servlet-name>TestServlet</servlet-name>

<servlet-class>com.oracleTestServlet</servlet-class>

<init-param>

<param-name>level</param-name>

<param-value>2.1</param-value>

</init-param>

</servlet>

上述配置中,使用<init-param>為TestServlet配置了一個名字為level的初始化引數,值為2.1.可以使用多個<init-param>元素配置多個初始化引數。在TestServlet中,可以直接呼叫getInitParameter(“level”)方法返回該引數的值。

3. 請列出請求介面中至少三個獲得請求頭的方法。

解析 當用戶向伺服器端請求時,HTTP請求頭的資訊也隨之被髮送到伺服器。請求介面中定義了獲得請求頭的方法,實際應用中常常需要獲得某些請求頭的值,根據請求頭的值判斷客戶端的情況進行程式設計。開飯員應該熟悉各種請求頭的含義,以及獲得請求頭的方法。

參考答案 getHeader方法可以根據請求頭名字獲得請求頭值;getIntHeader方法用來返回整型請求頭的值;getDateHeader方法用來返回日期型別請求頭的值。

4.響應介面中addHeader方法和setHeader方法有什麼區別?

解析 響應封裝了伺服器端傳送給客戶端的資訊,響應介面中定義了操作響應頭的方法,有些方法容易混淆,開發員應該辨別清楚。

參考答案 addHeader方法用來向響應中新增一個頭,如果蓋頭的名字已經存在,name允許一個頭包含多個值:setHeader方法向響應中新增一個頭資訊,如果頭寸在,則覆蓋已有的值。

解析 Servlet作為MVC中的控制器,主要的作用就是接受客戶端請求,獲得請求資訊後呼叫業務邏輯,然後根據業務邏輯的處理結果跳轉到不同的檢視顯示給使用者。開發員必須掌握常用的兩種跳轉方法,即響應重定向和請求轉發。實際工作中常用的是請求轉發,很多MVC框架預設也是使用請求轉發.

參考答案

響應重定向response.sendRedirect(“index.jsp”);

6.請求介面中的提供了處理屬性的方法,請列舉每個方法並說明其作用。

解析 控制器呼叫業務邏輯後,往往需要把一些處理的結果返回到檢視上進行顯示。這種時候,屬性的概念就至關重要。請求屬性是最常用的一種屬性,是在請求範圍內有效的屬性。開發員一定要正確理解每種範圍的屬性並能夠正確使用。

參考答案 請求介面中有三個和屬性有關的方法,分別是:setAttribute(String,Object),可以將一個物件設定一個名字,儲存到請求中:getAttribute(String),可以根據屬性的名字返回屬性值:removeAttribute(String),可以根據屬性的名字刪除屬性。

7.cookie有什麼作用?如何使用Servlet 的API返回請求中的cookie?如何將cookie儲存到客戶端?

參考答案 cookie用來將一些資訊儲存到客戶端,已被使用者下次訪問同一應用時,能夠自動將這些資訊傳送到伺服器端。伺服器端透過使用cookie程式設計,能夠提高使用者體驗。請求介面中提供了goracleookie方法返回所有的cookie,響應介面提供了addCookie方法能夠將cookie物件返回到客戶端。

8.如何獲得會話物件?請用簡單程式碼展示。

解析 web應用中,常常需要使用會話物件。會話是指客戶端對伺服器端一次連續的訪問過程。開發人員應該熟悉會話相關的操作。

參考答案 可以透過請求物件獲得會話物件,如request.getSession()。如果當前存在會話,直接返回使用:如果不存在,則建立一個新的會話返回。還有一個過載的getSession方法,具有一個boolean型別的引數,其中request.getSession(true)和request.get

Session()完全相同,而request.getSession(false)意思是如果存在會話物件就返回使用,如果不存在則返回null。

9.有哪幾種方式可以設定會話有效時間?

解析 會話物件都被儲存在容器中,如果很長時間不使用,就應該被銷燬,以保證記憶體的有效使用。容器總是會為會話設定預設的有效時間,大多數是30分鐘,也可以自己定義會話的有效時間。

參考答案 有兩種方法可以設定會話的有效時間,一種是在web.xml中配置,如下所示:

<session-config>

<session-timeout>40</session-timeout>

</session-config>

使用這種方式設定的有效時間,是對當前應用中所有會話都有效,單位是分鐘。

還有一種方式是使用HttpSession中的setMaxInterval(int)方法,這個方法能夠設定最大不活動時間,超過這個時間會話沒有被訪問,即被容器銷燬。這個方法只能夠控制呼叫該方法的會話物件,不會對所有會話物件生效。

10. 什麼是URL重寫?能解決什麼問題?

解析 大多數容器實現會話,都是基於cookie機制實現的。然而,cookie可能被使用者人為地設定失效,這種情況下,會話頁將無效。為了能夠在cookie失效時依然使會話有效,可以使用URL重寫策略。如果使用某些MVC框架程式設計,如Struts,這些問題都已經在框架層面得到了解決。

參考答案 URL重寫就是使用響應介面中的encodeURL(path)方法,把指定的path重新編碼,將名字是JSESSIONID的cookie的值強制加到path對應的URL中,傳遞到伺服器端,這樣就能夠保證即使cookie被阻止,伺服器端永遠能得到會話物件的ID值,使得會話有效。

11. 會話介面中提供了處理會話屬性的方法,請列舉每個方法並說明其作用。

解析 如果某些物件需要在會話範圍內有效,那麼就可以考慮使用會話範圍的屬性。儲存在會話範圍內的屬性,在當前會話中一直有效。然而,由於會話的生命中期較長,所以屬性也將隨著會話一直存在於記憶體中。只有當必須使用會話屬性時再考慮使用,能用請求屬性解決的場合就使用請求屬性,開發員必須能夠正確選擇不同範圍屬性進行使用。

參考答案 會話介面中有三個和屬性有關的方法,分別是:setAttribute(String,Object),可以將一個物件設定一個名字,儲存在會話中;getAttritute(String),可以根據屬性的名字返回屬性值;removeAttribute(String),可以根據屬性的名字刪除屬性。

12. 什麼是上下文物件?如何獲得上下文物件?

解析 上下文是一個全域性的概念,每個應用都有一個唯一的上下文物件。上下文介面中定義了一系列的方法,開發員應該熟悉這個介面的常用方法。

參考答案 當容器啟動時,會載入容器中的每一個應用,並且針對每一個應用建立一個物件,稱為上下文物件。每個應用都只有一個唯一的上下文物件,Servlet API 中提供了Servloracleontext 介面來表示上下文物件。要在Servlet中獲得上下文物件非常簡單,直接使用getServloracleontext()方法就可以返回當前的上下文物件,在JSP中可以直接使用application內建物件使用上下文。

13. 如何配置上下文引數?在程式中如何獲得上下文引數?

解析 如果在應用中的很多地方,都需要使用某一個引數,那麼就可以配置一個上下文引數。上下文引數與Servlet初始化引數不同的是,上下文引數能夠在應用所有資源裡使用,而Servlet初始化引數在當前Servlet中使用。

參考答案 在web.xml中可以使用<context-param>配置上下文引數,如下所示:

<context-param>

<param-name>path</param-name>

<param-value>/WEB-INF/props</param-value>

</context-param>

要獲得上下文引數,可以使用Servloracleontext介面中的getInitParameter方法返回。

14、上下文介面中提供了處理屬性的方法,請列舉每個方法並說明其作用?

解析:除了請求屬性、會話屬性外,還可以使用上下文屬性。如果某個物件在上下文範圍內使用,就可以考慮使用上下文屬性儲存。上下文的生命週期很長,應用載入時初始化,直到應用重新載入才被銷燬,所以只有必須使用上下文屬性時方可使用,否則應該儘量使用請求屬性。

參考答案:上下文介面中有三個和屬性有關的方法,分別是setAttribute(String ,Object),可以將一個物件設定一個名字,儲存到上下文範圍中:getAttribute(String),可以根據屬性的名字返回屬性值:removeAttribute(String),可以根據屬性的名字刪除屬性。

15、說明請求屬性、會話屬性、上下文屬性的區別?

解析:屬性在Web應用開發中佔有舉足輕重的地位,是用來在元件之間傳遞物件的主要方式。主要有三個物件可以儲存屬性,即請求、會話、上下文。由於請求生命週期最短,所以應該儘量使用請求屬性,而只有在必須用會話屬性或者必須用上下文屬性時菜考慮使用這兩種屬性。

參考答案:請求屬性是請求範圍內的屬性,除了請求轉發外,只在當前的請求中有效:會話屬性是會話範圍內的屬性,只要會話沒有失效,就一直隨著當前的會話所在:上下文屬性是上下文範圍的屬性,只要容器沒有重新載入應用,就一直隨著上下文物件存在。應該儘量使用請求屬性實現功能,只有在必須用會話屬性或者必須用上下文屬性時才考慮使用這兩種屬性。

16、請說明ServloracleontextEvent什麼場景下被觸發,以及如何處理?

解析:事件處理在很多時候非常有效,開發人員應該熟悉Servlet中得常用時間類別,並熟悉每種事件觸發的條件。

參考答案:當上下文物件被初始化或者被銷燬時,將觸發ServloracleontextEvent,要處理該事件,可以自定義事件處理類實現ServloracleontextListener介面;然後覆蓋該介面中的方法,實現處理邏輯。

17、請說明HttpSessionEvent什麼場景下會被觸發,以及如何處理?

解析:會話事件在很多場合可以使用,開發人員應該熟悉會話事件的觸發條件以及處理方法等。

參考答案:當會話物件有變化的時候,將觸發HttpSessionEvent事件發生,例如會話被建立、會話被銷燬、會話被活化、要處理該事件,有兩個介面可以監聽,分別是HttpSessionListener和HttpSessionActivationListener。其中前者監聽會話建立和銷燬的情況,後者監聽會話活化和鈍化的情況。

18、如何在web.xml中配置監聽器,使監聽器生效?

解析 監聽器必須在web.xml中配置才能生效。

參考答案 在web.xml中,可以使用<listenner>配置監聽器,如下所示:

<listener>

<listener-class>com.oracle.listener.CounterListener</listener-class>

</listener>

19、簡述監聽器的開發配置步驟。

解析 每種監聽器的開發和配置步驟都非常相似,開發員應該做到熟練掌握。

參考答案

(1)根據需求分析需要使用哪種監聽器。

(2)建立類實現監聽器介面,並實現介面中必要的方法,實現監聽功能。

(3)在web.xml中使用<listener>配置監聽器。

20、過濾器有什麼作用 ?

解析 過濾器是web應用中非常重要的概念,甚至在Strust2框架中也作為核心控制器使用。

參考答案 在web應用中,往往需要一些通用的處理和控制,如果把這些通用的處理編寫在每一個需要的資原始檔中,程式碼就很冗餘,且不好管理。只要需要修改,就得修改所有檔案中的相關程式碼,造成維護困難。過濾器就是用來執行這些通用處理的程式,往往可以用來實現影象轉換、資料壓縮、登入驗證、許可權控制等。

21、Filter介面中定義了哪幾個方法?分別有什麼作用?

解析 Filter介面是所有過濾器都必須實現的介面,瞭解這個介面中的方法對開發員勝任過濾器開發非常重要。

參考答案 Filter介面中有以下三個方法:

(1)init(FilterConfig filterConfig):該方法是對filter物件進行初始化的方法,僅在容器初始化filter物件結束後被呼叫一次。

(2)doFilter(ServletRequest request,ServletResponse response,FilterChain chain):該方法是filter進行過濾操作的方法,是最重要的方法。過濾器實現類必須實現該方法。方法體中可以對request和response進行預處理。其中FilterChain可以將處理後的request和response物件傳遞到過濾鏈上的下一個資源。

(3)destroy():該方法在容器銷燬過濾器物件前被呼叫。

22、簡述過濾器的開發配置步驟

解析 開發員應該熟練掌握過濾器的開發配置步驟。

參考答案

(1)建立類實現Filter介面。

(2)實現Filter介面中的方法,重點實現doFilter方法對請求和響應進行過濾。

(3)在web.xml中配置過濾器,使用<filter>配置過濾器的類和名字,使用<filter-mapping>配置過濾器需要過濾的資源路徑。

23. 過濾器的配置中,<dispatcher>元素是什麼含義?有幾個可選值?

參考答案: <dispatcher>可以配置能夠被過濾的URL的請求方式,有以下四個值可以使用;

(1) 請求方式,是一種預設的方式。即不配置disoatcher選項時,預設過濾REQUEST方式請求的URL,包括在位址列輸入URL,表單提交,超級連結,響應重定向,但是如果指定了其他dispatcher值,REQUEST也必須顯式指定才能生效。

(3) INCLUDE:包含方式,表示可以過濾動態包含的URL。

(4) ERROR:錯誤方式,表示可以過濾錯誤頁面

第三部分 詳解JSP元件開發

1.列舉至少5個JSPN內建物件,並說明其型別

解析 內建物件是JSP中非常重要的概念,是真正的Servlet API中的物件,不過是容器翻譯JSP時進行宣告建立的,所以在JSP中不需要宣告建立就可以直接使用。Web開發員起碼需要能夠熟練使用JSP中常用的內建物件。

參考答案

(1) request:HttpServletRequest

(2) response:HttpServletResponse

(3) session:HttpSession

(4) application:Servloracleontext

(5) pageCountext: pageCountext

(6) out:JspWriter

2.說明<%@include%>和<jsp:include/>的區別

解析 JSP中的指令和標準動作中都有一個名字為include的元素,都是包含的意思,二者具體含義卻不同,分別是靜態和動態包含,開發員應該熟悉二者區別,避免混淆。

參考答案 <%@include%>是指令,是靜態包含,在翻譯期將把被包含的資源翻譯到包含資源中,原始碼合二為一。而<jsp:include/>是動作,是動態包含,在執行期動態訪問被包含的資源,將生成的響應合二為一進行顯示。

3.列舉page指令中至少三種常用屬性,並說明其含義。

解析 page指令是JSP中最常用的指令之一,開發員應該熟悉page指令的常用屬性

參考答案

(1)import:用來匯入需要使用的類。

(2)pageEncoding:指定JSP頁面的編碼。

(3)errorPage:指定錯誤頁面。

4、<jsp:forward>的含義是什麼?

5、列舉與JavaBean相關的三個標準動作,並說明其含義。

解析:JavaBean可以實現MVC中的Model部分,然而它並不是一個真正的元件,而是有程式設計規範的Java類。為了能夠便捷使用

JavaBean,JSP規範定義了一系列標準動作。

參考答案:與JavaBean相關的有以下三個標準動作。

(1)<jsp:useBean>:用來獲得或者建立JavaBean例項。

(2)<jsp:setProperty>:用來為JavaBean的屬性賦值。

(3)<jsp:getProperty>:用來顯示JavaBean的屬性值。

6、什麼是EL?EL的主要作用是什麼?

解析:隨著JavaEE技術的發展,人們越來越希望JSP中的動態部分能夠更加簡練。可以使用<%=%>表示式在JSP中動態輸出內容,

然而總是過於繁瑣,因此出現了EL,可以很大程度簡化JSP中的表示式。然而,在實際使用中,EL總是和JSTL配合使用才能發

揮更大作用

參考答案:EL是Expression Language 的簡稱,即表示式語言,主要用來替代表達式<%=%>,使得JSP更為簡單。EL常常結合JSTL

一起使用,發揮更強大的作用。

7、列舉EL中4個與屬性相關的內建物件,並說明其含義。

解析:EL中定義了一系列的內建物件,其中與屬性有關的內建物件特別常用,開發員應該熟練掌握。

參考答案:

(1)pageScope:可以獲得PageContext範圍的屬性

(2)requestScope:獲得請求範圍的屬性

(3)sessionScope:獲得會話範圍的屬性

(4)applicationScope:獲得上下文範圍的屬性

8、如果web.xml中定義了一個名字為rate的上下文引數,在JSP中如何使用EL進行輸出?

解析 EL中定義了11個內建物件,分別能夠輸出不同的資訊,其中initParam能夠用來輸出上下文引數

參考答案: ${initParam.rate}

9、EL中的內建物件pageContext,與其他內建物件有什麼不同?

解析 EL的11個內建物件中,pageContext是一個非常特殊的內建物件。其他內建物件都只能輸出特定的資訊,例如requestScope只能輸出請求範圍的屬性,並不是一個真正的請求物件。而pageContext是一個真正的PageContext型別物件,可以返回任意屬性。

參考答案 pageContext內建物件非常特殊,它是一個真正的PageContext型別的物件,只要PageContext中存在getXXX方法,就可以使用${pageContext.XXX}將getXXX方法的返回值進行輸出。而其他的內建物件都沒有這個特點,只能輸出特定的資訊。

10、EL中的.與[]有什麼區別?

解析 EL中的.和[]有類似的功能,特別容易混淆,開發員應該熟練掌握。

參考答案 EL中,使用.和[]都可以用來獲得資料,然而某些情況下只能使用[],而不能使用圓點,有以下三種情況只能使用[]:

(1) 透過陣列或集合的索引返回值,只能使用[];

(2) 屬性值中包括-或者.等非字母或數字的字元,只能使用[];

(3) 屬性值不是常量,而是變數時,只能使用[]。

11、JSP中的自定義標記有什麼作用?

解析 自定義標記是JSP1.2版本開始支援的功能,可以將JSP檔案中需要使用的Java功能定義成標記,在JSP檔案中多次呼叫。自定義標記能夠使得JSP檔案結構簡練,可讀性強,可維護性也增強。

參考答案 使用自定義標記,能夠使得JSP檔案結構簡練,減少冗餘程式碼,能夠在多個地方使用自定義標記,達到重複使用的目的,同時也使得動態功能更容易管理、維護。

12、簡述開發自定義標記的主要步驟。

解析 開發自定義標記有基本的步驟,開發員應該做到熟悉。

參考答案

(1) 根據需求設計需求開發的標記。

(2) 在tld檔案中描述標記的基本資訊,包括標記名稱、標記的屬性、標記體的特徵以及標記的處理器類等。

(3) 根據tld描述的資訊開發標記處理器類,實現標記的功能。

13、如何使用自定義標記?

解析 即使有的應用中不需要自行開發標記庫,然而開發員至少需要能夠熟練掌握自定義標記的使用方法。

參考答案

(1)將自定義標記相關的tld檔案引入到工程中,可以存放到WEB-INF目錄下。

(2)將自定義標記相關的jar檔案引入到工程中,可以存放到WEB-INF\lib目錄下。

(3)在JSP檔案中,使用taglib指令指定標記庫的uri,並指定使用該標記庫的字首。

(4)在JSP中需要使用標記的地方,利用字首引用標記,傳遞屬性即可使用。

14.簡述tld檔案的主要作用。

解析 tld 檔案在標記庫中有著舉足輕重的作用,開發人員至少要了解tld檔案中的主要資訊。

參考答案 tld檔案是標記庫描述檔案,主要描述了標記庫的資訊。主要包括標記名稱、標記體的情況、標記中的屬性、標記對應的處理器類。另外還會指定一個唯一的uri值,在jsp中使用標記庫的時就透過這個uri進行引用。

15.JSTL是什麼?有什麼作用?

解析 目前標記庫有很多,除了JSTL外,還有很多第三方提供的標記庫,然而作用和使用步驟大同小異。開發員應該首先掌握標記庫的含義以及使用,這樣對其他標記庫也能很快的熟練使用。

參考答案 JSTL是原sun公司定義的一套標準標籤庫,提供了一些在Web應用中常用的標籤,例如迭代陣列或集合的標籤。使用JSTL能夠使JSP程式碼更為簡練,減少JSP中的程式碼量。這些標籤能在多個場合重複使用,提高了開發效率。

16.如何使用JSTL

解析 使用JSTL和使用自定義的標記類似,也可以說,使用任何標記庫的步驟都類似,無非是每個標記的作用、名字以及屬性等不用而已。

參考答案

(1) 首先引入JSTL的tld檔案和相關的jar檔案。

(2) 在JSP中使用taglib指令指定要使用的tld的uri值,並自定義一個字首。

(3) 在需要使用標記的地方,使用字首引用標記,設定必要的屬性即可。

17.假設存在一個會話屬性list,list是泛型為Customer的集合物件,Customer中包含custname、age、address三個屬性。請使用JSTL中的迭代標記遍歷該list,將集合中的資料顯示到表格的行中。

解析 JSTL中有很多標記,開發員應該熟悉常用的標記的使用,例如迭代標記就是常用 標記之一。

參考答案

<c:forEach Item=”${sessionScope.list}” var=”cust”>

<tr>

<td>${cust.custname}</td>

<td>${cust.age}</td>

<td>${cust.address}</td>

<tr>

</c:forEach>

18.如何在web.xml中配置異常處理

解析 異常處理一直是應用開發中面對的一個問題。在Web應用中,也可以使用try/catch/finally處理異常,同時,還可以在web.xml中進行配置,對某種異常進行統一處理

參考答案 在web.xml中配置異常處理的方式如下:

<error-page>

<exception-type>com.oracle.exception.RegisterException</exception-type>

<location>/register.jsp</location>

</error-page>

上述配置後,當發生了RegisterException卻沒有被捕獲時,跳轉到register頁面進行處理。

第四部分 高階主題

1.Log4j有什麼作用?

解析:Log4j目前使用最多的日誌處理元件,程式設計師應該掌握Log4j

的使用。

參考答案:Log4j是Apache的一個開源專案,使用Log4j可以便捷地控制( )目的地,包括控制檯,檔案,GUI元件以及NT事件記錄器等。同時,Log4j可以控制( )日誌資訊的輸出格式,也能夠透過定義每一條日誌資訊的級別,更加細緻控制日誌的( )程。

2.Log4j主要由哪三部分組成?每部分的主要作用是什麼?

解析:掌握Log4j的使用,可以從瞭解Log4j的主要元件入手。

參考答案:Log4j包含三個主要組成部分,即Logger、Appender以及Layout。其中( )是日誌記錄器,是Log4j的核心元件;一個Logger可以指定多個Appender,Appender( )定日誌資訊的輸出目的地,可以是檔案、控制檯或訊息檔案等;一個Appender又可以指定( )個Layout,Layout用來指定日誌資訊的格式,可以使HTML、簡單文字等。

3.列舉至少3種Log4j的輸出目的地,並說明其含義。

解析:能夠將誒之輸出到不同目的地,是Log4j的一大特徵。

參考答案

(1)org.apache. log4j.ConsoleAppender:將日誌資訊輸出到控制檯,如果Logger沒有使( )addAppender顯式新增Appender,預設使用ConsoleAppender。

(2)org.apache. log4j.FileAppender:將日誌資訊輸出到一個檔案。

(3)org.apache. log4j.DailyRollingFileAppender:將日誌資訊輸出到一個日誌檔案,並且( )據指定的模式,可以按照一定的日期將日誌資訊輸出到一個新的日誌檔案。

4.使用properties檔案配置Log4j屬性,要求日誌級別為debug,目的地為檔案( )式為HTML。

解析:使用Log4j進行日誌管理,往往都在屬性檔案中配置相關的屬性,開發員必須( )Log4j屬性的配置,才能夠順利的使用Log4j。

參考答案:

log4j.rootLogger=debug.appender1

log4j.appender.appender1=org.apache.log4j.FileAppender

log4j.appender.appender1.Threshold=debug

log4j.appender.appender1.ImmediateFlush=true

log4j.appender.appender1.File=log.html

log4j.appender.appender1.Append=true

log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout

log4j.appender.appender1.layout.LocationInfo=true

log4j.appender.appender1.layout.Title=Log Message

5.在web應用中使用Log4j記錄日誌,往往有哪些方法載入屬性檔案?

解析 web應用中使用Log4j,首先需要考慮的的問題是如何載入屬性檔案:

參考答案 web應用中載入Log4j的屬性檔案往往有以下兩種方式:

(1)定義一個Servlet,並使用<load-on-startup>在web.xml中配置這個servlet,使得應用

載入時就初始化這個Servlet,從而可以在這個Servlet的init方法中載入Log4j屬性檔案。只要載入了應用,就會初始化Servlet,就會呼叫init方法,從而就會載入屬性檔案。

(2)定義一個上下文事件監聽器,在監聽器的contextInitialized方法中載入Log4j屬性檔案。

這樣能夠保證只要載入了應用,就會觸發上下文時間,從而呼叫監聽器中的contextInitialized方法,載入Log4j屬性檔案。

6.Ajax是什麼含義?有什麼作用?

解析 ajax並不是一個新技術,而是一系列已有技術的一個新的使用方法。目前,人們越來越關注使用者體驗,web應用開發員也應該注重這方面的技術發展。

參考答案 ajax是“Asynchronous JavaScript and XML”的簡稱,即非同步的JavaScript和XML。Ajax就是能夠在web瀏覽器中實現與桌面應用類似客戶端技術。例如,使用ajax技術後,伺服器端不會每次都返回一個完整的頁面,而會只返回一部分文字,只重新整理頁面的一部分,不需要等待整個頁面重新整理;使用ajax可以非同步提交請求,不需要必須等待伺服器端響應後才進行其他操作。可以說,Ajax試圖在web應用中實現桌面應用的功能和互動性,

並能夠使用和桌面應用中類似的友好介面和漂亮空間。

7.Ajax中的XMLHttpRequest物件有哪些作用?

解析 XMLHttpRequest物件是Ajax技術的核心物件,使用Ajax技術都是從XMLHttpRequest物件開始。

參考答案 XMLHttpRequest物件是Ajax技術的核心物件,使用Ajax技術都是從XMLHttpRequest物件開始。在ajax

應用程式中,XMLHttpRequest物件負責將使用者資訊以非同步方式傳送到伺服器端,並接收伺服器相應的資訊和資料。

8.什麼是DOM?有什麼作用?

解析:DOM是獨立於指令碼和語言的概念,很多語言都對DOM進行了實現,DOM能夠對標記語言進行結構化的表示。

參考答案:DOM是Document Object Model的簡稱,即文件物件模型,是用於HTML和XML文件的API。DOM提供了文件的結構化表示,把網頁和指令碼或程式語言連線了起來,可以修改文件的內容和視覺表現。使用Ajax程式設計時,從伺服器返回的內容需要更新到客戶端頁面中,就可以使用DOM物件操作瀏覽器內容,進行區域性重新整理。

9.JSF框架的主要特點是什麼?

解析:JSF框架已經是JavaEE規範的一部分,是非常有發展前景的框架,開發人員可以關注。

參考答案:JSF是一種以元件為中心來開發JavaWeb應用的框架。JSF提供了一組使用者介面元件,這些元件是可重用的,開發員可以利用這些元件方便地構建Web應用的使用者介面;

JSF框架支援開發自定義的使用者介面元件,而且這些自定義使用者介面元件同樣可以重用。另外,使用JSF框架,可以方便地進行輸入檢驗、國際化程式設計等。

14
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 關於 Linux shell 有哪些你必須知道的?