Nama lengkap EL adalah bahasa ekspresi (bahasa ekspresi), yang merupakan salah satu fitur terpenting dari JSP2.0. Ex Expressions dapat digunakan untuk mengakses data dalam aplikasi untuk menghilangkan skrip Java di halaman JSP.
Sintaks ekspresi el
Ekspresi misalnya, x+y dapat ditulis sebagai {x+y}
Kata kunci di EL
Berikut ini adalah kata kunci di EL, yang tidak dapat digunakan sebagai pengidentifikasi:
dan, eq, gt, true, instanceof, atau, le, false, imbalan, not, lt, ge, null, div, mod
1. Pengantar Ex Expressions
Nama lengkap El adalah bahasa ekspresi. Fungsi utama El:
1. Dapatkan data
Ex Expressions terutama digunakan untuk mengganti ekspresi skrip di halaman JSP untuk mengambil objek Java dan mendapatkan data dari berbagai jenis domain web. (Objek dalam domain web tertentu, akses properti javabean, koleksi daftar akses, pengumpulan peta akses, array akses)
2. Melakukan Operasi
Menggunakan Ex Expressions, Anda dapat melakukan beberapa operasi relasional dasar, operasi logis, dan operasi aritmatika di halaman JSP untuk menyelesaikan beberapa operasi logis sederhana di halaman JSP. $ {user == null}
3. Dapatkan objek umum untuk pengembangan web
Ex Expressions mendefinisikan beberapa objek implisit. Dengan menggunakan objek implisit ini, pengembang web dapat dengan mudah mendapatkan referensi ke objek web yang umum digunakan, sehingga mendapatkan data dalam objek ini.
4. Hubungi metode java
Ex Expressions memungkinkan pengguna untuk mengembangkan fungsi EL khusus untuk memanggil metode kelas Java melalui Ex Expressions di halaman JSP.
1.1. Mendapatkan data
Gunakan ekspresi EL untuk mendapatkan sintaks data: "$ {Identifier}"
Ketika pernyataan ekspresi EL dieksekusi, metode PageContext.Findattribute akan dipanggil, menggunakan pengidentifikasi sebagai kata kunci untuk menemukan objek yang sesuai dari empat bidang halaman, permintaan, sesi, dan aplikasi. Jika ditemukan, itu akan mengembalikan objek yang sesuai. Jika tidak ditemukan, itu akan mengembalikan "" (Perhatikan bahwa itu bukan nol, tetapi string kosong).
EX Expressions dapat dengan mudah mendapatkan properti Javabean, atau mendapatkan data array, koleksi, dan jenis peta.
Contoh ekspresi EL untuk mendapatkan data:
<%@page language = "java" import = "java.util.*" pageenCoding = "utf-"%> <%@taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> <%@page impor = "me.gacl.domain.ponon =" c "%> <%@page impor =" me.gacl.domain.ponon = "c"%> <%page Impor = "me.gacl.domain.ponon" c "%> <%page Impor =" me.gacl.domain.ponson impor = "me.gacl.domain.address"%> <! Doctype html> <html> <head> <title> ekspresi mendapatkan data </ title> </pead> <body> <%request. $ {name} <hr> <!-Di halaman jsp, gunakan ekspresi el untuk mendapatkan atribut kacang-> <% orang p = orang baru (); p.setage (); request.setattribute ("orang", p);%> menggunakan ekspresi el-in Jsp Expression. . . . . . . . . Attributes of --><% Person person = new Person();Address address = new Address();person.setAddress(address);request.setAttribute("person",person);%>${person.address.name}<hr><!-- In the jsp page, use the el expression to obtain the data at the specified position in the list collection--><% Person p = new Person();p.setName("Lonely Cangang "); orang p = orang baru (); p.setname (" Kaisar Dewa Putih Tiger "); Daftar <Son> List = NEW ARRAYLIST <FERON> (); LIST.ADD (P); Daftar.Add (P); permintaan. -> <c: foreach var = "person" item = "$ {list}"> $ {person.name} </c: foreach> <hr> <!-Di halaman jsp, gunakan ekspresi el untuk mendapatkan data koleksi peta-> <% peta <string, string> peta = peta = peta = baru LinkedHashMap <String, String> (); map.put ("a", "aaaaxxx"); peta.put ("b", "bbbb"); peta.put ("c", "cccc"); peta.put ("", "aaaa"); peta-data. -> $ {map.c} $ {peta [""]} <Hr> <!-Itererate Map Collection-> <c: foreach var = "me" items = "$ {peta}"> $ {me.key} = $ {me.value} <br/> </c: foreach> <hr> </body> ht/htm Efek operasi adalah sebagai berikut:
1.2. Menjalankan operasi
Sintaks: $ {Operation Expression}, ekspresi EL mendukung operator berikut:
1. Operator Relasional
2. Operator logis:
3. Operator Kosong: Periksa apakah objeknya nol (kosong)
4. Ekspresi Biner: $ {USER! = NULL? USER.NAME: ""}
5. [] dan. operator
Contoh Operasi Melakukan Menggunakan Ex Expressions:
<%@page language = "java" import = "java.util.*" pageenCoding = "utf-"%> <%@taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> <%@page impor = "me.gacl.domain.user Html> <html> <head> <title> EL Expression Operator </itement> </head> <hody> <h> Ex Expression melakukan empat operasi: </h> Operasi penambahan: $ {+} <br/> Operasi pengurangan: $ {{} <br/> Operasi ganda: $ {*} <br/> Divide Operation: $ {{} <br/> Operasi Multiple: $ {*} <br/> Divide Operation: $ {{{} <br/> Operasi Multiple: $ {*} <br/> Divide Operation: $ { Operasi: </h> <%-$ {user == null} dan $ {user eq null}; Equivalent-%> $ {user == null} <br/> $ {user eq null} <br/> $ {user eq null} <br/> ekspresi el menggunakan operator kosong untuk memeriksa apakah objeknya null (kosong) </h> <% list <string> Daftar = Daftar = Daftar = NEW ArrayList <String> (); list.add ("gacl"); list.add ("xdp"); request.setAttribute ("list", list);%> <%-gunakan operator kosong untuk memeriksa apakah objeknya null (kosong)-%> <c: jika test = "$ {kosong (list)}"> <c: c: for: "$" $! Item = "$ {list}"> $ {str} <br/> </c: foreach> </c: if> <br/>%daftar <string> emptylist = null;%> <%-gunakan operator kosong untuk memeriksa apakah objek itu null (kosong)-%> <c: jika test = "$ {kosong (emplylist)}"> Sore "> Lihat </c: if> <br/> <h> Ekspresi biner digunakan dalam Ex Expressions </h> <% session.setAttribute ("user", pengguna baru ("Lonely Ganglang"));%> $ {user == null? "Sorry, you are not logged in" : user.username}<br/><h>EL expression data echo</h><% User user = new User();user.setGender("male");//Data echo request.setAttribute("user",user);%><input type="radio" name="gender" value="male" $ {user.gender == 'jantan'? 'Diperiksa': ''}> pria <input type = "Radio" name = "gender" value = "betina" $ {user.gender == 'betina'? 'Diperiksa': ''}> wanita <br/> </body> </html>Hasil operasi adalah sebagai berikut:
1.3. Dapatkan objek umum untuk pengembangan web
Bahasa ekspresi EL mendefinisikan 11 objek implisit. Menggunakan objek implisit ini dapat dengan mudah mendapatkan beberapa objek umum dalam pengembangan web dan membaca data objek ini.
Sintaks: $ {Nama objek implisit}: Dapatkan referensi ke objek
Tes 11 Objek Implisit dalam Ekspresi EL:
<%@ page language = "java" import = "java.util.*" pageEncoding = "utf-"%> <! Doctype html> <html> <head> <itement> el implisit Object </itement> </head> <body> <br/> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //map%>${pageScope.name}<br/>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //map%>${sessionScope.user}<br/>------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Ekspresi ini sering digunakan pada gema data -> <form Action = "$ {pagecontext.Request.contextPath}/servlet/registerservlet" method = "Post"> <input type = "Text" name = "UserName" value = "$ {param.username}"> <input type = "Submit" value = "register"> </form> <br/> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- http: // localhost: /javaweb_el_study_/eldemo.jsp? like = aaa & like = bb -> $ {paramValues.,]} $ {paramValues.,]} <br/> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- contoh penerimaan-encoding, headerValues["Accept-Encoding"]--%>${header["Accept-Encoding"]}<br/>-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Objek peta yang menyimpan semua bidang header permintaan HTTP. Untuk parameter permintaan, ia mengembalikan array string []. Misalnya: headerValues.cepcept mengembalikan array string []. headerValues.accept [] mengeluarkan nilai pertama dalam array-%> $ {headerValues.accept []} <br/> <%-$ {headerValues.accept-encoding} Saat menulis dengan cara ini, kesalahan akan dilaporkan ketika menguji headervalues. Jika ada "-" di header, seperti penerimaan-encoding, headervalues ["Accept-Encoding"] headervalues ["accept-encoding"] [] mengembalikan array string []. Headervalues ["Accept-Encoding"] [] [] Mengambil nilai pertama di Array-%> $ {headervalues ["Accept-encoding"] []} <br/> ------------------------------------------------------------------------------------------------------------------------------------------------------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -> $ {cookie.jsessionid.value} // Simpan peta dari semuanya Cookie <br/> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Konfigurasikan parameter inisialisasi dalam file web.xml -> <context-param> <param-name> xxx </param-name> <param-value> yyyy </param-value> </context-param> <sontexc-param> <param-name> root </param-name> <param-value>/javawebebebe_el_study _ </param-value. Parameter Inisialisasi -%> $ {initparam.xxx} <br/> $ {initparam.root} </body> </html> Kode RegisterServlet adalah sebagai berikut:
Paket me.gacl.web.controller; import java.io.ioException; import javax.servlet.servletException; import javax.servlet.http.httpservlet; import javax.servlet.htp.httpservletequest; impor javax.servlet.htp.httpservletequest; impor javax.servlet RegisterServlet memperluas httpservlet {/** Metode untuk menangani pendaftaran pengguna*/public void doGet (httpservletRequest Request, httpservletResponse response) melempar servletException, ioException {//, Parameter string username = request.getParameter ("Usernameter. request.setAttribute ("nama pengguna", nama pengguna) untuk menyimpan nama pengguna di objek permintaan* Namun, di halaman eldemo.jsp, Anda dapat menggunakan $ {param.username} untuk mendapatkan nilai parameter nama pengguna dalam objek permintaan*/permintaan. permintaan, httpservletResponse response) melempar servletException, ioException {doGet (permintaan, respons);}} Hasil tes adalah sebagai berikut:
Melihat:
Saat menguji header dan headervalue, jika ada "-" di header, seperti menerima pengodean, header ["menerima-encoding"] dan headervalues ["Accept-Encoding"]
Saat menguji cookie, misalnya, $ {cookie.key} mengambil objek cookie. Jika Anda mengakses nama dan nilai cookie, Anda harus memiliki $ {cookie.key.name} atau $ {cookie.key.value}
1.4. Hubungi metode java menggunakan el
Sintaks ekspresi EL memungkinkan pengembang untuk mengembangkan fungsi khusus untuk memanggil metode kelas Java. Sintaks: $ {prefix: Method (params)}
Satu -satunya hal yang dapat dipanggil dalam ekspresi EL adalah metode statis kelas Java. Metode statis dari kelas Java ini perlu dijelaskan dalam file TLD sebelum dapat dipanggil oleh ekspresi EL.
Fungsi Kustom EL digunakan untuk memperluas fungsi ekspresi EL, memungkinkan ekspresi EL untuk menyelesaikan fungsi yang dapat diselesaikan oleh kode program JAVA biasa.
1.5. Langkah Pengembangan Fungsi El
Secara umum, pengembangan dan penerapan fungsi kustom EL mencakup tiga langkah berikut:
1. Tulis metode statis dari kelas Java
2. Tulis file deskriptor pustaka tag (TLD) dan jelaskan fungsi khusus dalam file TLD.
3. Impor dan gunakan fungsi khusus di halaman JSP
Contoh: Mengembangkan fungsi El untuk melarikan diri dari tag HTML
1.
package me.gacl.util;/*** @ClassName: HtmlFilter* @Description: html escape processing tool class* @author: Lonely Canglang* @date: -- Morning::**/ public class HtmlFilter {/*** @Method: filter* @Description: Static method, html tag escape processing* @Anthor: Lonely Canglang** @param pesan konten untuk melarikan diri* @return konten setelah melarikan diri*/ public static string filter (string message) {if (pesan == null) return (null); konten char [] = new char [message.length ()]; message.getChars (, content.length (), konten,); stringBuffer hasil = new stringBuffer (content.length+); (konten [i]) {case '<': result.append ("<"); break; case '>': result.append (">"); break; case '&': result.append ("&"); break; case '"': hasilnya (" "); break; default: result.append (konten [i]);}}} return (break; default: hasil.2. Tulis file Tag Library Descriptor (TLD) di direktori Web-INF dan jelaskan fungsi khusus dalam file TLD.
Kode elfunction.tld adalah sebagai berikut:
<? Xml Version = "." encoding = "utf-"?> <taglib version = "." xmlns = "http://java.sun.com/xml/ns/jee" xmlns: xsi = "http://www.w.org//xmlschema-instance" xsi: schemalocation = "http://java.sun.com Web-jsptaglibrary __. xsd "> <tlib-ver-versi>. </tlib-ver-versi> <pendekingkat-name> el fungsi </prort-name> <!-Referensi URI untuk pustaka fungsi el kustom dapat dikutip seperti ini di halaman jsp: < %@taglib uri ="/erelfunction = "fn =" fn "@taglib uri ="/erelfunction "prefix =" fn "fn"@taglib uri = "/erfunction" prefix = "fn" fn " %" %" %@taglib uri ="/erelfunction "prefix =" fn "fn" %" %" %" %" %"tAGLIB URI ="/ERFUNCT "FN" FN "FN" FN " %@TAGLIB URI ="/ERFICTER "FN" FN "FN" -> <uri>/elfunction </uri> <!-<function> elemen digunakan untuk menggambarkan fungsi khusus el kustom-> <function> <creckripe> HTML Tag Escape Metode Pemrosesan </Deskripsi> <!-<name> elemen anak digunakan untuk menentukan nama elemen kustom el. -> <function-Class> me.gacl.util.htmlfilter </function-Class> <!-<function-signature> Elemen anak digunakan untuk menentukan tanda tangan metode statis di kelas Java. Tanda tangan metode harus menunjukkan jenis nilai pengembalian dari metode dan jenis setiap parameter, dan setiap parameter dipisahkan oleh koma. -> <function-signature> java.lang.String filter (java.lang.string) </section-Signature> </function> </taglib>
3. Impor dan gunakan fungsi khusus di halaman JSP
<%@ page language = "java" import = "java.util.*" pageEncoding = "utf-"%> <%-memperkenalkan Pustaka Fungsi Kustom-%> <%@ taglib uri = "/Elfunction" Prefix = "FN" Metode Judul> <! Menggunakan el-%> $ {fn: filter ("<a href = ''> diand </a>")} </body> </html> Hasil operasi adalah sebagai berikut:
1.6. Hal -hal yang perlu diperhatikan saat mengembangkan fungsi el
Setelah menulis file deskripsi pustaka tag, Anda harus menempatkannya di direktori <Web Application>/Web-INF atau subdirektori apa pun kecuali kelas dan direktori LIB di direktori web-INF.
Elemen <Uri> dalam file TLD menggunakan URI yang menentukan file TLD. URI ini perlu digunakan untuk memperkenalkan file deskripsi pustaka tag dalam file JSP.
Elemen <function> digunakan untuk menggambarkan fungsi kustom EL, di mana:
Elemen <name> anak digunakan untuk menentukan nama fungsi kustom EL.
Elemen Child <Funche-Class> digunakan untuk menentukan nama kelas Java lengkap.
Elemen anak <function-Signature> digunakan untuk menentukan tanda tangan metode statis di kelas Java. Tanda tangan metode harus menunjukkan jenis nilai pengembalian dari metode dan jenis setiap parameter, dan setiap parameter dipisahkan oleh koma.
1.7. Pencegahan El
Ex Expressions adalah teknik dalam spesifikasi JSP 2.0. Oleh karena itu, jika Anda ingin menguraikan ekspresi el EL dengan benar, Anda perlu menggunakan server web yang mendukung teknologi servlet2.4/jsp2.0.
Catatan: Beberapa server Tomcat tidak dapat menggunakan Ex Expressions
(1) Tingkatkan ke Tomcat6
(2) Tambahkan < %@ page iselignored = "false" %> ke jsp
1.8. EL Expressions mempertahankan kata kunci
Kata yang disebut dicadangkan berarti bahwa ketika penamaan variabel, nama-nama di atas harus dihindari untuk menghindari kesalahan selama kompilasi program. Ada begitu banyak ringkasan tentang konten EL Expressions.
Konten di atas memberikan pengantar terperinci tentang pengetahuan yang relevan dari ekspresi Javaweb El melalui contoh. Saya harap ini akan membantu Anda. Pada saat yang sama, saya ingin mengucapkan terima kasih banyak atas dukungan Anda untuk situs web Wulin.com!