1、動做元素語法:html
與JSP指令元素不一樣的是,JSP動做元素在請求處理階段起做用。JSP動做元素是用XML語法寫成的。java
利用JSP動做能夠動態地插入文件、重用JavaBean組件、把用戶重定向到另外的頁面、爲Java插件生成HTML代碼。express
<jsp:action_name attribute="value" />
動做元素基本上都是預約義的函數,JSP規範定義了一系列的標準動做,它用JSP做爲前綴,可用的標準動做元素以下:瀏覽器
語法 | 描述 |
---|---|
jsp:include | 在頁面被請求的時候引入一個文件。 |
jsp:useBean | 尋找或者實例化一個JavaBean。 |
jsp:setProperty | 設置JavaBean的屬性。 |
jsp:getProperty | 輸出某個JavaBean的屬性。 |
jsp:forward | 把請求轉到一個新的頁面。 |
jsp:plugin | 根據瀏覽器類型爲Java插件生成OBJECT或EMBED標記。 |
jsp:element | 定義動態XML元素 |
jsp:attribute | 設置動態定義的XML元素屬性。 |
jsp:body | 設置動態定義的XML元素內容。 |
jsp:text | 在JSP頁面和文檔中使用寫入文本的模板 |
常見的屬性session
全部的動做要素都有兩個屬性:id屬性和scope屬性。app
id屬性是動做元素的惟一標識,能夠在JSP頁面中引用。動做元素建立的id值能夠經過PageContext來調用。jsp
該屬性用於識別動做元素的生命週期。 id屬性和scope屬性有直接關係,scope屬性定義了相關聯id對象的壽命。 scope屬性有四個可能的值: (a) page, (b)request, (c)session, 和 (d) application。函數
(一)jsp:include 動做標記post
該動做把指定文件插入正在生成的頁面。ui
語法以下:
<jsp:include page="{相對URL地址|<%=expression%>}" flush="true|false" />
或
<jsp:include page="{relativeURL|<%=expression%>}" flush="true|false"> <jsp:param name="parameterName" value="{parameterValue|<%=expression%>}"/> </jsp:include>
參數能夠從另一個頁面的getParameter方法獲取。
page屬性:指定要包含的文件的位置
flush屬性:指示在讀入包含內容以前是否清空如何現有的緩衝區。
jsp:include 動做 與 include指令不同,插入文件的時間是在頁面被請求的時候。
(二)jsp: forward 動做標記
jsp:forward動做把請求轉到另外的頁面。jsp:forward標記只有一個屬性page。語法以下:
<jsp:forward page="相對 URL 地址" />
jsp:forward的轉發操做都是在服務端進行的,不會引發客戶端的二次請求。
<jsp:forward>其實是調用了PageContext的forward方法。
示例以下:
<jsp:forward page="success.jsp">//跳轉至success.jsp <jsp:param name="user" value="<%=name%>" />//攜帶參數"user" </jsp:forward>
(三)jsp:plugin 動做標記
此操做是用來產生客戶端瀏覽器的特別標籤(Object或者embed),能夠使用它來插入Applet或者JavaBean。
通常來講<jsp:plugin>元素指定的對象是Applet仍是Bean,一樣也會指定class的名字,另外還會指定將從哪裏下載這個Java插件。
示例以下:
<jsp:plugin type=applet code="efly.testMyApplet.class" codebase="."> <jsp:params> <jsp:param name="aParameterName" value="aParameterNameValue"/> </jsp:params> <jsp:fallback> <p>Unable to load applet.</p> </jsp:fallback> </jsp:plugin>
<fallback>元素是一個新元素,在組件出現故障的錯誤是發送給用戶錯誤信息。
(四)jsp:param 動做標記
此標記用來以"鍵-值"對的形式爲其餘標記提供附加信息。它和 < jsp : include>、 < jsp : forward>、<jsp:plugin>一塊兒使用。
語法以下:
<jsp:param name="parameterName"
value="{parameterValue|<%=expression%>}"/>(五)jsp:useBean 動做標記o
jsp:useBean 動做用來加載一個將在JSP頁面中使用的JavaBean。
語法以下:
<jsp:useBean id="name" class="package.class" scope="{page\request\session\application}"/>
id屬性:指定此JavaBean實例對象的名稱。
class屬性: 指定此JavaBean類的全路徑限定名(包名+類名)
scope屬性: 指定此JavaBean 實例對象的存在範圍(默認值page)
示例以下:
1.建立一個javaBean(UserName.java),代碼以下:
package cn.edu.test; public class UserBean { public UserBean(){} private String userName; private String password; private int age; public String getUserName(){ return userName; } public void setUserName(String userName){ this.userName=userName; } public String getPassword(){ return password; } public void setPassword(String password){ this.password=password; } public int getAge(){ return age; } public void setAge(int age){ this.age=age; } }
2.建立一個註冊頁面reg.html提交表單到javabean.jsp,代碼以下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>用戶信息</h1> <hr> <form action="javabean.jsp" method="post"> <label for="username">用戶名:</label> <input id="username" type="text" name="userName" placeholder="請輸入用戶名"> <br> <label for="password">密 碼:</label> <input id="password" type="password" name="password" placeholder="請輸入密碼"> <br> <label for="age">年 齡:</label> <input id="age" type="text" name="age" placeholder="請輸入年齡"> <br> <input type="submit" name="submit" value="提交"> </form> </body> </html>
3.javabean.jsp代碼以下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <jsp:useBean id="user" scope="page" class="cn.edu.test.UserBean"></jsp:useBean> <jsp:setProperty property="*" name="user"/> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>javaBean示例</title> </head> <body> <h1>註冊成功</h1> <hr> <p><jsp:getProperty property="userName" name="user"/></p> <p><jsp:getProperty property="password" name="user"/></p> <p><jsp:getProperty property="age" name="user"/></p> </body> </html>
4.運行結果以下:
(六)jsp:setProperty 動做標記
jsp:setProperty用來設置已經實例化的Bean對象的屬性。
第一種用法:jsp:useBean元素的外面(後面)使用jsp:setProperty。此時,無論jsp:useBean是找到了一個現有的Bean,仍是新建立了一個Bean實例,jsp:setProperty都會執行。
<jsp:useBean id="myName" ... /> ... <jsp:setProperty name="myName" property="someProperty" .../>
第二種用法:把jsp:setProperty放入jsp:useBean元素的內部。此時,jsp:setProperty只有在新建Bean實例時纔會執行,若是是使用現有實例則不執行jsp:setProperty。
<jsp:useBean id="myName" ... > ... <jsp:setProperty name="myName" property="someProperty" .../> </jsp:useBean>
jsp:setProperty動做有下面四個屬性,以下表:
屬性 | 描述 |
---|---|
name | name屬性是必需的。它表示要設置屬性的是哪一個Bean。 |
property | property屬性是必需的。它表示要設置哪一個屬性。有一個特殊用法:若是property的值是"*",表示全部名字和Bean屬性名字匹配的請求參數都將被傳遞給相應的屬性set方法。 |
value | value 屬性是可選的。該屬性用來指定Bean屬性的值。字符串數據會在目標類中經過標準的valueOf方法自動轉換成數字、boolean、Boolean、 byte、Byte、char、Character。例如,boolean和Boolean類型的屬性值(好比"true")經過 Boolean.valueOf轉換,int和Integer類型的屬性值(好比"42")經過Integer.valueOf轉換。 value和param不能同時使用,但能夠使用其中任意一個。 |
param | param 是可選的。它指定用哪一個請求參數做爲Bean屬性的值。若是當前請求沒有參數,則什麼事情也不作,系統不會把null傳遞給Bean屬性的set方法。所以,你可讓Bean本身提供默認屬性值,只有當請求參數明確指定了新值時才修改默認屬性值。 |
(七)jsp:getProperty 動做標記
jsp:getProperty動做提取指定Bean屬性的值,轉換成字符串,而後輸出。
語法以下:
<jsp:useBean id="myName" ... /> ... <jsp:getProperty name="myName" property="someProperty" .../>
<jsp:element> 、 <jsp:attribute>、 <jsp:body>動做元素動態定義XML元素。動態是很是重要的,這就意味着XML元素在編譯時是動態生成的而非靜態。
<jsp:text>動做元素容許在JSP頁面和文檔中使用寫入文本的模板