JAVA基础知识(4)
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基础知识(4)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA基础知识(2)
- 下一篇: JAVA基础知识(6)