-
JSP是Servlet技術的擴展,本質上就是Servlet的簡易方式。JSP編譯后是“類servlet”。
-
Servlet和JSP最主要的不同點在於:Servlet的應用邏輯是在Java文件中,並且完全從表示層中的HTML里分離開來。而JSP的情況是Java和HTML可以組合成一個擴展名為.jsp的文件。
-
JSP側重於視圖,Servlet主要用於控制邏輯。
SP是如何被執行的?執行效率比SERVLET低嗎?
-
當客戶端向一個jsp頁面發送請求時,Web Container將jsp轉化成servlet的源代碼(只在第一次請求時),然后編譯轉化后的servlet並加載到內存中執行,執行的結果response到客戶端
-
jsp只在第一次執行的時候會轉化成servlet,以后每次執行,web容器都是直接執行編譯后的servlet,所以jsp和servlet只是在第一次執行的時候不一樣,jsp慢一點,以后的執行都是相同的
如何避免jsp頁面自動生成session對象?為什么要這么做?
可以使用頁面指令顯式關掉,代碼如下:
<%@ page session="false" %>
jsp的缺點?
-
不好調試
-
與其他腳本語言的交互(可讀性差)
說出Servlet和CGI的區別?
-
Servlet處於服務器進程中,只會有一個servlet實例,每個請求都會產生一個新的線程,而且servlet實例一般不會銷毀
-
CGI:來一個請求就創建一個進程,用完就銷毀,效率低於servlet
簡述JSP的設計模式。
在Web開發模式中,有兩個主要的開發結構,稱為模式一(Mode I)和模式二(Mode II)
首先我們來理清一些概念吧:
-
DAO(Data Access Object):主要對數據的操作,增加、修改、刪除等原子性操作。
-
Web層:界面+控制器,也就是說JSP【界面】+Servlet【控制器】
-
Service業務層:將多個原子性的DAO操作進行組合,組合成一個完整的業務邏輯
-
控制層:主要使用Servlet進行控制
-
數據訪問層:使用DAO、Hibernate、JDBC技術實現對數據的增刪改查
-
JavaBean用於封裝數據,處理部分核心邏輯,每一層中都用到!
模式一指的就是在開發中將顯示層、控制層、數據層的操作統一交給JSP或者JavaBean來進行處理!
模式一有兩種情況:
完全使用JSP做開發:
-
優點:
-
開發速度賊快,只要寫JSP就行了,JavaBean和Servlet都不用設計!
-
小幅度修改代碼方便,直接修改JSP頁面交給WEB容器就行了,不像Servlet還要編譯成.class文件再交給服務器!【當然了,在ide下開發這個也不算是事】
-
缺點:
-
程序的可讀性差、復用性低、代碼復雜!什么jsp代碼、html代碼都往上面寫,這肯定很難閱讀,很難重用!
使用JSP+JavaBean做開發:
-
優點:
-
程序的可讀性較高,大部分的代碼都寫在JavaBean上,不會和HTML代碼混合在一起,可讀性還行的。
-
可重復利用高,核心的代碼都由JavaBean開發了,JavaBean的設計就是用來重用、封裝,大大減少編寫重復代碼的工作!
-
缺點:
-
沒有流程控制,程序中的JSP頁面都需要檢查請求的參數是否正確,異常發生時的處理。顯示操作和業務邏輯代碼工作會緊密耦合在一起的!日后維護會困難
Mode II 中所有的開發都是以Servlet為主體展開的,由Servlet接收所有的客戶端請求,然后根據請求調用相對應的JavaBean,並所有的顯示結果交給JSP完成!,也就是俗稱的MVC設計模式!

MVC設計模式:
-
顯示層(View):主要負責接受Servlet傳遞的內容,調用JavaBean,將內容顯示給用戶
-
控制層(Controller):主要負責所有用戶的請求參數,判斷請求參數是否合法,根據請求的類型調用JavaBean,將最終的處理結果交給顯示層顯示!
-
模型層(Mode):模型層包括了業務層,DAO層。
總結
-
(1)ModelI,JSP+JavaBean設計模式。
-
(2)ModelII,MVC設計模式。
