Elemen tindakan JSP
Tidak seperti elemen arahan JSP, elemen tindakan JSP berfungsi semasa fasa pemprosesan permintaan. Elemen tindakan JSP ditulis dalam sintaks XML.
Gunakan tindakan JSP untuk memasukkan fail secara dinamik, menggunakan semula komponen JavaBean, mengubah hala pengguna ke halaman lain dan menjana kod HTML untuk pemalam Java. Elemen tindakan
hanya mempunyai satu sintaks, yang mematuhi piawaian XML:
<jsp:action_name attribute="value" />
Elemen tindakan pada asasnya adalah fungsi yang dipratakrifkan Spesifikasi JSP mentakrifkan satu siri tindakan standard, yang menggunakan JSP sebagai Awalan , elemen tindakan standard yang tersedia adalah seperti berikut:
语法 | 描述 |
---|---|
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页面和文档中使用写入文本的模板 |
Atribut biasa
Semua elemen tindakan mempunyai dua atribut: atribut id dan atribut skop.
atribut id:
Atribut id ialah pengecam unik elemen tindakan dan boleh dirujuk dalam halaman JSP. Nilai id yang dicipta oleh elemen tindakan boleh dipanggil melalui PageContext.
atribut skop:
Atribut ini digunakan untuk mengenal pasti kitaran hayat elemen tindakan. Atribut id berkaitan secara langsung dengan atribut skop dan atribut skop mentakrifkan jangka hayat objek id yang berkaitan. Atribut skop mempunyai empat nilai yang mungkin: (a) halaman, (b) permintaan, (c) sesi dan (d) aplikasi.
<jsp:include>Elemen tindakan
<jsp:include>Elemen tindakan digunakan untuk memasukkan fail statik dan dinamik. Tindakan ini memasukkan fail yang ditentukan ke dalam halaman yang dijana. Format sintaks adalah seperti berikut:
<jsp:include page="相对 URL 地址" flush="true" />
Arahan sertakan telah diperkenalkan sebelum ini. Ia memperkenalkan fail apabila fail JSP ditukar menjadi Servlet Tindakan jsp:include di sini adalah berbeza disisipkan ialah apabila halaman diminta masa.
Berikut ialah senarai atribut yang berkaitan dengan tindakan sertakan.
属性 | 描述 |
---|---|
page | 包含在页面中的相对URL地址。 |
flush | 布尔属性,定义在包含资源前是否刷新缓存区。 |
Contoh
Di bawah kami mentakrifkan dua fail date.jsp dan main.jsp, kodnya adalah seperti berikut:
tarikh kod fail:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <p> 今天的日期是: <%= (new java.util.Date()).toLocaleString()%> </p>
kod fail main.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <h2>include 动作实例</h2> <jsp:include page="date.jsp" flush="true" /> </body> </html>
Sekarang letakkan dua fail di atas dalam direktori root pelayan dan akses fail main.jsp. Hasil paparan adalah seperti berikut:
include 动作实例 今天的日期是: 2016-6-25 14:08:17
<jsp:useBean> elemen Tindakan
jsp:useBean Tindakan ini digunakan untuk memuatkan JavaBean yang akan digunakan dalam halaman JSP.
Ciri ini sangat berguna kerana ia membolehkan kami memanfaatkan penggunaan semula komponen Java. Sintaks termudah
tindakan jsp:useBean ialah:
<jsp:useBean id="name" class="package.class" />
Selepas kelas dimuatkan, kami boleh mengubah suai dan mendapatkan semula sifat kacang melalui tindakan jsp:setProperty dan jsp:getProperty .
Berikut ialah senarai sifat yang berkaitan dengan tindakan useBean.
属性 | 描述 |
---|---|
class | 指定Bean的完整包名。 |
type | 指定将引用该对象变量的类型。 |
beanName | 通过 java.beans.Beans 的 instantiate() 方法指定Bean的名字。 |
Sebelum memberikan contoh khusus, mari kita lihat dahulu elemen tindakan jsp:setProperty dan jsp:getProperty:
<jsp:setProperty>elemen Tindakan
jsp :setProperty digunakan untuk menetapkan sifat objek Bean yang di instantiated Terdapat dua cara untuk menggunakannya. Mula-mula, anda boleh menggunakan jsp:setProperty di luar (di belakang) elemen jsp:useBean, seperti yang ditunjukkan di bawah:
<jsp:useBean id="myName" ... /> ... <jsp:setProperty name="myName" property="someProperty" .../>
Pada masa ini, sama ada jsp:useBean mencari Bean sedia ada atau mencipta yang baharu Untuk contoh Bean , jsp:setProperty akan dilaksanakan. Penggunaan kedua ialah meletakkan jsp:setProperty di dalam elemen jsp:useBean, seperti yang ditunjukkan di bawah:
<jsp:useBean id="myName" ... > ... <jsp:setProperty name="myName" property="someProperty" .../> </jsp:useBean>
Pada masa ini, jsp:setProperty hanya akan dilaksanakan apabila membuat tika Bean baharu jika anda menggunakan yang sedia ada Kejadian tidak melaksanakan jsp:setProperty.
jsp:setProperty action mempunyai empat atribut berikut, seperti yang ditunjukkan dalam jadual berikut:
属性 | 描述 |
---|---|
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> elemen tindakan
jsp :getProperty action extraction Tentukan nilai atribut Bean, tukarkannya menjadi rentetan, dan kemudian keluarkannya. Format sintaks adalah seperti berikut:
<jsp:useBean id="myName" ... /> ... <jsp:getProperty name="myName" property="someProperty" .../>
Jadual berikut ialah sifat yang dikaitkan dengan getProperty:
属性 | 描述 |
---|---|
name | 要检索的Bean属性名称。Bean必须已定义。 |
property | 表示要提取Bean属性的值 |
Contoh
Kami menggunakan Bean dalam contoh berikut:
package com.php.main; public class TestBean { private String message = "php中文网"; public String getMessage() { return(message); } public void setMessage(String message) { this.message = message; } }
Kompilasi fail contoh di atas TestBean.java:
$ javac TestBean.java
Selepas penyusunan selesai, satu TestBean.class fail, Salin fail ini ke WebContent/WEB-INF/classes/com/php/main projek JSP semasa (laluan pakej com/php/utama, tidak perlu menciptanya secara manual).
Berikut ialah gambar rajah struktur direktori dalam Eclipse:
Berikut ialah contoh yang sangat mudah adalah untuk memuatkan Bean dan kemudian set/. bacanya. Dapatkan atribut mesejnya.
Sekarang mari kita panggil Bean dalam fail utama.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <h2>Jsp 使用 JavaBean 实例</h2> <jsp:useBean id="test" class="com.php.main.TestBean" /> <jsp:setProperty name="test" property="message" value="php中文网..." /> <p>输出信息....</p> <jsp:getProperty name="test" property="message" /> </body> </html>
Akses pelayar, jalankan fail di atas, output adalah seperti berikut:
<jsp:forward> elemen Tindakan
jsp:forward action memindahkan permintaan ke halaman lain. Teg jsp:forward hanya mempunyai satu atribut, halaman. Format sintaks adalah seperti berikut:
<jsp:forward page="相对 URL 地址" />
Berikut ialah atribut yang dikaitkan dengan hadapan:
属性 | 描述 |
---|---|
page | page属性包含的是一个相对URL。page的值既可以直接给出,也可以在请求的时候动态计算,可以是一个JSP页面或者一个 Java Servlet. |
Contoh
Kami menggunakan dua fail dalam contoh berikut: date.jsp dan main.jsp.
kod fail date.jsp adalah seperti berikut:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <p> 今天的日期是: <%= (new java.util.Date()).toLocaleString()%> </p>
kod fail utama.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <h2>forward 动作实例</h2> <jsp:forward page="date.jsp" /> </body> </html>
Sekarang letakkan dua fail di atas dalam direktori akar pelayan dan akses fail jsp utama. Hasil paparan adalah seperti berikut:
今天的日期是: 2016-6-25 14:37:25
<jsp:plugin> elemen Action
jsp:plugin action digunakan untuk memasukkan elemen yang diperlukan untuk menjalankan Java Applet melalui Java plug- dalam mengikut jenis pelayar OBJEK atau elemen EMBED.
Jika pemalam yang diperlukan tidak wujud, ia akan memuat turun pemalam dan kemudian melaksanakan komponen Java. Komponen Java boleh menjadi applet atau JavaBean.
Tindakan pemalam mempunyai berbilang atribut yang sepadan dengan elemen HTML untuk memformat komponen Java. Elemen param boleh digunakan untuk menghantar parameter kepada Applet atau Bean.
Berikut ialah contoh biasa menggunakan elemen tindakan pemalam:
<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>
Jika anda berminat, anda boleh cuba menggunakan applet untuk menguji elemen tindakan jsp:plugin <fallback> ; elemen ialah elemen baharu Ralat kegagalan komponen ialah mesej ralat yang dihantar kepada pengguna.
<jsp:element> <jsp:atribut>、 <jsp:body>Elemen tindakan
<jsp:element> <jsp:atribut>、 <jsp:body>Elemen tindakan mentakrifkan elemen XML secara dinamik. Dinamik adalah sangat penting, yang bermaksud bahawa elemen XML dijana secara dinamik pada masa penyusunan dan bukannya statik.
Contoh berikut mentakrifkan elemen XML secara dinamik:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <jsp:element name="xmlElement"> <jsp:attribute name="xmlElementAttr"> 属性值 </jsp:attribute> <jsp:body> XML 元素的主体 </jsp:body> </jsp:element> </body> </html>
Pelayar mengakses halaman berikut, dan hasil output adalah seperti berikut:
<jsp:text>Elemen tindakan
<jsp:text>Elemen tindakan membenarkan penggunaan templat untuk menulis teks dalam halaman dan dokumen JSP Format sintaks adalah seperti berikut:
<jsp:text>模板数据</jsp:text>
Teks di atas Templat tidak boleh mengandungi unsur lain, tetapi hanya boleh mengandungi teks dan ungkapan EL (Nota: Ungkapan EL akan diperkenalkan dalam bab seterusnya). Sila ambil perhatian bahawa dalam fail XML anda tidak boleh menggunakan ungkapan seperti ${whatever > Anda boleh menggunakan ungkapan ${whatever gt 0} atau membenamkan nilai dalam bahagian CDATA.
<jsp:text><![CDATA[<br>]]></jsp:text>
Jika anda perlu mengisytiharkan DOCTYPE dalam XHTML, anda mesti menggunakan elemen tindakan <jsp:text> :text> untuk contoh di atas ;Perbezaan antara hasil pelaksanaan tanpa menggunakan elemen tindakan ini.