61、servlet的生命周期
web容器載入servlet,生命周期開始.通過調用servlet的init()方法進行servlet的初始化.通過調用service()方法實現,根據請求的不同調用不同的do***()方法.結束服務,web容器調用servlet的destroy()方法.
62、如何現實servlet的單線程模式
<%@ page isThreadSafe="false"%>
63、頁面間對象傳遞的方法
request,session,application,cookie等
64、JSP和Servlet有哪些相同點和不同點,他們之間的聯繫是什麼?
JSP是Servlet技術的擴展,本質上是Servlet的簡易方式,更強調應用的外表表達.JSP編譯后是"類servlet".Servlet和JSP最主要的不同點在於,Servlet的應用邏輯是在Java文件中,並且完全從表示層中的HTML里分離開來.而JSP的情況是Java和HTML可以組合成一個擴展名為.jsp的文件.JSP側重於視圖,Servlet主要用於控制邏輯.
65、四種會話跟蹤技術
會話作用域ServletsJSP頁面描述
page否是代表與一個頁面相關的對象和屬性.一個頁面由一個編譯好的 Java servlet 類(可以帶有任何的 include 指令,但是沒有 include 動作)表示.這既包括 servlet 又包括被編譯成 servlet 的 JSP 頁面request是是代表與 Web 客戶機發出的一個請求相關的對象和屬性.一個請求可能跨越多個頁面,涉及多個 Web 組件(由於 forward 指令和 include 動作的關係)
session是是代表與用於某個 Web 客戶機的一個用戶體驗相關的對象和屬性.一個 Web 會話可以也經常會跨越多個客戶機請求application是是代表與整個 Web 應用程序相關的對象和屬性.這實質上是跨越整個 Web 應用程序,包括多個頁面、請求和會話的一個全局作用域
66、Request對象的主要方法:
setAttribute(String name,Object):設置名字為name的request的參數值
getAttribute(String name):返回由name指定的屬性值
getAttributeNames():返回request對象所有屬性的名字集合,結果是一個枚舉的實例getCookies():返回客戶端的所有Cookie對象,結果是一個Cookie數組
getCharacterEncoding():返回請求中的字元編碼方式
getContentLength():返回請求的Body的長度
getHeader(String name):獲得HTTP協議定義的文件頭信息
getHeaders(String name):返回指定名字的request Header的所有值,結果是一個枚舉的實例getHeaderNames():返回request Header的名字,結果是一個枚舉的實例getInputStream():返回請求的輸入流,用於獲得請求中的數據
getMethod():獲得客戶端向伺服器端傳送數據的方法
getParameter(String name):獲得客戶端傳送給伺服器端的有name指定的參數值
getParameterNames():獲得客戶端傳送給伺服器端的所有參數的名字,結果是一個枚舉的實例
getParameterValues(String name):獲得有name指定的參數的所有值
getProtocol():獲取客戶端向伺服器端傳送數據所依據的協議名稱
getQueryString():獲得查詢字元串
getRequestURI():獲取發出請求字元串的客戶端地址
getRemoteAddr():獲取客戶端的IP地址
getRemoteHost():獲取客戶端的名字
getSession([Boolean create]):返回和請求相關Session
getServerName():獲取伺服器的名字
getServletPath():獲取客戶端所請求的腳本文件的路徑
getServerPort():獲取伺服器的埠號
removeAttribute(String name):刪除請求中的一個屬性
67、J2EE是技術還是平台還是框架?
J2EE本身是一個標準,一個為企業分散式應用的開發提供的標準平台.
J2EE也是一個框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技術.
68、我們在web應用開發過程中經常遇到輸出某種編碼的字元,如iso8859-1等,如何輸出一個某種編碼的字元串?
Public String translate (String str) {
String tempStr = "";
try {
tempStr = new String(str.getBytes("ISO-8859-1"), "GBK"); tempStr = tempStr.trim();
}
catch (Exception e) {
System.err.println(e.getMessage());
}
return tempStr;
}
69、簡述邏輯操作(&,|,^)與條件操作(&&,||)的區別.
區別主要答兩點:a.條件操作只能操作布爾型的,而邏輯操作不僅可以操作布爾型,可以操作數值型b.邏輯操作不會產生短路
70、XML文檔定義有幾種形式?它們之間有何本質區別?解析XML文檔有哪幾種方式?
a: 兩種形式 dtd schema,b: 本質區別:schema本身是xml的,可以被XML解析器解析(這也是從DTD上發展schema的根本目的),c:有DOM,SAX,STAX等DOM:處理大型文件時其性能下降的非常厲害.這個問題是由DOM的樹結構所造成的,這種結構佔用的內存較多,DOM必須在解析文件之前把整個文檔裝入內存,適合對XML的隨機訪問SAX:不現於DOM,SAX是事件驅動型的XML解析方式.它順序讀取XML文件,不需要一次全部裝載整個文件.當遇到像文件開頭,文檔結束,或者標籤開頭與標籤結束時,它會觸發一個事件,用戶通過在其回調事件中寫入處理代碼來處理XML文件,適合對XML的順序訪問
STAX:Streaming API for XML (StAX)
71、簡述synchronized和java.util.concurrent.locks.Lock的異同 ?
主要相同點:Lock能完成synchronized所實現的所有功能
主要不同點:Lock有比synchronized更精確的線程語義和更好的性能.synchronized會自動釋放鎖,而Lock一定要求程序員手工釋放,並且必須在finally從句中釋放.
72、EJB的角色和三個對象
一個完整的基於EJB的分散式計算結構由六個角色組成,這六個角色可以由不同的開發商提供,每個角色所作的工作必須遵循Sun公司提供的EJB規範,以保證彼此之間的兼容性.這六個角色分別是EJB組件開發者(Enterprise Bean Provider) 、應用組合者(Application Assembler)、部署者(Deployer)、EJB 伺服器提供者(EJB Server Provider)、EJB 容器提供者(EJB Container Provider)、系統管理員(System Administrator)
三個對象是Remote(Local)介面、Home(LocalHome)介面,Bean類
73、EJB容器提供的服務
主要提供聲明周期管理、代碼產生、持續性管理、安全、事務管理、鎖和併發行管理等服務.
74、EJB規範規定EJB中禁止的操作有哪些?
1.不能操作線程和線程API(線程API指非線程對象的方法如notify,wait等),2.不能操作awt,3.不能實現伺服器功能,4.不能對靜態屬生存取,5.不能使用IO操作直接存取文件系統,6.不能載入本地庫.,7.不能將this作為變數和返回,8.不能循環調用.
75、remote介面和home介面主要作用
remote介面定義了業務方法,用於EJB客戶端調用業務方法.
home介面是EJB工廠用於創建和移除查找EJB實例
76、bean實例的生命周期
對於Stateless Session Bean、Entity Bean、Message Driven Bean一般存在緩衝池管理,而對於Entity Bean和Statefull Session Bean存在Cache管理,通常包含創建實例,設置上下文、創建EJB Object(create)、業務方法調用、remove等過程,對於存在緩衝池管理的Bean,在create之後實例並不從內存清除,而是採用緩衝池調度機制不斷重用實例,而對於存在Cache管理的Bean則通過激活和去激活機制保持Bean的狀態並限制內存中實例數量.
77、EJB的激活機制
以Stateful Session Bean 為例:其Cache大小決定了內存中可以同時存在的Bean實例的數量,根據MRU或NRU演算法,實例在激活和去激活狀態之間遷移,激活機制是當客戶端調用某個EJB實例業務方法時,如果對應EJB Object發現自己沒有綁定對應的Bean實例則從其去激活Bean存儲中(通過序列化機制存儲實例)回復(激活)此實例.狀態變遷前會調用對應的ejbActive和ejbPassivate方法.
78、EJB的幾種類型
會話(Session)Bean ,實體(Entity)Bean 消息驅動的(Message Driven)Bean
會話Bean又可分為有狀態(Stateful)和無狀態(Stateless)兩種
實體Bean可分為Bean管理的持續性(BMP)和容器管理的持續性(CMP)兩種
79、客服端調用EJB對象的幾個基本步驟
設置JNDI服務工廠以及JNDI服務地址系統屬性,查找Home介面,從Home介面調用Create方法創建Remote介面,通過Remote介面調用其業務方法.
80、如何給weblogic指定大小的內存?在啟動Weblogic的腳本中(位於所在Domian對應伺服器目錄下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以調整最小內存為32M,最大200M
JAVA基礎知識(5)
81、如何設定的weblogic的熱啟動模式(開發模式)與產品發布模式?可以在管理控制台中修改對應伺服器的啟動模式為開發或產品模式之一.或者修改服務的啟動文件或者commenv文件,增加set PRODUCTION_MODE=true.
82、如何啟動時不需輸入用戶名與密碼?修改服務啟動文件,增加 WLS_USER和WLS_PW項.也可以在boot.properties文件中增加加密過的用戶名和密碼.
83、在weblogic管理制台中對一個應用域(或者說是一個網站,Domain)進行jms及ejb或連接池等相關信息進行配置后,實際保存在什麼文件中?保存在此Domain的config.xml文件中,它是伺服器的核心配置文件.
84、說說weblogic中一個Domain的預設目錄結構?比如要將一個簡單的helloWorld.jsp放入何目錄下,然的在瀏覽器上就可打入http://主機:埠號//helloword.jsp就可以看到運行結果了? 又比如這其中用到了一個自己寫的javaBean該如何辦? Domain目錄伺服器目錄applications,將應用目錄放在此目錄下將可以作為應用訪問,如果是Web應用,應用目錄需要滿足Web應用目錄要求,jsp文件可以直接放在應用目錄中,Javabean需要放在應用目錄的WEB-INF目錄的classes目錄中,設置伺服器的預設應用將可以實現在瀏覽器上無需輸入應用名.
85、在weblogic中發布ejb需涉及到哪些配置文件
不同類型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP實體Bean一般還需要weblogic-cmp-rdbms-jar.xml
86、如何在weblogic中進行ssl配置與客戶端的認證配置或說說j2ee(標準)進行ssl的配置
預設安裝中使用DemoIdentity.jks和DemoTrust.jks KeyStore實現SSL,需要配置伺服器使用Enable SSL,配置其埠,在產品模式下需要從CA獲取私有密鑰和數字證書,創建identity和trust keystore,裝載獲得的密鑰和數字證書.可以配置此SSL連接是單向還是雙向的.
87、如何查看在weblogic中已經發布的EJB?可以使用管理控制台,在它的Deployment中可以查看所有已發布的EJB
88、CORBA是什麼?用途是什麼? CORBA 標準是公共對象請求代理結構(Common Object Request Broker Architecture),由對象管理組織 (Object Management Group,縮寫為 OMG)標準化.它的組成是介面定義語言(IDL), 語言綁定(binding:也譯為聯編)和允許應用程序間互操作的協議. 其目的為:用不同的程序設計語言書寫在不同的進程中運行,為不同的操作系統開發.
89、說說你所熟悉或聽說過的j2ee中的幾種常用模式?及對設計模式的一些看法
Session Facade Pattern:使用SessionBean訪問EntityBean
Message Facade Pattern:實現非同步調用
EJB Command Pattern:使用Command JavaBeans取代SessionBean,實現輕量級訪問
Data Transfer Object Factory:通過DTO Factory簡化EntityBean數據提供特性
Generic Attribute Access:通過AttibuteAccess介面簡化EntityBean數據提供特性
Business Interface:通過遠程(本地)介面和Bean類實現相同介面規範業務邏輯一致性
EJB架構的設計好壞將直接影響系統的性能、可擴展性、可維護性、組件可重用性及開發效率.項目越複雜,項目隊伍越龐大則越能體現良好設計的重要性.
90、說說在weblogic中開發消息Bean時的persistent與non-persisten的差別
persistent方式的MDB可以保證消息傳遞的可靠性,也就是如果EJB容器出現問題而JMS伺服器依然會將消息在此MDB可用的時候發送過來,而non-persistent方式的消息將被丟棄.
[火星人 ] java中120個經典問題(3)已經有648次圍觀