国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

新手的JSP學習心得之(一)

2024-09-05 00:17:20
字體:
來源:轉載
供稿:網(wǎng)友
一、JSP工作原理 

在一個JSP文件第一次被請求時,JSP引擎把該JSP文件轉換成為一個servlet。而這個引擎本身也是一個servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 JSP引擎先把該JSP文件轉換成一個Java源文件,在轉換時如果發(fā)現(xiàn)jsp文件有任何語法錯誤,轉換過程將中斷,并向服務端和客戶端輸出出錯信息;如果轉換成功, JSP引擎用javac把該Java源文件編譯成相應class文件。然后創(chuàng)建一個該SERVLET實例,該SERVLETjspInit()方法被執(zhí)行,jspInit()方法在servlet生命周期中只被執(zhí)行一次。然后jspService()方法被調用來處理客戶端請求。對每一個請求,JSP引擎創(chuàng)建一個新線程來處理該請求。如果有多個客戶端同時請求該JSP文件,則JSP引擎會創(chuàng)建多個線程。每個客戶端請求對應一個線程。以多線程方式執(zhí)行可大大降低對系統(tǒng)資源需求,提高系統(tǒng)并發(fā)量及響應時間.但應該注意多線程編程限制,由于該servlet始終駐于內存,所以響應是非常快。 如果.jsp文件被修改了,服務器將根據(jù)設置決定是否對該文件重新編譯,如果需要重新編譯,則將編譯結果取代內存中servlet,并繼續(xù)上述處理過程。 雖然JSP效率很高,但在第一次調用時由于需要轉換和編譯而有一些輕微延遲。 此外,如果在任何時候如果由于系統(tǒng)資源不足原因,JSP引擎將以某種不確定方式將servlet從內存中移去。當這種情況發(fā)生時jspDestroy()方法首先被調用, 然后servlet實例便被標記加入"垃圾收集"處理。 jspInit()及jspDestory()格式如下:可在jspInit()中進行一些初始化工作,如建立與數(shù)據(jù)庫連接,或建立網(wǎng)絡連接,從配置文件中取一些參數(shù)等,在jspDestory()中釋放相應資源。 
<%! 
public void jspInit() 

System.out.println("jspinit"); 
} %> 

<%! 
public void jspDestory() 

System.out.println("jspDestory"); 

%> 
二、服務端輸出緩沖區(qū) 

缺省情況下:服務端要輸出到客戶端內容,不直接寫到客戶端,而是先寫到一個輸出緩沖區(qū)中.只有在下面三中情況下,才會把該緩沖區(qū)內容輸出到客戶端上: 
該JSP網(wǎng)頁已完成信息輸出 
輸出緩沖區(qū)已滿 
JSP中調用了out.flush()或response.flushbuffer() 
輸出緩沖區(qū)大小可以用:<%@page buffer="none"|"nkb"%>或response.setBufferSize()設置,如下: 設置輸出緩沖區(qū)大小為1KB。<%@page buffer="1kb"%>或response.setBufferSize(1); 
設置輸出緩沖區(qū)大小為0,即不緩沖。<%@page buffer="none" %>或response.setBufferSize(0); 
用response.getBufferSize()或out.getBufferSize()可取輸出緩沖區(qū)大小,單位為字節(jié). 用response.isCommitted()可檢查看服務端是否已將數(shù)據(jù)輸出到客戶端. 如果返回值是TRUE則已將數(shù)據(jù)輸出到客戶端,是FALSE則還沒有. 
三、服務端輸出重定向

有以下3種方法可以做到輸出重定向: 
RESPONSE.SETREDERECT("URL") 該方法通過修改HTTP協(xié)議HEADER部分,對瀏覽器下達重定向指令,使瀏覽器顯示重定向網(wǎng)頁內容. response.sendRedirect("http://localhost:7001/index.html"); 
下面方法也能改變HTTP HEADER屬性,它原理和 1 是一樣. 
<% 
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); 
String newLocn="/index.html"; 
response.setHeader("Location",newLocn); 
% > 
采用<jsp:forword> 該方法是利用服務器端先將數(shù)據(jù)輸出到緩沖區(qū)機制,在把緩沖區(qū)內容發(fā)送到客戶端之前,原來不發(fā)送,改為發(fā)送該頁面內容,如果在<jsp:forword>之前有很多輸出,前面輸出已使緩沖區(qū)滿,將自動輸出到客戶端,那么該語句將不起作用,這一點應該特別注意. 如下面例子中(1)會輸出index.html內容,2 不會輸出index.html內容,而是輸出out.println("@@@@@@@@@@@@@@@@@"); 中內容,并且在服務端會拋出:java.lang.IllegalStateException: Response already committed 異常,但客戶端沒有任何錯誤輸出。 </jsp:forword></jsp:forword> 

共2頁上一頁12下一頁
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 凤阳县| 浠水县| 仙桃市| 庆城县| 阿合奇县| 蒙山县| 隆回县| 成安县| 滕州市| 昂仁县| 东乡| 凤庆县| 沙坪坝区| 南雄市| 石台县| 铁岭市| 柯坪县| 界首市| 宁蒗| 中西区| 金阳县| 宝清县| 沭阳县| 武城县| 水城县| 尼勒克县| 三亚市| 旌德县| 天台县| 屏东市| 新晃| 二连浩特市| 图木舒克市| 麻江县| 盐津县| 安徽省| 台北县| 新蔡县| 佛教| 洪湖市| 澄江县|