動作指令只是在運(yùn)行時的動作至耻,編譯指令在將JSP翻譯成Servlet時起作用
JSP的主要動作指令
- jsp:forword:執(zhí)行頁面轉(zhuǎn)向亲怠,將請求的處理轉(zhuǎn)發(fā)到下一頁面所计。
- jsp:param:用于傳遞參數(shù)必須與其他支持參數(shù)的標(biāo)簽一起使用。
- jsp:include:用于動態(tài)引入一個JSP頁面团秽。
- jsp:plugin:用于下載JavaBean或Applet到客服端執(zhí)行主胧。
- jsp:useBean:創(chuàng)建一個JavaBean實(shí)例。
- jsp:setProperty:設(shè)置JavaBean實(shí)例的屬性值习勤。
- jsp:getProperty:輸出JavaBean實(shí)例的屬性值踪栋。
5.1forward指令
forward指令用于將頁面響應(yīng)轉(zhuǎn)發(fā)到另外的頁面。
JSP的forward指令格式:
JSP1.0
<jsp:forward page="{relativeURL|<%=expression%>}" />
JSP1.1以上
<!--
轉(zhuǎn)發(fā)頁面是增加額外的參數(shù)傳遞图毕,
參數(shù)的值可以通過HttpServletRequest類的getParameter()方法獲取
-->
<jsp:forward page="{relativeURL|<%=expression%>}">
<jsp:param.../>
</jsp:forward>
例:
<jsp:forward page="forward-result.jsp">
<jsp:param name=age value=29 />
</jsp:forward>
<body>
<!--使用request內(nèi)置對象獲取age參數(shù)的值-->
<%=request.getParameter("age")%>
</body>
表單提交:
<form id="login" method="post" action="jsp-forward.jsp">
<input type="text" name="username" />
<input type="submit" value="submit" />
</form>
<jsp:forward.../>指令給人一種:它是將用戶的請求“轉(zhuǎn)發(fā)”到另一頁面夷都,但實(shí)際上并沒有重新向新頁面發(fā)送請求,它只是完全采用對用戶生成響應(yīng)予颤,請求依然是一次請求囤官,所以請求參數(shù)、請求屬性都不會丟失蛤虐。
5.2include指令
include指令是一個動態(tài)指令党饮,也用于包含某個頁面,它不會導(dǎo)入被include頁面的編譯指令笆焰,僅僅將被導(dǎo)入的頁面的body內(nèi)容插入本頁面劫谅。
語法格式:
<jsp:include page="{relativeURL|<%=expression%>}" flush=""true />
<jsp:include page="{relativeURL|<%=expression%>}" flush=""true>
<jsp:param name="parameterName" value="patameterValue"/>
</jsp:include>
動態(tài)導(dǎo)入語法:
<body>
<!--使用動態(tài)include指令導(dǎo)入頁面-->
<jsp:include page="include-result.jsp"/>
</body>
動態(tài)導(dǎo)入只是使用一個include方法來插入目標(biāo)頁面见坑,而不是將目標(biāo)頁面完全融入本頁面中嚷掠。
靜態(tài)導(dǎo)入和動態(tài)導(dǎo)入的三點(diǎn)區(qū)別:
- 靜態(tài)導(dǎo)入是將導(dǎo)入頁面完全融入本頁面捏检,兩個頁面完全融合生成一個整體的Servlet,而動態(tài)導(dǎo)入則在Servlet中使用include方法來引入被導(dǎo)入頁面的內(nèi)容不皆。
- 靜態(tài)導(dǎo)入時被導(dǎo)入頁面的的編譯指令會起作用贯城,而動態(tài)導(dǎo)入時被導(dǎo)入頁面的編譯指令則失去作用,只是插入被導(dǎo)入頁面的body內(nèi)容霹娄。
- 動態(tài)導(dǎo)入還可以增加額外的參數(shù)能犯。
簡而言之,forward那布標(biāo)頁面代替原有的頁面犬耻,include拿目標(biāo)頁面插入原有的頁面踩晶。
5.3useBean、setProperty枕磁、getProperty指令
這三個指令都是與JavaBean相關(guān)的指令渡蜻,useBean指令用于在JSP頁面中初始化一個Java實(shí)例;setProperty指令用于為JavaBean實(shí)例的屬性設(shè)置值计济,getProperty指令用于輸出JavaBean實(shí)例的屬性
useBean的語法:
<jsp:useBean id="name" class="classname" scope="page|request|session|application"/>
scop屬性指定的JavaBean實(shí)例的作用范圍:
- page:該JavaBean實(shí)例僅在該頁面有效茸苇。
- request:該JavaBean實(shí)例在本次請求有效。
- session:該JavaBean實(shí)例在本次session內(nèi)有效沦寂。
- application:該JavaBean實(shí)例在本應(yīng)用內(nèi)一直有效学密。
setProperty指令語法:
<jsp:setProperty name="BeanName" property="propertyName" value="value" />
getProperty的語法:
<jsp:getProperty name="BeanName" property="propertyName" />
例:
<body>
<!--創(chuàng)建lee.Person的實(shí)例,該實(shí)例的實(shí)例名為p1-->
<jsp:useBean id="p1" class="lee.Person" scope="page" />
<!--設(shè)置p1的name屬性-->
<jsp:setProperty name="p1" property="name" value="zhangsan" />
<!--輸出p1的name值-->
<jsp:gettProperty name="p1" property="name" />
</body>
當(dāng)頁面調(diào)用setProperty和getProperty標(biāo)簽時传藏,系統(tǒng)底層就是調(diào)用setName()和getName()方法來操作Person實(shí)例的屬性的腻暮。
5.4plugin指令
plugin指令主要用于下載服務(wù)端的JavaBean或Applet到客服端執(zhí)行。由于程序要在客服端執(zhí)行毯侦,所以客服端必須安裝虛擬機(jī)西壮,實(shí)際中很少使用。
5.5param指令
param指令用于設(shè)置參數(shù)值叫惊,這個指令不能單獨(dú)使用款青,因?yàn)閱为?dú)的param指令沒有實(shí)際意義,param主要結(jié)合一下三個指令使用:
- jsp:include
- jsp:forward
- jsp:plugin
語法格式:
<jsp:param name="paramName" value="paramValue" />