輕量級JavaEE企業應用實戰(四)
JSP的7個動作指令
jsp:forward:執行頁面轉向,將請求的處理轉發到下一個頁面
jsp:param:用於傳遞引數,必須與其他支援引數的標籤一起使用
jsp:include:動態引入一個JSP頁面
jsp:plugin:用於下載JavaBean或Applet到客戶端執行
jsp:useBean:建立一個JavaBean例項
jsp:setProperty:設定JavaBean例項的屬性值
jsp:getProperty:輸出JavaBean例項的屬性值
forward指令
注:forward指令執行時,使用者請求的地址沒有發生改變,但頁面內容卻完全變為forward目標頁內容,同時客戶端的請求引數不會丟失
include指令
動態和靜態指令的區別:
1.靜態匯入是將被匯入的頁面的程式碼完全融入,成一個整體的Servlet;動態則是在Servlet中使用include方法來匯入頁面的內容
2.講臺匯入時被匯入頁面的編譯指令會其作用,而動態匯入時被匯入頁面的編譯指令失去作用,只是插入被匯入頁面的body內容
3.動態包含還可以增加額外的引數
<jsp:include page="forward-result.jsp">
<jsp:param name="age" value="32" />
</jsp:include>
forward和include比較:forward拿目標頁面代替原有頁面,include拿目標頁面插入原有頁面
useBean、setProperty、getProperty指令
useBean指令用於在JSP頁面初始化一個Java例項;
setProperty指令用於為JavaBean設定屬性值
getProperty指令用於輸出JavaBean屬性值
<jsp:useBean id="p1" class="lee.Person" scope="request" /> //id屬性是JavaBean例項名,class是實現類,scope屬性指定JavaBean的作用範圍
//page:該JavaBean例項僅在該頁面有效
//request:該JavaBean本次請求有效
//session:該JavaBean本次回話有效
//application:該JavaBean應用期間有效,從上到下變大
<jsp:setproperty name="p1" property="name" value="wa" /> //name屬性是JavaBean的例項名,property屬性確定需要輸出的屬性名
<jsp:setProperty name="p1" property="age" value="25" />
<jsp:getProperty name="p1" property="name" />
<jsp:getProperty name="p1" property="age" />
JSP九大內建物件
application:
javax.servlet.ServletContext例項,代表JSP所屬的WEB應用本身,可以用於JSP頁面或在Servlet之間的資訊交換
常用方法:getAttribute、setAttribute、getInitParameter
config:
javax.servlet.servletConfig例項,該例項代表該JSP的配置資訊。實際上,JSP頁面無需配置,所以更多在Servlet上有效
常用方法:getInitParameter、getInitParameternames
exception:
java.lang.Throwable例項,代表其他頁面中的異常和錯誤。只有當頁面是錯誤處理頁面,即編譯指令page的isErrorPage屬性為true時,才可使用
常用方法:getMessage、printStackTrace
out:
javax.servlet.jsp.JspWriter例項,代表JSP頁面的輸出流,用於輸出內容,形成HTML頁面
page:
代表頁面本身,沒有太大用處。也就是Servlet中的this,其型別就是生成Servlet類,能用page就可以用this
pageContext:
javax.servlet.PageCOntext例項,代表該JSP頁面上下文,使用該物件可以訪問頁面中的共享資料。
常用方法:getServletContext、getServletConfig
request:
javax.servlet.http.HttpServletRequest例項,該對像封裝了一次請求,客戶端的請求引數都在該物件中,獲取客戶端請求引數必須使用該引數
常用方法:getParameter、getParameterValues、setAttribute、getAttribute、setCharacterEncoding
response:
javax.servlet.http.HttpServletResponse例項,代表伺服器對客戶端的相應,通常很少使用該物件直接響應,而是使用out物件,除非需要生成非字元響應
常用方法:getOutputStream、sendRedirect
session:
javax.servlet.http.HttpSession例項,代表一次會話。當客戶端瀏覽器與站點建立連線,會話開始;當客戶端關閉瀏覽器,會話結束
常用方法:getAttribute、setAttribute