(三)JSP語法詳細介紹--動做元素

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屬性:

    id屬性是動做元素的惟一標識,能夠在JSP頁面中引用。動做元素建立的id值能夠經過PageContext來調用。jsp

     

  • scope屬性:

    該屬性用於識別動做元素的生命週期。 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>一塊兒使用。

語法以下:

  1. <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">密&nbsp;碼:</label>
			<input id="password" type="password" name="password" placeholder="請輸入密碼">
			<br>
			<label for="age">年&nbsp;齡:</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/attribute/body/text 動做標記

<jsp:element> 、 <jsp:attribute>、 <jsp:body>動做元素動態定義XML元素。動態是很是重要的,這就意味着XML元素在編譯時是動態生成的而非靜態。

<jsp:text>動做元素容許在JSP頁面和文檔中使用寫入文本的模板

相關文章
相關標籤/搜索