- 相關(guān)推薦
JSP實習(xí)報告
JSP實習(xí)報告
實習(xí)內(nèi)容:JSP
實習(xí)目的:通過JSP的學(xué)習(xí),可以獨立的編寫留言板、上傳規(guī)格、考試系統(tǒng)、連接SQLserver數(shù)據(jù)庫、以及怎么樣配置運行jsp服務(wù)器
實習(xí)要求:懂得什么是JSP,運行原理,它的基本語法,內(nèi)置對象,服務(wù)端的輸出緩沖區(qū),文件流的讀取,jsp數(shù)據(jù)庫如:jdbc、odbc、mysql、oracle等,jsp與javaBeans,java Servlet等
JSP是Java Server Pages的縮寫,是由Sun公司倡導(dǎo)、許多公司參與,于1999年推出的一種動態(tài)網(wǎng)頁技術(shù)標準。JSP是一個建立安全的、夸平臺的先進動態(tài)網(wǎng)頁技術(shù)。
一、JSP工作原理
在一個JSP文件第一次被請求時,JSP引擎把該JSP文件轉(zhuǎn)換成為一個servlet。而這個引擎本身也是一個servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。
JSP引擎先把該JSP文件轉(zhuǎn)換成一個Java源文件,在轉(zhuǎn)換時如果發(fā)現(xiàn)jsp文件有任何語法錯誤,轉(zhuǎn)換過程將中斷,并向服務(wù)端和客戶端輸出出錯信息;如果轉(zhuǎn)換成功,
JSP引擎用javac把該Java源文件編譯成相應(yīng)的class文件。然后創(chuàng)建一個該SERVLET的實例,該SERVLET的jspInit()方法被執(zhí)行,jspInit()方法在servlet的生命周期中只被執(zhí)行一次。然后jspService()方法被調(diào)用來處理客戶端的請求。對每一個請求,JSP引擎創(chuàng)建一個新的線程來處理該請求。如果有多個客戶端同時請求該JSP文件,則JSP引擎會創(chuàng)建多個線程。每個客戶端請求對應(yīng)一個線程。以多線程方式執(zhí)行可大大降低對系統(tǒng)的資源需求,提高系統(tǒng)的并發(fā)量及響應(yīng)時間.但應(yīng)該注意多線程的編程限制,由于該servlet始終駐于內(nèi)存,所以響應(yīng)是非常快的。
如果.jsp文件被修改了,服務(wù)器將根據(jù)設(shè)置決定是否對該文件重新編譯,如果需要重新編譯,則將編譯結(jié)果取代內(nèi)存中的servlet,并繼續(xù)上述處理過程。
雖然JSP效率很高,但在第一次調(diào)用時由于需要轉(zhuǎn)換和編譯而有一些輕微的延遲。
此外,如果在任何時候如果由于系統(tǒng)資源不足的原因,JSP引擎將以某種不確定的方式將servlet從內(nèi)存中移去。當這種情況發(fā)生時jspDestroy()方法首先被調(diào)用,
然后servlet實例便被標記加入"垃圾收集"處理。
jspInit()及jspDestory()格式如下:可在jspInit()中進行一些初始化工作,如建立與數(shù)據(jù)庫的連接,或建立網(wǎng)絡(luò)連接,從配置文件中取一些參數(shù)等,在jspDestory()中釋放相應(yīng)的資源。
二、服務(wù)端的輸出緩沖區(qū)
缺省情況下:服務(wù)端要輸出到客戶端的內(nèi)容,不直接寫到客戶端,而是先寫到一個輸出緩沖區(qū)中.只有在下面三中情況下,才會把該緩沖區(qū)的內(nèi)容輸出到客戶端上:
該JSP網(wǎng)頁已完成信息的輸出
輸出緩沖區(qū)已滿
JSP中調(diào)用了out.flush()或response.flushbuffer()
輸出緩沖區(qū)的大小可以用:或response.setBufferSize()設(shè)置,如下:
設(shè)置輸出緩沖區(qū)的大小為1KB;騬esponse.setBufferSize(1);
設(shè)置輸出緩沖區(qū)的大小為0,即不緩沖;騬esponse.setBufferSize(0);
用response.getBufferSize()或out.getBufferSize()可取的輸出緩沖區(qū)的大小,單位為字節(jié).
用response.isCommitted()可檢查看服務(wù)端是否已將數(shù)據(jù)輸出到客戶端.
如果返回值是TRUE則已將數(shù)據(jù)輸出到客戶端,是FALSE則還沒有.
三、服務(wù)端輸出重定向
有以下3種方法可以做到輸出重定向:
RESPONSE.SETREDERECT("URL")
該方法通過修改HTTP協(xié)議的HEADER部分,對瀏覽器下達重定向指令的,使瀏覽器顯示重定向網(wǎng)頁的內(nèi)容.
response.sendRedirect("http://localhost:7001/");
下面的方法也能改變HTTP
HEADER屬性,它的原理和
1
是一樣的.
采用
該方法是利用服務(wù)器端先將數(shù)據(jù)輸出到緩沖區(qū)的機制,在把緩沖區(qū)的內(nèi)容發(fā)送到客戶端之前,原來的不發(fā)送,改為發(fā)送該頁面的內(nèi)容,如果在之前有很多輸出,前面的輸出已使緩沖區(qū)滿,將自動輸出到客戶端,那么該語句將不起作用,這一點應(yīng)該特別注意.
如下面的例子中(1)會輸出index.html的內(nèi)容,2
不會輸出index.html的內(nèi)容,而是輸出out.println("@@@@@@@@@@@@@@@@@");
中的內(nèi)容,并且在服務(wù)端會拋出:java.lang.IllegalStateException:
Response
already
committed
異常,但客戶端沒有任何錯誤輸出。
(1)
【JSP實習(xí)報告】相關(guān)文章:
如何用JSP開發(fā)數(shù)據(jù)庫系統(tǒng)04-28
實習(xí)報告 -實習(xí)報告08-13
IT實習(xí)報告 -實習(xí)報告10-04
實習(xí)報告格式 -實習(xí)報告08-12
實習(xí)報告總結(jié) -實習(xí)報告07-08
實習(xí)報告范文 -實習(xí)報告08-28
金工實習(xí)報告 -實習(xí)報告06-10
測量實習(xí)報告 -實習(xí)報告08-04