【传智播客】Javaweb程序设计任务教程 黑马程序员 第六章 课后答案
所有章節答案合集——>傳送門
【測一測】
學習完前面的內容,下面來動手測一測吧,請思考以下問題:
1、請簡述JSP的運行原理。
1、請簡述JSP中的9個隱式對象。
2、請使用include標簽編寫兩個JSP頁面,要求:訪問b.jsp頁面時先輸出b.jsp頁面的內容,等待5秒,再輸出a.jsp頁面中的內容。
3、請在web.xml文件中使用元素為整個Web應用程序設置錯誤處理頁面。已知:處理狀態碼為404的頁面為404.jsp, 處理狀態碼為500的頁面為500.jsp。
【答案】
1、JSP的運行原理如下:
1)客戶端發出請求,請求訪問JSP文件。
2)JSP容器先將JSP文件轉換成一個Java源文件(Java Servlet源程序),在轉換過程中,如果發現JSP文件中存在任何語法錯誤,則中斷轉換過程,并向服務端和客戶端返回出錯信息。
3)如果轉換成功,則JSP容器將生成的Java源文件編譯成相應的字節碼文件*.class。該class文件就是一個Servlet,Servlet容器會像處理其他Servlet一樣來處理它。
4)由Servlet容器加載轉換后的Servlet類(.class文件)創建一個該Servlet(JSP頁面的轉換結果)實例,并執行Servlet的jspInit()方法。jspInit()方法在Servlet的整個生命周期中只會執行一次。
5)執行jspService()方法來處理客戶端的請求。對于每一個請求,JSP容器都會創建一個新的線程來處理它。如果多個客戶端同時請求該JSP文件,則JSP容器也會創建多個線程,使得每一個客戶端請求都對應一個線程。JSP運行過程中采用的這種多線程的執行方式可以極大地降低對系統資源的需求,提高系統的并發量并縮短響應時間。需要注意的是,由于第(4)步生成的Servlet是常駐內存的,所以響應速度非常快。
6)如果JSP文件被修改了,則服務器將根據設置決定是否對該文件重新編譯,如果需要重新編譯,則使用重新編譯后的結果取代內存中常駐的Servlet,并繼續上述處理過程。
7)雖然JSP效率很高,但在第一次調用的時候往往由于需要轉換和編譯,所以會產生一些輕微的延遲。此外,由于系統資源不足等原因,JSP容器可能會以某種不確定的方式將Servlet從內存中移除,發生這種情況時首先會調用jspDestroy()方法,然后Servlet實例會被加入“垃圾收集”處理。
8)當請求處理完成后,響應對象由JSP容器接收,并將HTML格式的響應信息發送回客戶端。
2、JSP2.0規范中提供了9個隱式(內置)對象,它們是JSP默認創建的,可以直接在JSP頁面中使用。這9個隱式對象的名稱和作用如下:
1)out:主要用于頁面輸出;
2)request:用于得到用戶請求信息;
3)response:表示服務器向客戶端的回應信息;
4)config:包含服務器的配置信息,可以使用該對象獲得Servlet初始化參數;
5)session:主要用來保存用戶信息;
6)application:包含所有用戶的共享信息;
7)page:指當前頁面轉換后的Servlet類的實例;
8)pageContext:表示JSP頁面容器,它提供了對JSP頁面內所有的對象及名字空間的訪問;
9)exception::表示JSP頁面所發生的異常,在錯誤頁中才起作用。
3、該功能的實現代碼如下:
(1)a.jsp文件如下:
(2)b. jsp文件如下:
<%@ page contentType="text/html;charset=UTF-8"%> 這個是b.jsp頁面<br /> <jsp:include page="a.jsp" flush="true" />4、web.xml文件代碼如下:
<error-page><error-code>404</error-code><location>/404.jsp</location></error-page><error-page><error-code>500</error-code><location>/500.jsp</location></error-page>整理不易, 如果喜歡的話,還請給博主一個贊哦,讓更多的人看到這篇文章
總結
以上是生活随笔為你收集整理的【传智播客】Javaweb程序设计任务教程 黑马程序员 第六章 课后答案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【传智播客】JavaWeb程序设计任务教
- 下一篇: 【传智播客】JavaWeb程序设计任务教