1. 程式人生 > >05 - JSP動作元素

05 - JSP動作元素

jsp動作元素


JSP動作元素用來控制JSP的行為, 執行一些常用的JSP頁面動作. JSP動作元素在請求處理階段起作用. JSP動作元素是用XML語法寫成的.
作用: 動態的插入檔案, 重用JavaBean元件, 把使用者重定向到另外的頁面, 為Java外掛生成HTML程式碼等.

  • 語法:
<jsp: action_name  attribute = "value"/>

action_name 為動作元素
以jsp作為字首, 可用的標準動作元素有如下表|:

動作元素名 描述
jsp: include 在頁面請求的時候引入一個檔案
jsp: useBean 尋找或者例項化一個JavaBean
jsp:setProperty 設定JavaBean屬性
jsp:getProperty 輸出JavaBean屬性
jsp: forward 把請求轉發到一個新的頁面
jsp:plugin 插入java外掛
jsp:element 定義動態XML元素
jsp:attribute 設定動態定義的XML元素屬性
jsp: body 設定動態定義的XML元素內容
jsp: text 在JSP頁面和文件中使用寫入文字的模板

屬性: 所有的動作元素都會有兩個基本的屬性:
1. id 唯一標識,不多扯
2. scope屬性: 用於識別動作元素的宣告週期. scope屬性可能的取值有四個可能的值. page , request , session, application.

1.jsp:include動態包含

用來包含靜態和動態的檔案, 該動作把指定檔案插入正在生成的頁面.

<jsp: include page="相對地址 url" flush="true"/>

注:flush : Boolean , 定義在包含資源前是否重新整理快取

2.jsp:useBean

載入一個將在JSP頁面中使用的JavaBean. 重要

<jsp:useBean  id = "name" class = "package.class" />

class: 指定bean的完整包名

2.1.jsp:setTroperty

jsp:setProperty用來設定已經例項化的Bean物件的屬性, 有兩種用法.
1.可以在jsp:useBean元素的後邊,這種方式不論是新建一個Bean還是找到一個已有的bean jsp:setProperty 都會執行. 使用如下:

<jsp:useBean id="hello" ... />
...
<jsp:setProperty name="hello" property="someProperty" .../>

2 .將jsp:setProperty放入jsp:useBean元素的內部 ,這種方式只有在新建Beans例項的時候才會執行, 若是已有的Bean例項則不會執行.(類似於構造方法的道理) 具體如下:

<jsp:useBean id="hello" ... >
...
   <jsp:setProperty name="hello" property="someProperty" .../>
</jsp:useBean>
屬性 描述

|name |表示要設定屬性的是哪個Bean |
|property | property屬性是必需的. 表示要設定哪個屬性. 注: 若property值為 “*” 代表匹配該bean所有的屬性|
|value | 可選, 用於指定bean屬性的值 param和value不能同時使用|
|param | 可選, 指定yoga哪個請求引數作為Bean的屬性的值 |

2.2jsp:getProperty

用於提取指定Bean屬性的值, 轉換成字串, 然後輸出.

<jsp:useBean id = "hello" ...../>
...
<jsp: getProperty name = "hello" property = "屬性">

舉個栗子:
現有 Demo.java 作為useBean 包名為cn.haha.test
其中有屬性name

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<body>
<h2>Jsp 使用 JavaBean 例項</h2>
<jsp:useBean id="demo" class="cn.haha.test.Demo" />
<jsp:setProperty name="demo" 
                    property="name" 
                    value="持之以恆" />
<p>輸出資訊....</p>
<jsp:getProperty name="demo" property="name" />
</body>
</html>

頁面輸出如下:

輸出資訊…
持之以恆

3. jsp:forward 轉發

<jsp:forward page= "相對地址 url" />

page屬性的值是一個相對的url, 可以為jsp頁面, 也可以為一個 Servlet

4. jsp:plugin

jsp:plugin動作用: 自動根據瀏覽器的型別,插入通過Java外掛 執行Java Applet所必需的OBJECT或EMBED元素。
如果需要的外掛不存在,它會下載外掛,然後執行Java元件。 Java元件可以是一個applet或一個JavaBean。
plugin動作有多個對應HTML元素的屬性用於格式化Java 元件。param元素可用於向Applet 或 Bean 傳遞引數

<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class"
                           width="60" height="80">
   <jsp:param name="fontcolor" value="red" />
   <jsp:param name="background" value="black" />
 
   <jsp:fallback>
      Unable to initialize Java Plugin
   </jsp:fallback>
</jsp:plugin>

元素是一個新元素,在元件出現故障的錯誤時傳送給使用者錯誤資訊。

5. jsp:text

在jsp頁面中寫入文字

<jsp:text> demo </jsp:text>

注: 這些文字模板中只能包含 文字和EL表示式.

本文參考自菜鳥教程.學習過程中也添加了自己的理解.
http://www.runoob.com/jsp/jsp-actions.html