jsp有三大指令梭域,分別為:page,include,taglib
page:<%@ 屬性1=屬性值 屬性2=屬性值 ......%>
- pageEncoding-->當(dāng)前頁面編碼格式 在服務(wù)器將jsp編譯成.java文件時使用的編碼格式骗绕;
- contentType:表示一個響應(yīng)頭。類似于response.setContentType("text/html;charset=utf-8");
注意:
??1.如果兩個屬性中出現(xiàn)一個屬性遮精,則另一了未出現(xiàn)的屬性設(shè)置的值與已經(jīng)設(shè)置的值保持一致;
??2.如果兩個屬性都沒有設(shè)置,則默認(rèn)職位iso败潦; - import:導(dǎo)包操作本冲,類似java導(dǎo)包
- errorPage:如果當(dāng)前頁面出現(xiàn)錯誤,指定跳轉(zhuǎn)的頁面
- isErrorPage:指定當(dāng)前頁面是否為處理錯誤的頁面劫扒,當(dāng)該屬性為true檬洞,這個頁面會設(shè)置狀態(tài)碼500,且當(dāng)前頁面可以使用jsp中9大內(nèi)置對象中的exception;
??web.xml文件中配置錯誤頁面:
??標(biāo)簽<error-page>的配置方式
????1.<error-code>和<location>
????2.<exception-type>和<location> - autoFlush和buffer:
??autoFlush:指定jsp頁面輸出流緩沖區(qū)滿時是否自動刷新沟饥!默認(rèn)為true添怔,如果為false時,在緩沖區(qū)滿時會拋出異常贤旷;
??buffer:指定緩沖區(qū)默認(rèn)大小8k广料,通常不需要修改; - isELIgnored:是否忽略el表達(dá)式幼驶,默認(rèn)false艾杏;
基本沒有用的屬性:
- language:當(dāng)前jsp頁面變以后的語言
- info:信息;
- isThreadSafe:當(dāng)前jsp是否支持并發(fā)訪問
- session:當(dāng)前頁面是否支持session盅藻,如果為false购桑,當(dāng)前頁面沒有session內(nèi)置對象汹族;
- extends:讓jsp生成的servlet去繼承指定的類;
include:靜態(tài)包含
??<%@inculde%> 它是在jsp編譯成.java文件是完成的其兴,引入的多個jsp文件最終在編譯時生成一個servlet文件顶瞒,然后再生成一個.class文件
??同樣是包含,在處理轉(zhuǎn)發(fā)時存在動態(tài)包含(留頭不留尾)元旬,requset.getRequestDispatcher()的include方法榴徐,是涉及到兩個servlet,在運(yùn)行時候?qū)?nèi)容進(jìn)行合并匀归;
??踩坑系列:在jsp頁面中使用inclide標(biāo)簽時坑资,file屬性為文件的真實路徑,不能是jsp中代碼的變量穆端;
??原因:在jsp靜態(tài)包含(include)中袱贮,在編譯的時候是將兩個jsp頁面進(jìn)行合并最終生成一個servlet.java文件,然后對應(yīng)生成.class文件体啰,這個從jsp->.class過程中攒巍,只進(jìn)行了代碼的編譯操作;如果file的屬性值變?yōu)閖sp代碼的變量荒勇,則這個變量是在編譯之后柒莉,運(yùn)行程序之后執(zhí)行的,所以在file屬性為變量時沽翔,編譯過程不知道變量的具體值是什么兢孝,從而發(fā)生錯誤;
??用途:增加代碼的可重用性仅偎。
taglib:導(dǎo)入標(biāo)簽庫:<%@taglib prefix="****" uri="*****"%>
- prefix:指定標(biāo)簽庫在本頁面中使用的前綴名稱跨蟹,自定義名稱
- uri:指定標(biāo)簽庫的位置