javaweb面試題及答案
javaweb開發人員面試前的準備,會對面試有利,以下是javaweb面試題及答案例文,增加你的面試技巧,和小編一起來學習啦。
javaweb面試題及答案(一)
一、jsp和servlet的區別、共同點、各自應用的范圍??
JSP是Servlet技術的擴展,本質上就是Servlet的簡易方式。JSP編譯后是“類servlet”。Servlet和JSP最主要的不同點在于,Servlet的應用邏輯是在Java文件中,并且完全從表示層中的HTML里分離開來。而JSP的情況是Java和HTML可以組合成一個擴展名為.jsp的文件。JSP側重于視圖,Servlet主要用于控制邏輯。在struts框架中,JSP位于MVC設計模式的視圖層,而Servlet位于控制層.
二、cookie和session的作用、區別、應用范圍,session的工作原理???
Cookie:主要用在保存客戶端,其值在客戶端與服務端之間傳送,不安全,存儲的數據量有限。
Session:保存在服務端,每一個session在服務端有一個sessionID作一個標識。存儲的數據量大,安全性高。占用服務端的內存資源。
三、jstl是什么?優點有哪些??
JSTL(JSP Standard Tag Library ,JSP標準標簽庫)是一個不斷完善的開放源代碼的JSP標簽庫,由四個定制標記庫(core、format、xml 和 sql)和一對通用標記庫驗證器(ScriptFreeTLV 和 PermittedTaglibsTLV)組成。優點有:
1、 在應用程序服務器之間提供了一致的接口,最大程序地提高了WEB應用在各應用服務器之間的移植。
2、 簡化了JSP和WEB應用程序的開發。
3、 以一種統一的方式減少了JSP中的scriptlet代碼數量,可以達到沒有任何scriptlet代碼的程序。在我們公司的項目中是不允許有任何的scriptlet代碼出現在JSP中。
4、 允許JSP設計工具與WEB應用程序開發的進一步集成。相信不久就會有支持JSTL的IDE開發工具出現。
四、j2ee的優越性主要表現在哪些方面?MVC模式
a、 J2EE基于JAVA 技術,與平臺無關
b、 J2EE擁有開放標準,許多大型公司實現了對該規范支持的應用服務器。如BEA ,IBM,ORACLE等。
c、 J2EE提供相當專業的通用軟件服務。
d、 J2EE提供了一個優秀的企業級應用程序框架,對快速高質量的開發系統打下了基礎。
Model模型:應用程序的主體部分,用于表示業務邏輯。
View視圖:應用程序中用戶界面相關的部分,是用戶看到并與之交互的界面。
Controller控制器:用于根據用戶的輸入,控制用戶界面數據顯示,更新Model對象狀態。
MVC模式的出現不僅實現了功能模塊和顯示模塊的分離,同時還提夠了應用系統的可維護、可擴展性、可移植性、和組建的可復用性。
五、Struts的優點
a、實現MVC模式,結構清晰,使開發者只需關注業務邏輯的實現。
b、有豐富的tag可以用,能大大提夠開發效率,縮短開發時間。
c、頁面導航。通過一個配置文件,即可把握整個系統各部分之間的聯系,這對于后期的維護有很大的好處
d、提供Exception處理機制
e、支持L18N
javaweb面試題及答案(二)
一、為什么要用struts?
JSP、Servlet、JavaBean技術的出現給我們構建強大的企業應用系統提供了可能。但用這些技術構建的系統非常的繁亂,所以在此之上,我們需要一個規則、一個把這些技術組織起來的規則,這就是框架,Struts便應運而生。
基于Struts開發的應用由3類組件構成:控制器組件、模型組件、視圖組件
二、Sturt1的核心類、核心標簽庫?
ActionServlet 控制器、ActionMapping狀態改變事件 、 Action控制器的一部分、ActionForward用戶指向、ActionForm狀態改變的數據
Html標簽、bean標簽、logic標簽、tiles標簽、nested標簽
三、struts1與sturts2的區別(struts2是struts1和webwork的結合體)
1、struts1要求Action類繼承一個抽象基類,而不是接口。
struts2的action類可以實現一個action接口,也可以實現其他接口。
2、sturts1 action是單例模式,線程是安全的。
struts2 action線程是不安全的,action為每一個請求都生成了一個實例。
3、sturts1過去依賴serlet API,不容易測試。
struts2不依賴于容器,允許Action脫離容器單獨被測試。
4、Struts1 使用ActionForm對象捕獲輸入。所有的ActionForm必須繼承一個基類。
Struts 2直接使用Action屬性作為輸入屬性,消除了對第二個輸入對象的需求。
5、Struts1 整合了JSTL,因此使用JSTL EL。這種EL有基本對象圖遍歷,但是對集合和索引屬性的支持很弱。
Struts2可以使用JSTL,但是也支持一個更強大和靈活的表達式語言--"Object Graph Notation Language" (OGNL).
6、Struts 1使用標準JSP機制把對象綁定到頁面中來訪問。
Struts 2 使用 "ValueStack"技術,使taglib能夠訪問值而不需要把你的頁面(view)和對象綁定起來。
7、Struts 1 ActionForm 屬性通常都是String類型。Struts1使用Commons-Beanutils進行類型轉換。
Struts2 使用OGNL進行類型轉換。提供基本和常用對象的轉換器。
8、Struts 1支持在ActionForm的validate方法中手動校驗,或者通過Commons Validator的擴展來校驗。
Struts2支持通過validate方法和XWork校驗框架來進行校驗。
9、Struts1支持每一個模塊有單獨的Request Processors(生命周期),但是模塊中的所有Action必須共享相同的生命周期。
Struts2支持通過攔截器堆棧(Interceptor Stacks)為每一個Action創建不同的生命周期。堆棧能夠根據需要和不同的Action一起使用。
javaweb面試題及答案(三)
一、過濾器和攔截器的區別
1、攔截器是基于java的反射機制的,而過濾器是基于函數回調
2、過濾器依賴于servlet容器,而攔截器不依賴于servlet容器
3、攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用
4、攔截器可以訪問action上下文、值棧里的對象,而過濾器不能
5、在action的生命周期中,攔截器可以多次被調用,而過濾器只在容器初始化時調用一次
攔截器 :是在面向切面編程的就是在你的service或者一個方法,前調用一個方法,或者在方法后調用一個方法比如動態代理就是攔截器的簡單實現,在你調用方法前打印出字符串(或者做其它業務邏輯的操作),也可以在你調用方法后打印出字符串,甚至在你拋出異常的時候做業務邏輯的操作。
過濾器:是在java web中,你傳入的request,response提前過濾掉一些信息,或者提前設置一些參數,然后再傳入servlet或者struts的 action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者 struts的action前統一設置字符集,或者去除掉一些非法字符.
二、Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。
工作原理:
1.讀取并解析配置文件2.讀取并解析映射信息,創建SessionFactory 3.打開Sesssion 4.創建事務Transation 5.持久化操作6.提交事務7.關閉Session 8.關閉SesstionFactory
優點有:
1. 對JDBC訪問數據庫的代碼做了封裝,大大簡化了數據訪問層繁瑣的重復性代碼。
2. Hibernate是一個基于JDBC的主流持久化框架,是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作
3、 Hibernate使用Java反射機制而不是字節碼增強程序來實現透明性。
4、 Hibernate的性能好,映射的靈活性比較出色。它支持各種關系數據庫,從一對一到多對多的各種復雜關系。
三、hibernate的核心類是什么??重要方法是什么??
Configuration、SessionFactory
Session如下方法 Save、 load、 Update、Delete
Query q=CreateQuery(“from Customer where customerName=:customerName”)
beginTransaction、close、Transaction、Commit()
四、session.load()和session.get()的區別
Session.load/get方法均可以根據指定的實體類和id從數據庫讀取記錄,并返回與之對應的實體對象。其區別在于:
如果未能發現符合條件的記錄,get方法返回null,而load方法會拋出一個ObjectNotFoundException。