JSP基礎語法

1.JSP註釋

顯式註釋:客戶端可以看見;
隱式註釋:客戶端無法看見。
顯式註釋:<!—註釋-->
隱式註釋:

//註釋    單行註釋/*註釋*/  多行註釋
③<%--註釋--%>  JSP註釋

2.Scriptlet(腳本小程序)代碼

①<% %> 定義局部變量、編寫語句等
②<%!%>定義全局變量、方法、類
注:儘量不要用,需要時可通過JavaBean調用
③<%= %> 輸出一個變量或一個具體的常量(表達式輸出)
注:以後輸出儘量不要使用out.println()輸出,而使用表達式輸出。

3.scriptlet標籤

出於對<% %>出現過多的混亂,提供了scriptlet標籤來完成同樣的功能。
格式:

<jsp:scriptlet>
        java scriptlet代碼
</jsp:scriptlet>

使用其唯一好處是更加美觀一些,但要注意標籤指令必須完結。

4.page指令

使用此指令可以定義一個JSP頁面的相關屬性,包括設置的MIME類型、定義需要導入的包、錯誤頁的指定等。
(1)格式:

<%@page 屬性=”內容”%>

(2)常用屬性
屬性 定義
1、language=”ScriptLanguage” 指定JSP Container用什麼語言來編譯,目前只支持JAVA語言。默認爲JAVA
2、extends=”className” 定義此JSP網頁產生的Servlet是繼承哪個
3、import=”importList” 定義此JSP網頁要使用哪些Java API
4、session=”true|false” 決定此頁面是否使用session對象。默認爲true
5、buffer=”none|size in kb” 決定輸出流(Input stream)是否又緩衝區。默認爲8kb
6、autoFlush=”true|false” 決定輸出流的緩衝區慢了後是否需要自動清除,緩衝區慢了後會產生異常錯誤(Exception).默認爲true
7、isThreadSafe=”true|false” 是否支持線程。默認爲true
8、errorPage=”url” 如果此頁發生異常,網頁會重新指向一個url
9、isErrorPage=”true|false” 表示此頁面是否爲錯誤處理頁面。默認爲false
10、contentType=”text/html;charset=gb2312” 表示MIME類型和JSP的編碼方式。
11、pageEncoding=”ISO-8859-1” 字符編碼方式。默認爲左側,但要是中文要設置爲pageEncoding=”GBK”
12、isELLgnored=”true|false” 表示是否在此JSP頁面中EL表達式。true則忽略,反之false則支持。默認爲false

常用的page指令有8個:

1.<%@page language="java"%>設置jsp中用到的語言,用到的是java,也是目前唯一有效的設定
2.<%@page extends="mypackage.myclass"%>設置目前jsp要繼承的父類,一般不需要設置,在默認情況下,jsp頁面默認的父類是HttpJspBase。
3.<%@page import="java.sql.*"% > jsp頁面所用到的類
4.<%@page errorPage="error.jsp"%> 設置該jsp頁面出現異常時所要轉到的頁面,如果沒設定,容器將使用當前的頁面顯示錯誤信息
5.<%@page isErrorPage="true"%> 設置該jsp頁面是否作爲錯誤顯示頁面,默認是false,如果設置爲true,容器則會在當前頁面生成一個exception對象,和4搭配使用
6.<%@page contentType="text/html;charset=gb2312"%> 設置頁面文件格式和編碼方式
7.<%@page isThreadSafe="true"% > 設置容器以多線程還是單線程運行該jsp頁面,默認是true,是多線程。設置爲false,則以單線程的方式運行該jsp頁面
8.<%@page session="true"% > 設置該jsp頁面是否可以用到session對象(jsp內置對象,爲web容器創建),默認是true,能用到session.設置爲false,則用不到

注:只有import指令可以重複出現多次,而對於其他屬性只能出現一次。

①設置頁面的MIME

<%@page language=”java” contentType=”text/html;charset=GBK”%>

注:可以在Tomcat安裝目錄/conf/web.xml中查詢到所有已知的MIME類型。
② 設置文件編碼
pageEncoding指的是JSP文件本身的編碼,而contentType中的charset指的是服務器發送給客戶端的內容編碼。

<%@page language=”java” contentType=”text/html” pageEnconding=”GBK”%>

③錯誤頁的設置
要想完成錯誤頁的操作,一定要滿足一下兩個條件:
1)指的錯誤出現時的跳轉頁,通過errorPage屬性指定;
2)錯誤處理頁必須有明確的標識,通過isErrorPage指定。
即如果一個JSP頁面運行時出現了錯誤,會通過errorPage指定的頁面進行跳轉,被跳轉的頁面中必須將isErrorPage的內容設置爲true。

會出現錯誤的頁:

<%@page language=”java” contentType=”text/html” pageEnconding=”GBK”%>
<%@page errorPage=”error.jsp”%>

錯誤處理頁:

<%@page language=”java” contentType=”text/html” pageEnconding=”GBK”%>
<%@page isErrorPage=”true”%>

注:錯誤頁的跳轉屬於服務器端的跳轉。
服務器端跳轉:內容顯示雖然改變了,但是地址欄並沒有改變。(在整個操作中,客戶端對服務器只發送了一次請求,服務器對客戶端也只回應了一次)
客戶端跳轉:內容顯示改變的同時,頁面的地址欄也發生改變。

以上的錯誤頁是在每一個JSP頁面中指定,當然也可以在整個虛擬目錄中指定全局的錯誤處理,此時可以通過修改web.xml文件,在其中加入錯誤頁的操作。
全局的錯誤處理可以處理兩種類型的錯誤,一種是HTTP代碼的錯誤,如404或500;還有一種是異常的錯誤,如NullPointerException等。
修改web.xml文件加入錯誤處理:

<error page>
<error-code>500</error-code>
<location>/ch05/error.jsp</location>
</error page>
<error page>
<error-code>404</error-code>
<location>/ch05/error.jsp</location>
</error page>
<error page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/ch05/error.jsp</location>
</error page>

注:此時跳轉仍是服務器端的跳轉。
④數據庫連接操作

<%@ contentType=”text/html” pageEnconding=”GBK”%>
<%@ page import=”java.sql.*”%>

5.包含指令(include)

靜態包含和動態包含兩種方式。
(1)靜態包含:在JSP編譯時插入一個包含文本或代碼的文件,包含的文件可以是JSP文件、HTML文件、文本文件或是一段Java程序。
語法格式:

<%@ include file=”要包含的文件路徑”%>

屬於先包含,後再將全部的代碼進行集中的編譯處理。
(2)動態包含:使用指令可以完成動態包含的操作,此時可以動態的區分被包含的頁面是靜態還是動態。如果是靜態頁面,則和靜態頁面一樣,然後將內容包含進來處理;而如果被包含的動態頁面,則可以先進行動態的處理,然後再將處理後的結果包含進來。
語法格式:

不傳遞參數:
<jsp:include page=”{要包含的文件路徑|<%=表達式%>}”flush=”true|false”/>

傳遞參數:
<jsp:include page=”{要包含的文件路徑|<%=表達式%>}”flush=”true|false”>
<jsp:param name=”參數名稱”value=”參數內容”/>
…可傳遞多個參數
</jsp:include>

flush屬性中flase表示這個網頁完全被讀進來以後才輸出。在每一個JSP的內部都會有一個buffer,所以如果是true,當buffer滿了就輸出,一般此屬性都會設置成true,當然默認值就是true。
注:標籤指令必須完結。

(3)關於動態包含和靜態包含的使用建議:
開發中使用動態包含更好。
靜態包含的操作屬於先包含後處理,而動態包含如果被包含的頁面是動態的,則屬於先處理後包含。

6.跳轉指令

開發中可以使用指令,將一個用戶的請求從一個頁面傳遞到另外一個頁面,即完成頁面的跳轉。
語法格式:

不傳遞參數:
<jsp:forward page=”{要包含的文件路徑|<%=表達式%>}”/>

傳遞參數:
<jsp:forward page=”{要包含的文件路徑|<%=表達式%>}” >
<jsp:param name=”參數名稱”value=”參數內容”/>
…可傳遞多個參數
</jsp:forward>

注:此時的跳轉仍屬於服務器端跳轉。

7.建議

在開發中儘量分開編寫動態頁和靜態頁,這樣可以提升程序的運行速度。
動態請求和靜態請求的處理流程不一樣,靜態請求不需要經過容器,所以把沒有Java代碼的頁面寫成靜態頁面的後綴,可以適當提升運行速度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章