Action動作標簽簡述
JSP action是JSP技術體系內置的一組標簽,使用無需導入,或者添加另外的庫。JSP action標簽都是對Java代碼的邏輯的封裝。主要使用的是下面這些。
標簽 | 作用 |
---|---|
jsp:include | 在頁面被請求的時候引入一個文件。 |
jsp:forward | 把請求轉到一個新的頁面。 |
jsp:useBean | 尋找或者實例化一個JavaBean。 |
jsp:setProperty | 設置JavaBean的屬性。 |
jsp:getProperty | 輸出某個JavaBean的屬性。 |
<jsp:include>標簽
提示:為了深入理解這個標簽,請先理解ServletDispatcher接口中的include方法,因為二者是同樣的原理。可以看我的這篇文章
jsp:include標簽是執行時期的包含,也叫動態包含。被包含的頁面會在服務器上運行產生響應數據,將響應的數據包含到本JSP響應中。因此,這個標簽既可以包含Servlet,JSP動態資源,也可以包含HTML等靜態資源。如果是包含了JSP或者Servlet,則是包含了 被包含頁面執行后的輸出結果(也就是是被包含頁面的out對象輸出的結果)。 如果包含的是靜態內容,則其效果和使用<%@ page include %> 是一樣的。這種情況下還是使用include指令比較高效。
語法格式
<!--語法格式--> <jsp:include page="relativeURL(被包含資源相對的路徑)" flush="[false|true]" /> <!--或者可以向被包含頁面傳遞參數Parameter--> <jsp:include page="relativeURL" flush="[false|true]" > <jsp:param name="name" value="value" /> <jsp:param name="name2" value="value2" /> </jsp:include>
<jsp:forward>標簽
提示:為了深入理解這個標簽,請先理解ServletDispatcher接口中的forward方法,因為二者是同樣的原理。可以看我的這篇文章
將當前請求轉發到另外一個資源上去,這個資源可以是Servlet,jsp,或者是HTML等靜態資源。讓另一個資源產生響應數據。使用轉發時,之前寫入到響應正文中的數據會被忽略,如果之前已經將響應提交,則使用轉發將拋出IllegalStateException異常。因此,轉發調用語句的前后都不要有響應輸出語句,因為都會被忽略,沒有作用。
語法格式
<jsp:forward page="relativeURL(被包含頁面的相等URL)" /> <!--或者也可以通過jsp:param向被包含頁面傳遞Parameter--> <jsp:forward page="relativeURL"> <jsp:param name="name" value="value" /> </jsp:forward>
說明:
1、page屬性是被包含的頁面的相對路徑,這個值可以是EL表達式,如: page="${param.pagevalue}"
2、<jsp:param> 設置的參數可以在被包含頁面中通過request.getParamter()獲取。
<jsp:useBean>標簽
語法格式
<!--在JSP頁面中獲取一個JavaBean--> < jsp:useBean id ="user" class= "model.User" scope = "page" /> <!--或者 在JSP頁面中獲取一個JavaBean,如果這個對象是因為這個useBean標簽的調用而new出來的,則執行子標簽setProperty,如果是從以前設置的scope直接獲取到的,則不執行子標簽setProperty --> <jsp:useBean id="user" class="model.User" scope="page"> <jsp:setProperty property="name" name="user" value="Jack"/> </jsp:useBean>
例子
index.jsp
<%@ page contentType= "text/html; charset=UTF-8" pageEncoding ="UTF-8" trimDirectiveWhitespaces= "true" session ="true" %> <!--在JSP頁面的pageScope中創建一個變量名為user的JavaBean --> < jsp:useBean id ="user" class= "model.User" scope = "page" /> <!--使用小腳本設置剛剛創建的JavaBean的 name屬性 ,后面會介紹一個專門的標簽setProperty可以設置屬性--> <% ((model.User)pageContext.getAttribute( "user" )).setName("Bob" ); %> <!--輸出Bean的name屬性,驗證 --> 剛剛使用的Bean的name屬性值是:${pageScope.user.name}
<jsp:setProperty>標簽
這個標簽用於設置JSP使用的JavaBean的屬性。他配和useBean一起使用,通常作為useBean的子標簽,而不是獨立使用。程序員要保證被操作的某個Bean對象一定存在。
使用語法
<jsp:setProperty name="Bean的變量名" property="Bean的屬性名" value="Bean的屬性值" /> <!--或者 將setProperty放在useBean的標簽體中,只有new出Bean實例才會執行,如果是從以前設置的地方取的Bean,則不會執行--> <jsp:useBean id="user" class="model.User" > <jsp:setProperty name="user" property="name" value="Bob"/> </jsp:useBean>
說明
name:就是要操作的JavaBean的變量名,也就是useBean中的id值。
property:操作的JavaBean對象的屬性名。
value : 屬性的值
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" trimDirectiveWhitespaces="true" session="true"%> <jsp:useBean id="user" class="model.User" scope="page"> <jsp:setProperty property="name" name="user" value="Jack"/> </jsp:useBean> <%--輸出Bean的name屬性,驗證 --%> 剛剛使用的Bean的name屬性值是:${pageScope.user.name}
<jsp:getProperty>標簽
獲取一個JavaBean的屬性,通過JSP內置對象out將屬性值輸出到響應流中。
語法:
<jsp:getProperty name="JavaBean的變量名" property="屬性名" />
name:就是要操作的JavaBean的變量名,也就是useBean中的id值。
property:操作的JavaBean對象的屬性名。
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" trimDirectiveWhitespaces="true" session="true"%> <jsp:useBean id="user" class="model.User" scope="page"> <jsp:setProperty property="name" name="user" value="Jack"/> </jsp:useBean> 剛剛使用的Bean的name屬性值是:<jsp:getProperty name="user" property="name" />
歡迎轉載,請注明出處:www.cnblogs.com/lulipro
為了獲得更好的閱讀體驗,請訪問原博客地址。
限於本人水平,如果文章和代碼有表述不當之處,還請不吝賜教。
代碼鋼琴家