JSP+Servlet+JavaBean
生活随笔
收集整理的這篇文章主要介紹了
JSP+Servlet+JavaBean
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JSP相當于在HTML頁面中加上Java代碼,一般在<body>標簽中放入主要代碼。 在JSP里用<%...%>把Java代碼包含起來的。
?
Servlet的生命周期:
①被服務器實例化后,容器運行init方法。
②當請求(Request)到達時,運行service方法,service方法會運行與請求對應的doXXX方法(doGet,doPost)等。
③當服務器決定將實例銷毀時,調用destroy方法。 ?
問:當多個請求同時到達時,會啟動一個還是多個Servlet來接收請求?
Servlet是“單實例多線程”。
①可以有多個Servlet來處理一個業務請求。
②對于同一業務請求只有一個實例,加載時會調用各自的init方法。
③同一個Servlet可以同時處理多個客戶端的請求。 ?問:Servlet是線程安全的嗎?如何保證線程安全?
(1)在Servlet里負責保存上下文的ServletContext和負責處理Session對象的HttpSession是線程不安全的。處理請求的ServletRequest是線程安全的。
(2)保證線程安全的做法:①SingleThreadModel接口(已棄用)②在Servlet中使用局部變量,保證有單屬于本Servlet的對象。③加鎖,形成互斥訪問。(很少用到)④用synchronized加以保護,但要盡量縮小保護的范圍。 ?
JavaBean的特征:
(1)JavaBean類必須具備一個沒有參數的構造函數。
(2)JavaBean內的屬性都應定義為私有的,這些屬性通過get和set方法被外部調用。 ?
MVC架構的工作流程:
View發起請求,請求被Controller轉發給合適的處理程序,Model接收請求后,調用DAO層,得到結果返回給View。 ?
問:Java Servlet中forward和redirect有何區別?
在設計Web應用時,需要把一個系統進行結構化設計,即按照模塊化進行劃分,讓不同的Servlet實現不同的功能。
例如讓其中一個Servlet負責接收用戶的請求,另一個Servlet負責處理用戶的請求。
為了實現這種程序的模塊化,就需要保證在不同的Servlet之間可以相互跳轉,而Servlet中主要有兩種跳轉的方式:forward方式和redirect方式。forward:服務器內部的重定向,服務器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,而客戶端并不知道,因此在客戶端的地址欄中不會顯示轉向后的地址,還是原來的地址。redirect:客戶端的重定向,是完全的跳轉,即客戶端瀏覽器會獲取到跳轉后的地址,然后重新發送請求,因此瀏覽器中顯示跳轉后的地址。
同時,這種方式比forward方式多了一次網絡請求,因此效率要低于forward方式。 問:Servlet有哪些方法可以實現頁面的跳轉?
在web應用服務中,經常會面對不同SERVLET之間的跳轉,目前我們可以通過以下兩種方式實現:
1.RequestDispatcher.forward()
2.ServletResponse.sendRedirect() ?
問:GET和POST的區別
GET產生一個TCP數據包,瀏覽器會把http header和data一并發送出去,服務器響應200(返回數據);
POST產生兩個TCP數據包,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。GET在瀏覽器回退時是無害的,POST會再次提交請求。GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。GET請求只能進行url編碼,而POST支持多種編碼方式。GET請求參數會被完整保留在瀏覽器歷史記錄里,而POST中的參數不會被保留。GET只接受ASCII字符的參數的數據類型,而POST沒有限制 Servlet生命周期:
①首先加載servlet的class,實例化servlet。
②然后初始化servlet調用init()的方法,接著調用服務的service的方法處理doGet和doPost方法。
③最后是我的還有容器關閉時候調用destroy 銷毀方法。
?
轉載于:https://www.cnblogs.com/strong-FE/p/11374143.html
總結
以上是生活随笔為你收集整理的JSP+Servlet+JavaBean的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 摩尔庄园手游精灵怎么放生?
- 下一篇: 鼋头渚可以带狗狗吗