[05] JSP標準動作
阿新 • • 發佈:2018-01-30
模型 什麽 usebean gpo public類 java語言 getx class patch
上面的代碼中,action_name表示標準動作的名字,而attribute1和attribute2是標準動作的若幹個屬性。
上述代碼將把請求轉發到loginSuccess.jsp頁面,類似在Servlet中調用RequestDispatcher的forward方法進行請求轉發。即在JSP頁面中 <jsp:forward page="loginSuccess.jsp"></jsp:forward> 和 <% request.getRequestDispatcher("loginSuccess.jsp").forward(request, response); %> 是一樣的效果。
包含該動作的頁面,在你訪問時,則會被請求轉發到 loginSuccess.jsp 頁面當中去。
形如:
include動作則表示在JSP頁面中進行動態包含,這和JSP指令中的靜態包含是稍有不同的。動態包含,即在運行期間訪問被包含的頁面,並將響應結果同包含頁面的響應結果合並,生成最終的響應。類似在Servlet中調用RequestDispatcher的include方法進行包含。
和include指令的靜態包含不同的在於,靜態包含發生在翻譯階段,被包含的JSP文件不會生成Java類,而是翻譯後包含在主體文件的Java類中,即靜態包含最終只會生成一個Java類。而動態包含,則各自的JSP頁面會生成各自的Java類,只是最終響應的結果會進行合並。
param動作往往是作為forward和include動作的子動作進行使用,用以傳遞參數。如下代碼示例:
上述代碼使用param為forward和include動作傳遞參數,參數將被作為請求參數進行傳遞。如此處為head.jsp傳遞了參數time,那麽在head.jsp頁面中,則可以通過類似 <%=request.getParameter("time") %>的方式進行獲取顯示。
而在JSP中,則有三個標準動作和JavaBean有關,由於現在更多使用JSTL、EL表達式,所以這些標準動作使用較少。
1、概述
JSP規範中定義了一系列的標準動作,Web容器按照規範進行了實現,可以解析並執行標準動作。而標準動作使用的是標準的xml語法,看上去也比較直觀易懂,下面來看一個結構例子:
<jsp:action_name attribute1="value1" attribute2="value2"></jsp:acion_name>
上面的代碼中,action_name表示標準動作的名字,而attribute1和attribute2是標準動作的若幹個屬性。
2、三種常用的標準動作
2.1 forward
forward動作,用於在JSP頁面進行請求轉發,如下代碼示例:
<jsp:forward
page="loginSuccess.jsp"></jsp:forward>
上述代碼將把請求轉發到loginSuccess.jsp頁面,類似在Servlet中調用RequestDispatcher的forward方法進行請求轉發。即在JSP頁面中 <jsp:forward page="loginSuccess.jsp"></jsp:forward> 和 <% request.getRequestDispatcher("loginSuccess.jsp").forward(request, response); %> 是一樣的效果。
包含該動作的頁面,在你訪問時,則會被請求轉發到 loginSuccess.jsp 頁面當中去。
2.2 include
<jsp:include page="head.jsp"></jsp:include>
include動作則表示在JSP頁面中進行動態包含,這和JSP指令中的靜態包含是稍有不同的。動態包含,即在運行期間訪問被包含的頁面,並將響應結果同包含頁面的響應結果合並,生成最終的響應。類似在Servlet中調用RequestDispatcher的include方法進行包含。
和include指令的靜態包含不同的在於,靜態包含發生在翻譯階段,被包含的JSP文件不會生成Java類,而是翻譯後包含在主體文件的Java類中,即靜態包含最終只會生成一個Java類。而動態包含,則各自的JSP頁面會生成各自的Java類,只是最終響應的結果會進行合並。
2.3 param
<jsp:forward page="copyright.jsp">
<jsp:param name="author" value="zhangsan"/>
</jsp:forward>
<jsp:include page="head.jsp">
<jsp:param name="time" value="2018-01-30"/>
</jsp:include>
上述代碼使用param為forward和include動作傳遞參數,參數將被作為請求參數進行傳遞。如此處為head.jsp傳遞了參數time,那麽在head.jsp頁面中,則可以通過類似 <%=request.getParameter("time") %>的方式進行獲取顯示。
3、JavaBean相關的標準動作
所謂JavaBean,是用Java語言描述的軟件組件模型,實際上就是一個JavaSE的類,該類遵循一定的規範:- 必須是public類
- 必須有一個無參的public構造方法
- 返回屬性的方法為getXxx
- 設置屬性的方法為setXxx
而在JSP中,則有三個標準動作和JavaBean有關,由於現在更多使用JSTL、EL表達式,所以這些標準動作使用較少。
3.1 useBean
使用useBean標準動作,可以獲取(或創建)一個在 {scope} 範圍內名為 {id} 的 {class} 類,scope範圍可以為page、request、session、application。
<jsp:useBean id="" class="" scope="" ></jsp:useBean>
如上例的含義為:調用request.getAttribute("zhangsan"),如果沒有zhangsan,則調用Person的無參構造方法創建,並setAttribute("zhangsan", new Person())。
<jsp:useBean id="zhangsan" class="com.learn.Person" scope="request" ></jsp:useBean>
3.2 setProperty
setProperty用來對JavaBean對象的屬性進行賦值,替代setXxx方法。其中:
<jsp:setProperty name="" property="" param|value="" />
- name 表示JavaBean對象的id值
- property 表示JavaBean對象的屬性名
- param 如果希望註入的值是請求參數,則使用param屬性
- value 如果希望註入的值是一個常量,則使用value屬性
3.3 getProperty
getProperty用來調用JavaBean對象的getXxx方法獲取對應屬性值,其中:
<jsp:getProperty name="" property="" />
- name 表示JavaBean對象的id值
- property 表示JavaBean對象的屬性名
4、其他
以上就是常見的幾種JSP標準動作了,還有一部分用得就更少了,如果有興趣可以自行了解。5、寫在後面的話
但是如今,誰還用什麽JSP標準動作啊???[05] JSP標準動作