本文地址:http://www.cnblogs.com/maplefighting/p/8206863.html html
一、Http協議位於應用層,創建在TCP/IP協議上,端口爲80java
二、HTTP請求由(1)請求方法,URI和HTTP協議的版本 (2)請求頭 (3)請求正文構成web
HTTP響應由(1)HTTP協議版本,狀態代碼和描述 (2)響應頭 (3)響應正文spring
三、GET請求參數在HTTP請求第一行URI後面sql
POST請求參數將做爲HTTP請求的正文部分數據庫
四、ServletContext和web應用具備一樣的生命週期編程
五、重定向sendRedirect:用戶請求-->服務器返回302狀態碼-->瀏覽器收到響應後,自動請求另外一個web設計模式
六、JSP生命週期:(1)解析階段:Servlet解析JSP (2)翻譯階段:Servlet容器把JSP文件翻譯成Servlet源文件 瀏覽器
(3)編譯階段:編譯Servlet源文件生成類緩存
(4)初始化階段:加載JSP文件對應的Servlet類,建立實例,調用初始化方法 (5)運行時階段 (6)銷燬階段
七、 SendRedirect重定向 Forward服務器內部轉發
地址有變化 地址欄沒變化
不能共享 能共享request裏面數據
URL能跳轉到其餘站點 只能在同一個web內
效率較低 較高
瀏覽器跳轉 服務器跳轉
HttpServletResponse RequestDispatcher
八、Servlet生命週期
a、若是請求時靜態頁面,服務器直接返回
b、若是是動態,交給Web容器,若是沒有找到Servlet (第一次訪問沒有),則讀取xml配置文件,把相應的Servlet放進Web容器,接着建立Servlet實例,
調用init()-->判斷service() -->doget(),dopost(),而後返回給瀏覽器 -->destory()
九、cookie和session
cookie:一開始客戶端沒有cookie,訪問服務器時會建立
Session:session一開始也沒有,服務器建立session,而後返回並保存SessionId在客戶端
十、Spring可以包裝Hibernate異常,把他們從CheckedException變成RuntimeException
十一、Spring提供編程式事務(嵌在業務代碼)和聲明式事務(xml)
SessionFactory只有使用Hibernate才須要注入,注入事務管理器
十二、Spring核心控制器,DispatcherServlet負責接收Http請求,加載配置文件,初始化上下文ApplicationContext,文件上傳解析
1三、Spring和struts2區別
(1)springmvc是基於方法設計,struts2基於類
(2)struts有本身的interceptor,springmvc用的是獨立的Aop方式
(3)springmvc方法之間基本是獨立,獨享request,response數據。struts2全部Action變量共享的
(4)springmvc的入口是servlet,struts2是filter
1四、spring用到的設計模式
(1)工廠模式:BeanFactory
(2)單例模式,依賴注入用雙重判斷加鎖
(3)適配器
(4)代理
1五、spring兩種代理方式:jdk和cglib
(1) 若目標對象實現了若干接口,則用jdk的Proxy代理
(2) 若沒有實現任何接口,則用cglib庫生成子類
jdk代理是由java內部的反射機制實現的。
cglib是藉助asm來實現的,用到第三方類庫,需引入cglib.jar,asm.jar
jdk代理要爲目標類同一接口類
cglib代理須要生成加強過的目標類
具體使用能夠查看:https://www.2cto.com/kf/201701/590030.html
1六、網站負載太大:使用緩存,集羣,CDN加速,分佈式
1七、消息隊列:把消息按照產生的次序加入隊列。短信,電子郵件,訂閱等
1八、struts1和struts2的區別
struts1與Servlet嚴重耦合,Action->Execute
(1)Action必須實現Struts的Action類,Struts2能夠不實現任何類或接口
(2)Struts1的Action是單例模式,必須實現線程安全。Struts2是每一請求一個實例
1九、Hibernate與Mybatis區別
(1)基本沒有複雜語句可選Hibernate,sql封裝好了,開發快。負責語句多的選Mybatis
(2)Mybatis須要手寫sql
(3)Hibernatw移植性好,Mybatis需不一樣數據庫不一樣sql
20、過濾器filter和攔截器interceptor的區別
a、filter是基於函數回調的,interceptor基於java反射機制
b、filter依賴Servlet容器,interceptor不依賴
c、filter對幾乎全部請求起做用,interceptor只能對action起做用
d、interceptor能夠訪問action上下文,值棧裏的對象。而過濾器不能
e、在action中interceptor能夠屢次被調用,而filter只在容器初始化時調用一次
f、執行順序:過濾前->攔截前->action->攔截後->過濾後
2一、Hibernate二級緩存
一級緩存是Session級別。二級緩存是SessionFactory基本
一級緩存是事務級別的緩存,必須同一個Session。二級緩存是進程範圍的緩存。相同操做就能夠用緩存
一級緩存不會出現併發問題。二級緩存會
應用場景:二級緩存:(1)不多被修改數據 (2)不重要的 (3)不會被併發的
2二、Maven snapshot表明版本不穩定,處於開發中
Release表明穩定版本,發行版本
2三、aop只是對oop的補充。aop是一種設計模式,Spring提供一種實現
2四、Spring中,bean的scope默認是singleton
2五、a、Java Servlet API引用Session機制來追蹤客戶狀態,定義了HttpSession接口,Servlet容器必須實現該接口
b、當一個Session開始時,Servlet容器將建立一個HttpSession,分配SessionID,,存在客戶端瀏覽器,若是禁用了Cookie,Servlet能夠重寫客戶請求的URL,把SessionID放入URL中
c、HttpServletResponse接口提供重寫String.encodeURL(url)
2六、IOC注入方式:屬性注入,構造注入
沒有設值注入的狀況下,會根據配置文件構造注入,有的話,構造注入失效
2七、在Spring框架中獲取鏈接池的方法
a、DBCP數據源
b、C3P0數據源
c、Spring的DriverManagerDataSourse
d、獲取JNDI數據源
2八、Spring能夠配置文件中配置Bean初始化和消亡函數
2九、doget和dopost是HttpServlet的方法
Servlet:init(),service(),destory()
RequestDispatcher:forward()
30、spring的優勢
(1)下降耦合性 (2)容器提供單例模式支持 (3)提供aop技術,權限攔截,運行期監控 (4)低侵入式設計
(5)spring的DI機制下降業務對象替換的複雜性
IOC 工廠模式 AOP代理模式
3一、IOC是指控制權由應用代碼轉到外部容器
Servlet接口定義了Servlet的生命週期
IOC由Spring負責控制對象的生命週期和對象間的關係
ApplicationContext創建在BeanFactory之上,提供系統架構服務
3二、BeanFactory和ApplicationContext
相同:同過xml配置文件加載Bean,ApplicationContext由BeanFactory接口派生
不一樣:Beanfactory是延遲加載,直到第一次調用getBean纔會報錯。ApplicationContext則在初始化時檢驗
3三、SSH struts控制器 spring管理各層 hibernate持久層
SSM springmvc spring Mybatis
3四、Struts2和Springmvc原理 (自行google或baidu,兩個流程圖)
參考書籍:Tomcat與java web 開發技術詳解(第二版)孫衛琴,大型網站技術架構:核心原理與案例分析-李智慧,spring實戰,spring技術內幕
--------------------------------------------------------------------------------------------------------------
以上爲maplefighting我的筆記整理,若有出錯,歡迎指正