標籤:param code 共用資料 產生 end 服務 color info 變化
JSP三大指令
一個jsp頁面中,可以有0~N個指令的定義!
1. page --> 最複雜:<%@page language="java" info="xxx"...%>
* pageEncoding和contentType:
> pageEncoding:它指定當前jsp頁面的編碼,只要不說謊,就不會有亂碼!在伺服器要把jsp編譯成.java時需要使用pageEncoding!
> contentType:它表示添加一個回應標頭:Content-Type!等同與response.setContentType("text/html;charset=utf-8");
> 如果兩個屬性只提供一個,那麼另一個的預設值為設定那一個。
> 如果兩個屬性都沒有設定,那麼預設為iso
* import:導包!可以出現多次
* errorPage和isErrorPage
> errorPage:當前頁面如果拋出異常,那麼要轉寄到哪一個頁面,由errorPage來指定
> isErrorPage:它指定當前頁面是否為處理錯誤的頁面!當該屬性為true時,這個頁面會設定狀態代碼為500!而且這個頁面可以使用9大內建對象中的exception!//異常
在web.xml配置異常
<error-page> <error-code>404</error-code> <location>/error/errorPage.jsp</location> </error-page> <error-page> <error-code>500</error-code> <location>/error/errorPage.jsp</location> </error-page> <error-page> <exception-type>java.lang.RuntimeException</exception-type> <location>/index.jsp</location> </error-page>
* autoFlush和buffer
> autoFlush:指定jsp的輸出資料流緩衝區滿時,是否自動重新整理!預設為true,如果為false,那麼在緩衝區滿時拋出異常!
> buffer:指定緩衝區大小,預設為8kb,通常不需要修改!
* isELIgnored:是否忽略EL運算式,預設值為false,不忽略,即支援!
*page的其他指令(基本沒用)
> language:指定當前jsp編譯後的語言類型,預設值為java。
> info:資訊!
> isThreadSafe:當前的jsp是否支援並發訪問!
> session:當前頁面是否支援session,如果為false,那麼當前頁面就沒有session這個內建對象!
> extends:讓jsp產生的servlet去繼承該屬性指定的類!
2. include --> 靜態包含
* 與RequestDispatcher的include()方法的功能相似!
* <%@include%> 它是在jsp編譯成java檔案時完成的!他們共同產生一個java(就是一個servlet)檔案,然後再產生一個class!
* RequestDispatcher的include()是一個方法,包含和被包含的是兩個servlet,即兩個.class!他們只是把響應的內容在運行時合并了!
* 作用:把頁面分解了,使用包含 的方式組合在一起,這樣一個頁面中不變的部分,就是一個獨立jsp,而我們只需要處理變化的頁面。
3. taglib --> 匯入標籤庫
* 兩個屬性:
> prefix:指定標籤庫在本頁面中的首碼!由我們自己來起名稱!
> uri: 指定標籤庫的位置!
> <%@taglib prefix="s" uri="/struts-tags"%> 首碼的用法<s:text>
====================================================================================================
九個內建對象
* out --> jsp的輸出資料流,用來向用戶端響應
* page --> 當前jsp對象! 它的參考型別是Object,即真身中有如下代碼:Object page = this;
* config --> 它對應真身中的ServletConfig對象!
* pageContext --> 一個頂9個!
* request --> HttpServletEequest
* response --> HttpServletResponse
* exception --> Throwable異常
* session --> HttpSession
* application --> ServletContext
1. pageContext
* 一個頂9個!
* Servlet中有三大域,而JSP中有四大域,它就是最後一個域對象!
> ServletContext:整個應用程式
> session:整個會話(一個會話中只有一個使用者)
> request:一個請求鏈!
> pageContext:一個jsp頁面!這個域是在當前jsp頁面和當前jsp頁面中使用的標籤之間共用資料!
> 域對象
> 代理其他域:pageContext.setAttribute("xxx", "XXX", PageContext.SESSION_SCOPE);
> 全域尋找:pageContext.findAttribute("xxx");//從小到大,依賴尋找! 依次是page, erqust, session, application
> 擷取其他8個內建對象。
===================================================================================================
xml的特殊配置
<Context reloadable="true">
在Context.xml中作用是自動載入Tomcat
JSP動作標籤
這些jsp的動作標籤,與html提供的標籤有本質的區別。
* 動作標籤是由tomcat(伺服器)來解釋執行!它與java代碼一樣,都是在伺服器端執行的!
* html由瀏覽器來執行!
* <jsp:forward>:轉寄!它與RequestDispatcher的forward方法是一樣的,一個是在Servlet中使用,一個是在jsp中使用!
* <jsp:include>:包含:它與RequestDispatcher的include方法是一樣的,一個是在Servlet中使用,一個是在jsp中使用!
><%@include>和<jsp:include>有什麼不同!
* <jsp:param>:它用來作為forward和include的子標籤!用來給轉寄或包含的頁面傳遞參數!//用requstde 的getParameter
javaWEB與JSP指令