JSP學習筆記(一)
JSP頁面結構組成
一、HTML標記符
二、變數和方法宣告
三、Java程式片
四、Java表示式
五、JSP標記
六、註釋
一、HTML標記符
省略不講
二、變數和方法宣告
1.在<%! %>
之間宣告變數和方法
2.宣告的變數對整個JSP頁面內部有效
(JSP引擎為每個使用者啟動一個執行緒,並且這些執行緒共享JSP頁面的成員變數,這些變數佔有記憶體空間直到JSP引擎關閉才釋放) (可以用於登記網站訪問人數:您是第xx個訪問本站的使用者等)
3.定義的方法對整個JSP頁面有效
4.如果不希望多個使用者同時呼叫方法產生不良的影響,可以使用synchronized修飾方法,即:
<%! int count = 0;
synchronized void setCount() {
count++;
}
%>
如果兩個執行緒同時呼叫count++的話,它自增完後先後進行了賦值,於是做了兩次把count=1賦給count,最後count還是1而不是2,而使用synchronized修飾後,其他執行緒必須等待,直到正在呼叫方法的執行緒執行完才可以呼叫該方法
三.Java程式片
1.Java程式片寫在<% %>
之間
2.程式片按順序執行,程式片中的變數為區域性變數
即每個使用者執行緒對區域性變數的操作不會影響到其他使用者執行緒
四.Java表示式
1.<%=x %>
2.在JSP中表達式的值為字串,因為由容器將表示式結果轉換成字串後才發給使用者瀏覽器
五·.JSP標記
1.page指令標記
page指令標記用來定義整個JSP頁面的一些屬性和這些屬性的值(對整個JSP頁面有效)
[1]contentType屬性
Tomcat需要負責告知使用者瀏覽器用什麼樣的方式來處理所接受到的資訊,如:
<% @ page contentType = "text/html;charset = UTF-8"%>
(用html解析器)
<% @ page contentType = "application/msword"%>
注意:contentType只允許在一個JSP頁面中使用一次,不能重複指定不同的屬性值
[2]language屬性
目前只能取Java
[3]import屬性
匯入Java類
[4]session屬性
設定是否需要用session,預設是true
[5]buffer屬性
<% @ page buffer = "24KB"%>
[6]autoFlush屬性
是否在緩衝區滿時自動重新整理緩衝區
[7]isThreadSafe屬性
設定是否可以多執行緒訪問,預設true
[8]info屬性
info的值是一個字串,其目的是準備一個常用但可能要經常修改的字串,如:
<% @ page info = "abc" %>
可以使用getServletInfo來獲取info的值
2.include指令標記
[1]<% @ include file = "url" %>
[2]作用是在出現該指令的位置靜態插入一個檔案
所謂靜態插入,就是將當前JSP頁面和插入的檔案合併成一個新的JSP頁面。因此要保證新合成的頁面符合JSP的語法規則,如一個的contentType值是application,另一個是text那麼合併後就會因為重複設定了不同的屬性值而出現語法錯誤
3.include動作標記
[1]<jsp:include page = "url"/>
[2]include動作標記是在JSP執行時才處理檔案,而include指令是在編譯階段就處理的檔案
4.param動作標記
<jsp: param name = "" value = "">
與jsp:include一起使用時可以將值傳遞到要載入的檔案中去
5.forward動作標記
[1]<jsp:forward page = "url"/>
[2]從該指令處停止當前頁面的執行,轉向page指定的頁面
[3]轉向後,瀏覽器位址列仍然是轉向前的地址,使用者重新整理後會重新執行轉向前的JSP頁面
6.註釋
註釋分兩種:
1.HTML註釋
<!-- 註釋內容 -->
JSP引擎把HTML註釋交給使用者,因此使用者通過瀏覽器檢視JSP原始檔可以看到
2.JSP註釋
<%-- 註釋內容 --%>
JSP引擎忽略JSP註釋,即在編譯JSP頁面時忽略JSP註釋,所有使用者看不到