1、說說Servlet的工做流程?前端
一、Web客戶向Servlet容器發送http請求。java
二、Servlet容器解析Http請求,Servtet容器建立HttpRequest對象,封裝Http信息,同時建立HttpResponse對象程序員
三、Servlet容器調用HttpServlet的service方法,service方法根據請求類型調用對應的doXX()方法,而後調用HttpRequest相關方法,好比getParameter獲取請求數據,而後調用HttpResponse相關方法,生成相應數據。web
4.Servlet容器把HeetpServlet相應結果傳遞給web客戶。ajax
2、怎麼理解Servlet?spring
Servlet是一套規範,內部提供一套接口,運行在Application服務器中,經過http協議用來接收客戶端的請求和回覆響應。具體的實現類須要服務器廠商提供。sql
因爲部署在服務器上的web項目,必須經過在瀏覽器的地址欄中輸入地址才能夠被訪問到,因此Servlet也須要配置地址才能被瀏覽器訪問。數據庫
3、誰建立了Servlet?Servlet容器:Tomcat、JBoss、webLogic等。編程
二、註冊:在web.xml裏配置Servlet的配置映射信息。小程序
Servlet註冊:Servlet程序必須在WEB應用程序的web.xml文件中進行註冊和映射其訪問的路徑,才能夠被Servlet引擎加載和被瀏覽器訪問。
一個<Servlet>標籤用於註冊一個Servlet,它含有兩個主要的子元素:<Servlet-name>和<Servlet-class>,分別用於設置Servlet的註冊名稱和Servlet的完整類名。
一個<Servlet-mapping>標籤用於映射一個已註冊的Servlet的一個對外訪問路徑,它包含兩個子元素:<servlet-name>和<url-pattern>,分別用於Servlet的註冊名稱
和Servlet的對外訪問路徑。
5、JSP的工做流程 (JSP的執行過程)
一、客戶端發出Request(請求);
二、JSP Container將JSP轉譯成Servlet的源代碼;
三、將產生的Servlet的源代碼通過編譯後,並加載到內存;
四、把結果Response(響應)至客戶端。
6、SpringMVC的工做流程
一、用戶發起請求到前端控制器(DispatcherServlet)
二、前端控制器請求處理器映射器(HandlerMappering)去查找處理器(Handle):經過xml配置或者註解進行查找
三、找到之後處理器映射器(HandlerMappering)像前端控制器返回執行鏈(HandlerExecutionChain)
四、前端控制器(DispatcherServlet)調用處理器適配器(HandlerAdapter)去執行處理器(Handler)
五、處理器適配器去執行Handler
六、Handler執行完給處理器適配器返回ModelAndView
七、處理器適配器向前端控制器返回ModelAndView
八、前端控制器請求視圖解析器(ViewResolver)去進行視圖解析
九、視圖解析器像前端控制器返回View
十、前端控制器對視圖進行渲染
十一、前端控制器向用戶響應結果
7、springMVC中的幾個組件的用途:
前端控制器(DispatcherServlet):接收請求,響應結果,至關於電腦的CPU。
處理器映射器(HandlerMapping):根據URL去查找處理器
處理器(Handler):(須要程序員去寫代碼處理邏輯的)
處理器適配器(HandlerAdapter):會把處理器包裝成適配器,這樣就能夠支持多種類型的處理器,類比筆記本的適配器(適配器模式的應用)
視圖解析器(ViewResovler):進行視圖解析,多返回的字符串,進行處理,能夠解析成對應的頁面
8、Spring的AOP與IOC
一、IoC(Inversionofcontrol):控制反轉
概念:控制權由對象自己轉向容器;由容器根據配置文件去建立實例並建立各個實例之間的依賴關係
核心:bean工廠;在Spring中,bean工廠建立的各個實例稱做bean
二、AOP(Aspect-OrientedProgramming):面向方面編程
代理方式分爲兩種:靜態代理、動態代理
靜態代理的用途:
針對每一個具體類分別編寫代理類;
針對一個接口編寫一個代理類;
動態代理:針對一個方面編寫一個InvocationHandler,而後借用JDK反射包中的Proxy類爲各類接口動態生成相應的代理類
產生動態代理的類:java.lang.refect.Proxy
裝備必須實現InvocationHandler接口實現invoke方法
三、什麼是類的反射
經過類說明能夠獲得類的父類、實現的接口、內部類、構造函數、方法、屬性並能夠根據構造器實例化一個對象,喚起一個方法,取屬性值,改屬性值
9、談談MyBatis的優缺點?
優勢:
一、簡單易學。 mybatis自己就很小且簡單。沒有任何第三方依賴,最簡單安裝只要兩個jar文件+配置幾個sql映射文件易於學習,易於使用,經過文檔和源代碼,能夠比較徹底的掌握它的設計思路和實現。
二、靈活。mybatis不會對應用程序或者數據庫的現有設計強加任何影響。 sql寫在xml裏,便於統一管理和優化。經過sql基本上能夠實現咱們不使用數據訪問框架能夠實現的全部功能,或許更多。
三、解除sql與程序代碼的耦合。經過提供DAL層,將業務邏輯和數據訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。sql和代碼的分離,提升了可維護性。
四、提供映射標籤,支持對象與數據庫的orm字段關係映射
五、提供對象關係映射標籤,支持對象關係組建維護
六、提供xml標籤,支持編寫動態sql。
缺點:
一、編寫SQL語句時工做量很大,尤爲是字段多、關聯表多時,更是如此。
二、SQL語句依賴於數據庫,致使數據庫移植性差,不能更換數據庫。
三、框架仍是比較簡陋,功能尚有缺失,雖然簡化了數據綁定代碼,可是整個底層數據庫查詢實際仍是要本身寫的,工做量也比較大,並且不太容易適應快速數據庫修改。
四、二級緩存機制不佳
myBatis的原理
MyBatis應用程序根據XML配置文件建立SqlSessionFactory,SqlSessionFactory在根據配置,配置來源於兩個地方,一處是配置文件,一處是Java代碼的註解,獲取一個SqlSession。SqlSession包含了執行sql所須要的全部方法,能夠經過SqlSession實例直接運行映射的sql語句,完成對數據的增刪改查和事務提交等,用完以後關閉SqlSession。
10、AJAX都有哪些優勢和缺點?
優勢:
一、最大的一點是頁面無刷新,用戶的體驗很是好。
二、使用異步方式與服務器通訊,具備更加迅速的響應能力。
三、能夠把之前一些服務器負擔的工做轉嫁到客戶端,利用客戶端閒置的能力來處理,減輕服務器和帶寬的負擔,節約空間和寬帶租用成本。而且減輕服務器的負擔,ajax的原則是「按需取數據」,能夠最大程度的減小冗餘請求,和響應對服務器形成的負擔。
四、基於標準化的並被普遍支持的技術,不須要下載插件或者小程序。
缺點:
一、ajax不支持瀏覽器back按鈕。
二、安全問題 AJAX暴露了與服務器交互的細節。
三、對搜索引擎的支持比較弱。
四、破壞了程序的異常機制。
五、不容易調試。
11、簡述ajax的執行過程?
1. 建立XMLHttpRequest對象,也就是建立一個異步調用對象
2. 建立一個新的HTTP請求,並指定該HTTP請求的方法、URL及驗證信息
3. 設置響應HTTP請求狀態變化的函數
4. 發送HTTP請求
5. 獲取異步調用返回的數據
6. 使用JavaScript和DOM實現局部刷新
12、談談對重載與重寫的區別?
重載:
一、參數類型、個數、順序至少有一個不相同。
二、不能重載只有返回值不一樣的方法名。
三、存在於父類和子類、同類中。
重寫:
一、方法名、參數、返回值相同。
二、子類方法不能縮小父類方法的訪問權限。
三、子類方法不能拋出比父類方法更多的異常(但子類方法能夠不拋出異常)。
四、存在於父類和子類之間。
五、方法被定義爲final不能被重寫。
十3、談談抽象與接口的區別?
1 接口只能包含抽象方法,抽象類能夠包含普通方法。 2 接口只能定義靜態常量屬性,抽象類既能夠定義普通屬性,也能夠定義靜態常量屬性。 3 接口不包含構造方法,抽象類裏能夠包含構造方法。