JSP的四種範圍
page是代表與一個頁面相關的對象和屬性。
request是代表與web客戶機發出的一個請求相關的對西哪個和屬性,一個請求可能跨越多個頁面。
session是代表與用於某個web客戶機的一個用戶體驗相關的對象和屬性。一個web會話可以跨越多個客戶請求。
application代表與整個web應用程序相關的對象和屬性。跨越整個web應用程序,包括多個頁面,請求和會話。
過濾器的用途有哪些?
過濾器主要做攔截作用,所以可以做很多事情,比如過濾一些不合法的詞彙、驗證是否正常登陸、字符編碼的轉換。
過濾器的用法?
實現Filter接口,覆蓋init(FilterConfig config)、doFilter(ServletRequest request,ServletResponse response,FilterChain chain)、destroy()方法。
JSP中如何使用JavaBeans?
JSP有對於JavaBean操作的標準動作,useBean、setProperty、getProperty
JSP和Servlet中的請求轉發分別如何來實現?
JSP中可以使用forward動作來實現。同時JSP和Servlet都可以使用request.getRequestDispatcher(path).forward(req,res);來進行請求轉發。
web.xml的作用
用於配置web應用的信息,如servlet,filter等。
JavaEE:Base:
J2EE是技術還是平臺還是框架
J2EE本身是一個標準,一個爲企業分佈式應用的開發提供的標準平臺。
J2EE也是一個框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技術。
請解釋一下以下J2EE名詞:WEB容器、EJB容器、JNDI、JMS、JTA、JAF、RMI/IIOP
WEB容器:給處於其中的應用程序組件(JSP、Servlet)提供一個環境,使JSP、Servlet直接與容器中的環境變量接口交互,不必關注其它系統問題。該容器提供的接口嚴格遵守J2EE規範中的WebApplication標準。遵守以上標準的WEB服務器就叫做J2EE的WEB容器。
EJB容器:EnterpriseJavaBean容器。更具有行業領域特色。提供給運行在其中的組件EJB各種管理功能。只要滿足J2EE規範的EJB放入該容器,馬上就會被容器進行高效率的管理。並且可以通過現成的接口來獲得系統級別的服務。
JNDI:(Java Naming & Directory Interface)Java命名目錄服務。主要提供的功能是:提供一個目錄系統,讓其它各地的應用程序在某上面留下自己的索引,從而滿足快速查找和定位分佈式應用程序的功能。
JMS:(Java Message Service)Java消息服務。主要實現各個應用程序之間的通訊。包括點對點和廣播。
JTA:(Java Transaction API)Java事務服務。提供各種分佈式事務服務。應用程序只需調用其提供的接口即可。
JAF:(Java Action Framework)Java安全認證框架。提供一些安全控制方面的框架。讓開發者通過各種部署和自定義實現自己的個性安全控制策略。
RMI/IIOP(Remote Method Invocation/internet對象請求中介協議)他們主要用於通過遠程調用服務。
Struts:
什麼是STRUTS?
struts本意爲結構,在J2EE中爲一個WEB框架,採用了JSP/Servlet/JavaBean技術。可以開發出基於MVC模式的應用架構。
STRUTS的入口類?
ActionServlet,所有對Action的請求都經由該類轉發處理。
Hibernate:
什麼是ORM?
Object Relational Mapping。是一種爲了解決面向對象與面向關係數據庫存在的互不匹配的現象的技術。通過使用描述對象和數據庫之間映射的元數據,將java程序中的對象自動持久化到關係數據庫中。
Hibernate比JDBC的優點?
解決了對象模型與關係模型之間的阻抗不匹配問題。Hibernate靈活且運用簡單,大量使用配置文件和映射文件來解決類與表或視圖的對應關係,便於維護。完善的事務處理和利用緩存以性能。
Hibernate有哪5個核心接口
Configuration:配置Hibernate,根據其啓動hibernate,創建SessionFaction對象。
SessionFactory:初始化Hibernate,充當數據存儲源的代理,創建session對象,SessionFactiory是線程安全的,同一個實例可以被應用的多個線程共享。
Session:負責保存、更新、刪除、加載和查詢對象,線程不安全,需要避免多個線程共享同一個session。
Transaction:管理事務。
Query和Criteria:執行數據庫的查詢。
關於Hibernate,配置文件呈現一對多,多對多的標籤是什麼?Hibernate的二級緩存是什麼?Hibernate是如何處理事務的?
一對多的標籤是<one-to-many>,多對多的標籤是<many-to-many>。SessionFactory的緩存是Hibernate的二級緩存。Hibernate的事務實際上是底層的JDBC Transaction的封裝或者是JTA Transaction的封裝。默認情況下使用JDBC Transaction。
Hibernate映射文件中屬性與表中列的關係,如屬性String對應的表中的類型爲?
字符型,如char,varchar等或大文本text。
Hibernate分頁實現代碼
Query query = session.createQuery(“from Emp”);
query.setFirstResult(first);
query.setMaxResults(pageSize);
Collection emps = query.list();
Session中的load和get的區別
當給定的對象標識不存在時,get返回null,而load則拋出一個異常。
Spring:
簡述Spring框架。
Spring框架是一個分層架構,由七個定義良好的模塊組成,Spring模塊構建在覈心容器之上,核心容器定義了創建、配置和管理bean的方式。組成Spring框架的每個模塊都可以單獨存在,或者與其他一個或多個模塊聯合實現。
Spring Core、Spring Context、Spring AOP、Spring DAO、Spring ORM、Spring Web、Spring MVC
EJB:
EJB是基於哪些技術實現的,SessionBean和EntityBean的區別
EJB包括SessionBean,EntityBean,MessageDrivenBean,基於JNDI、RMI、JTA等技術實現。SessionBean在J2EE應用程序中被用來完成一些服務器端的業務操作,例如訪問數據庫,調用其他EJB組件。EntityBean用來臨時性存儲數據。
EJB與JavaBean的區別
JavaBean是可複用的組件,對JavaBean並沒有嚴格的規範,任何一個java類都可以是一個Bean,但由於通常JavaBean是被容器所創建,所以JavaBean應具有一個無參的構造器,並實現Serializable接口用於持久化,JavaBean是不能被跨進程訪問的。EJB是基於java的RMI技術,所以EJB可以被遠程訪問(跨進程,跨計算機)。但EJB必須被部署在支持EJB的容器中(如Webspere,WebLogic等),EJB客戶不直接訪問EJB組件,而是通過容器訪問。
說明EJB中的SessionBean和EntityBean的生命週期,以及如何進行事務管理
SessionBean:StatelessSessionBean的生命週期由容器決定,當客戶機發出請求要建立一個Bean的實例時,EJB容器不一定要創建一個新的Bean的實例給客戶機調用,而是找一個現有的實例提供給客戶機。客戶機第一次調用一個StatefulSessionBean時,容器會立刻在服務器中創建一個新的Bean實例,並關聯到客戶機上,以後此客戶機調用StatefulSessionBean的方法時容器會把調用分派到與此客戶機相關聯的Bean實例。
EntityBean:EntityBean能存活相對較長的時間,並且狀態是持續的。只要數據庫中的數據存在,EntityBean就一直存活。而不按照應用程序或者服務進程來結束生命。EntityBean生命週期能夠被容器或Bean自己管理。
EJB通過以下技術管理事務:OTS(Object Transaction Service),JTS(Java Transaction Service),JTA(Java Transaction API)
EJB的角色和三個對象
一個完整的基於EJB的分佈式計算結構由六個角色組成,每個角色所做的工作必須遵循Sun公司提供的EJB規範,以保證彼此之間的兼容性。這六個角色分別是EJB組件開發者(Enterprise Bean Provider)、應用組合者(Application Assembler)、部署者(Deployer)、EJB服務提供者(EJB ServerProvider)、EJB容器提供者(EJB Container Provider)、系統管理員(System Administrator)。三個對象是Remote(Local)接口、Home(LocalHome)接口、Bean類。
EJB容器提供的服務
主要提供生命週期管理、代碼產生、持續性管理、安全、事務管理、鎖和併發管理等服務。
EJB禁止哪些操作
1.不能操作線程和線程API(線程API指非線程對象的方法如notify,wait等)。
2.不能操作awt。
3.不能實現服務器功能。
4.不能對靜態屬性存取。
5.不能使用IO操作直接存取文件系統。
6.不能加載本地庫。
7.不能將this作爲變量和返回。
8.不能循環調用。
remote接口和home接口主要作用
remote接口定義了業務方法,用於EJB客戶端調用業務方法。home接口是EJB工廠用於創建和移除查找EJB實例。
bean實例的生命週期
對於Stateless Session Bean、Entity Bean、Message Driven Bean一般存在緩衝池管理,而對於Entity Bean和Statefull Session Bean存在Cache管理,通常包含創建實例,設置上下文、創建EJBObject(create)、業務方法調用、remove等過程,對於存在緩衝池管理的Bean,在create之後實例並不從內存清除,而是採用緩衝池調度機制不斷重用實例,而對於存在Cache管理的Bean則通過激活和去激活機制保持Bean的狀態並限制內存中實例數量。
EJB的激活機制
以Stateful Session Bean爲例:其Cache大小決定了內存中可以同時存在的Bean實例的數量,根據MRU或NRU算法,實例在激活和去激活狀態之間遷移,激活機制是當客戶端調用某個EJB實例業務方法時,如果對應EJBObject發現自己沒有綁定對應的Bean實例則從其去激活Bean存儲中(通過序列化機制存儲實例)回覆(激活)此實例。狀態變遷前會調用對應的EJBActive和EJBPassivate方法。
EJB的幾種類型
Session Bean,Entity Bean和Message Driven Bean。Session Bean又可分爲Stateless Session Bean和Stateful Session Bean。Entity Bean又可分爲Bean管理持續性(BMP)和容器管理的持續性(CMP)。
客服端調用EJB對象的幾個基本步驟
設置JNDI服務工廠以及JNDI服務地址系統屬性,查找Home接口,從Home接口調用create方法創建Remote接口,通過Remote接口調用其業務方法。
RDBMS&SQL:
3張表student學生表(學號,姓名,性別,年齡,組織部門)、course課程表(編號,課程名稱)、sc選課表(學號,課程編號,成績)。
寫一個SQL語句,查詢選修了“計算機原理”的學生學號和姓名。
寫一個SQL語句,查詢“周星馳”同學選修的課程名稱。
寫一個SQL語句,查詢選修了5門課程的學生學號和姓名。
寫一個SQL語句,查詢選修了所有課程的學生學號和姓名。
(1)SELECT sno,sname FROM student stu WHERE stu.sno IN (SELECT sc.sno FROM sc WHERE sc.cno = (SELECT course.cno FROM course WHERE cname LIKE ‘計算機原理’));
(2)SELECT cname FROM course cou WHERE cou.cno IN (SELECT sc.cno FROM sc WHERE sc.sno IN (SELECT student.sno FROM student WHERE sname like ‘周星馳’));
(3)SELECT student.sno,sname FROM student WHERE student.sno IN (SELECT sc.sno FROM sc GROUP BY sc.sno HAVING count(*)=5);
(4)SELECT student.sno,sname FROM student WHERE student.sno IN (SELECT sc.sno FROM sc GROUP BY sc.sno HAVING count(*)=(SELECT count(*) FROM course));
有一張表EMP,表中字段爲(empno,ename,mgr,age),寫出語句查詢所有僱員年齡大於其領導的人員名單。
SELECT worker.ename FROM emp worker WHERE worker.age>(SELECT manager.age FROM emp manager WHERE manager.empno = worker.mgr);
有兩張表分別代表的省和市的信息,其中省信息表中字段爲(stateno,statename),市信息表中字段爲(cityno,cityname,stateno),省信息表中有廣東,江蘇,遼寧,黑龍江,市信息表中有上海,廣州,北京,南京。現在需要查詢出所有市信息及相關省信息,請寫出查詢語句。
SELECT cityname,cityno,s.stateno,s.statename FROM city c,state s WHERE c.stateno = s.stateno(+);
Base Web:Javascript
一個動態的下拉列表,如何在每一次點擊後顯示出所有被選中的值?
<script. type="text/javascript">
function choose(sel){
alert(sel.options[sel.selectedIndex].innerHTML);
}
</script>
<select nchange=”choose(this)”>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
封裝一個類,包含屬性name和sex,在設置其值後再取出
function myObject(){
var innerClass = new Object();
innerClass.name='undefined';
innerClass.sex='undefined';
innerClass.setName = function (n){
name = n;
}
innerClass.setSex = function (s){
sex = s;
}
innerClass.getName = function (){
return name;
}
innerClass.getSex = function (){
return sex;
}
return innerClass;
}
Core Java總結(二)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.