【Java框架】Java EE框架常見的面試題

一、什麼是Spring

1Spring的核心是一個輕量級(Lightweight)的容器(Container)。

2Spring是實現IoCInversion of Control)容器和非***性(No intrusive)的框架。

3Spring提供AOPAspect-oriented programming)概念的實現方式。

4Spring提供對持久層(Persistence)、事物(Transcation)的支持。

5SpringMVC Web框架的實現,並對一些常用的企業服務APIApplication Interface)提供一致的模型封裝。

6Spring提供了對現存的各種框架(StructsJSFHibernateIbatisWebwork等)相整合的方案。

總之,Spring是一個全方位的應用程序框架。

二、什麼是框架?爲什麼要學框架 

框架  實現部分功能的代碼 (半成品),使用框架簡化企業級軟件開發 

學習框架 ,清楚的知道框架能做什麼? 還有哪些工作需要自己編碼實現 

什麼是Struts2  

Struts2 是一款優秀MVC框架 

MVC:是一種思想,是一種模式,將軟件分爲 Model模型、View視圖、Controller控制器 

 MVC由來是web開發 

JavaEE軟件三層結構  web層(表現層)、業務邏輯層、數據持久層 sun提供JavaEE開發規範)

JavaEE開發更強調三層結構, web層開發注重MVC 

struts2 就是 web層開發框架,符合MVC模式 

struts1 webwork jsf SpringMVC 都是MVC 

Struts2  Struts1 關係

沒有關係, Struts2 全新框架,引入WebWork很多技術和思想,Struts2 保留Struts1 類似開發流程Struts2 內核 webwork  

、什麼是ibernate

 Hibernate是一種強大高效的持久層查詢框架。它對JDBC進行了輕量級封裝,以面向事物的思維解決了數據庫操縱問題。同時,是一種非強迫性的解決方案,能與一些數據庫和Java服務器平穩的集成。

六、什麼是SpringMvc?

是基於SpringMVC框架。

七、SpringMvc整個的執行流程:

前端控制器DispatcherServlet

處理器映射器HandlerMapping

處理器適配器HandlerAdapter

1、發起請求到前端控制器(DispatcherServlet 

2DispatcherServlet 請求 HandlerMapping查找Handler(可以根據xml、註解進行查找)

3HandlerMapping 向前 DispatcherServlet返回Handler

4DispatcherServlet 調用 HandlerAdapter 執行Handler

5HandlerAdapter 執行 Handler

6Handler執行完給處理器適配器返回ModelAndView

7、處理器適配器向前端控制器返回ModelAndView ModelAndView SpringMvc的底層對象 包括modelview

8、前端控制器請求視圖解析器去解析視圖,根據邏輯視圖名解析成真正的視圖(jsp

9、視圖解析器向前端控制器返回view

10、前端控制器進行視圖渲染

八、SpringMvc Struts2區別

1Struts2是類級別的攔截, 一個類對應一個request上下文,SpringMVC是方法級別的攔截,一個方法對應一個request上下文,而方法同時又跟一個url對應,所以說從架構本身上SpringMVC就容易實現restful url,struts2的架構實現起來要費勁,因爲Struts2Action的一個方法可以對應一個url,而其類屬性卻被所有方法共享,這也就無法用註解或其他方式標識其所屬方法了。

2、由上邊原因,SpringMVC的方法之間基本上獨立的,獨享request response數據,請求數據通過參數獲取,處理結果通過ModelMap交回給框架,方法之間不共享變量,而Struts2搞的就比較亂,雖然方法之間也是獨立的,但其所有Action變量是共享的,這不會影響程序運行,卻給我們編碼 讀程序時帶來麻煩,每次來了請求就創建一個Action,一個Action對象對應一個request上下文。
3、由於Struts2需要針對每個request進行封裝,把requestsessionservlet生命週期的變量封裝成一個一個Map,供給每個Action使用,並保證線程安全,所以在原則上,是比較耗費內存的。

4 攔截器實現機制上,Struts2有以自己的interceptor機制,SpringMVC用的是獨立的AOP方式,這樣導致Struts2的配置文件量還是比SpringMVC大。

5SpringMVC的入口是servlet,而Struts2filter(這裏要指出,filterservlet是不同的。以前認爲filterservlet的一種特殊),這就導致了二者的機制不同,這裏就牽涉到servletfilter的區別了。

6SpringMVC集成了Ajax,使用非常方便,只需一個註解@ResponseBody就可以實現,然後直接返回響應文本即可,而Struts2攔截器集成了Ajax,在Action中處理時一般必須安裝插件或者自己寫代碼集成進去,使用起來也相對不方便。

7SpringMVC驗證支持JSR303,處理起來相對更加靈活方便,而Struts2驗證比較繁瑣,感覺太煩亂。

8spring MVCSpring是無縫的。從這個項目的管理和安全上也比Struts2高(當然Struts2也可以通過不同的目錄結構和相關配置做到SpringMVC一樣的效果,但是需要xml配置的地方不少)。

9 設計思想上,Struts2更加符合OOP的編程思想, SpringMVC就比較謹慎,在servlet上擴展。

10SpringMVC開發效率和性能高於Struts2
11SpringMVC可以認爲已經100%零配置。

九、filterservlet的比較?

    概念:
         1servletservlet是一種運行服務器端的java應用程序,具有獨立於平臺和協議的特性,並且可以動態的生成web頁面,它工作在客戶端請求與服務器響應的中間層。
         2filterfilter是一個可以複用的代碼片段,可以用來轉換HTTP請求、響應和頭信息。Filter不像Servlet,它不能產生一個請求或者響應,它只是修改對某一資源的請求,或者修改從某一的響應。
    生命週期:
        1servletservlet的生命週期始於它被裝入web服務器的內存時,並在web服務器終止或重新裝入servlet時結束。servlet一旦被裝入web服務器,一般不會從web服務器內存中刪除,直至web服務器關閉或重新結束。
        (1)、裝入:啓動服務器時加載Servlet的實例;
        (2)、初始化:web服務器啓動時或web服務器接收到請求時,或者兩者之間的某個時刻啓動。初始化工作有init()方法負責執行完成;
        (3)、調用:從第一次到以後的多次訪問,都是隻調用doGet()doPost()方法;
        (4)、銷燬:停止服務器時調用destroy()方法,銷燬實例。 
        2filter:(一定要實現javax.servlet包的Filter接口的三個方法init()doFilter()destroy(),空實現也行)
        (1)、啓動服務器時加載過濾器的實例,並調用init()方法來初始化實例;
        (2)、每一次請求時都只調用方法doFilter()進行處理;

        (3)、停止服務器時調用destroy()方法,銷燬實例。

    職責
       1servlet
        創建並返回一個包含基於客戶請求性質的動態內容的完整的html頁面;
        創建可嵌入到現有的html頁面中的一部分html頁面(html片段);
        讀取客戶端發來的隱藏數據;
        讀取客戶端發來的顯示數據;
        與其他服務器資源(包括數據庫和java的應用程序)進行通信;
        通過狀態代碼和響應頭向客戶端發送隱藏數據。
       2filter
        filter能夠在一個請求到達servlet之前預處理用戶請求,也可以在離開servlet時處理http響應:
        在執行servlet之前,首先執行filter程序,併爲之做一些預處理工作;
        根據程序需要修改請求和響應;
        servlet被調用之後截獲servlet的執行

    區別:

        1servlet 流程是短的,url傳來之後,就對其進行處理,之後返回或轉向到某一自己指定的頁面。它主要用來在 業務處理之前進行控制

        2filter 流程是線性的,url傳來之後,檢查之後,可保持原來的流程繼續向下執行,被下一個filter, servlet接收等,而servlet 處理之後,不會繼續向下傳遞。filter功能可用來保持流程繼續按照原來的方式進行下去,或者主導流程,而servlet的功能主要用來主導流程。
  3filter可用來進行字符編碼的過濾,檢測用戶是否登陸的過濾,禁止頁面緩存等


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章