JSP - Expression Language (EL)
JSP Expression Language (EL) memungkinkan akses data aplikasi yang disimpan dalam komponen JavaBeans dengan mudah. JSP EL memungkinkan Anda membuat ekspresi keduanya(a) aritmatika dan (b)logis. Dalam ekspresi JSP EL, Anda dapat menggunakanintegers, floating point numbers, strings, the built-in constants true and false untuk nilai boolean, dan null.
Sintaks Sederhana
Biasanya, saat Anda menentukan nilai atribut dalam tag JSP, Anda cukup menggunakan string. Misalnya -
<jsp:setProperty name = "box" property = "perimeter" value = "100"/>
JSP EL memungkinkan Anda menentukan ekspresi untuk salah satu nilai atribut ini. Sintaks sederhana untuk JSP EL adalah sebagai berikut -
${expr}
Sini exprmenentukan ekspresi itu sendiri. Operator paling umum di JSP EL adalah. dan []. Kedua operator ini memungkinkan Anda untuk mengakses berbagai atribut Java Beans dan objek JSP bawaan.
Misalnya sintaks di atas <jsp:setProperty> tag dapat ditulis dengan ekspresi seperti -
<jsp:setProperty name = "box" property = "perimeter"
value = "${2*box.width+2*box.height}"/>
Saat compiler JSP melihat file ${} bentuk dalam atribut, itu menghasilkan kode untuk mengevaluasi ekspresi dan menggantikan nilai expresson.
Anda juga dapat menggunakan ekspresi JSP EL dalam teks template untuk sebuah tag. Misalnya, file<jsp:text>tag hanya memasukkan isinya ke dalam tubuh JSP. Pengikut<jsp:text> deklarasi menyisipkan <h1>Hello JSP!</h1> ke dalam output JSP -
<jsp:text>
<h1>Hello JSP!</h1>
</jsp:text>
Anda sekarang dapat menyertakan ekspresi JSP EL di badan file <jsp:text> tag (atau tag lainnya) dengan yang sama ${}sintaks yang Anda gunakan untuk atribut. Misalnya -
<jsp:text>
Box Perimeter is: ${2*box.width + 2*box.height}
</jsp:text>
Ekspresi EL dapat menggunakan tanda kurung untuk mengelompokkan subekspresi. Sebagai contoh,${(1 + 2) * 3} equals 9, but ${1 + (2 * 3)} equals 7.
Untuk menonaktifkan evaluasi ekspresi EL, kami menetapkan isELIgnored atribut direktif halaman seperti di bawah ini -
<%@ page isELIgnored = "true|false" %>
Nilai valid dari atribut ini adalah benar dan salah. Jika benar, ekspresi EL diabaikan ketika muncul dalam teks statis atau atribut tag. Jika salah, ekspresi EL dievaluasi oleh penampung.
Operator Dasar di EL
JSP Expression Language (EL) mendukung sebagian besar operator aritmatika dan logika yang didukung oleh Java. Tabel berikut mencantumkan operator yang paling sering digunakan -
S.No. | Operator & Deskripsi |
---|---|
1 | . Akses properti kacang atau entri Peta |
2 | [] Akses array atau elemen Daftar |
3 | ( ) Kelompokkan sub-ekspresi untuk mengubah urutan evaluasi |
4 | + Tambahan |
5 | - Pengurangan atau negasi nilai |
6 | * Perkalian |
7 | / or div Divisi |
8 | % or mod Modulo (sisa) |
9 | == or eq Menguji kesetaraan |
10 | != or ne Menguji ketidaksetaraan |
11 | < or lt Uji kurang dari |
12 | > or gt Uji lebih besar dari |
13 | <= or le Uji kurang dari atau sama |
14 | >= or ge Uji lebih dari atau sama |
15 | && or and Uji logika AND |
16 | || or or Uji logika OR |
17 | ! or not Komplemen Unary Boolean |
18 | empty Uji nilai variabel kosong |
Fungsi di JSP EL
JSP EL memungkinkan Anda menggunakan fungsi dalam ekspresi juga. Fungsi ini harus ditentukan di pustaka tag kustom. Penggunaan fungsi memiliki sintaks berikut -
${ns:func(param1, param2, ...)}
Dimana ns adalah namespace dari fungsi tersebut, func adalah nama fungsi dan param1adalah nilai parameter pertama. Misalnya fungsinyafn:length, yang merupakan bagian dari pustaka JSTL. Fungsi ini dapat digunakan sebagai berikut untuk mendapatkan panjang sebuah string.
${fn:length("Get my length")}
Untuk menggunakan fungsi dari pustaka tag apa pun (standar atau kustom), Anda harus menginstal pustaka itu di server Anda dan harus menyertakan pustaka di JSP Anda menggunakan <taglib> direktif seperti yang dijelaskan dalam bab JSTL.
Objek Implisit JSP EL
Bahasa ekspresi JSP mendukung objek implisit berikut -
S.No | Objek & Deskripsi implisit |
---|---|
1 | pageScope Variabel cakupan dari cakupan halaman |
2 | requestScope Variabel yang dicakup dari cakupan permintaan |
3 | sessionScope Variabel yang dicakup dari cakupan sesi |
4 | applicationScope Variabel cakupan dari ruang lingkup aplikasi |
5 | param Minta parameter sebagai string |
6 | paramValues Meminta parameter sebagai kumpulan string |
7 | header Header permintaan HTTP sebagai string |
8 | headerValues Header permintaan HTTP sebagai kumpulan string |
9 | initParam Parameter inisialisasi konteks |
10 | cookie Nilai cookie |
11 | pageContext Objek JSP PageContext untuk halaman saat ini |
Anda dapat menggunakan objek-objek ini dalam ekspresi seolah-olah mereka adalah variabel. Contoh berikut akan membantu Anda memahami konsep -
Objek pageContext
Objek pageContext memberi Anda akses ke objek JSP pageContext. Melalui objek pageContext, Anda dapat mengakses objek permintaan. Misalnya, untuk mengakses string kueri yang masuk untuk suatu permintaan, Anda dapat menggunakan ekspresi berikut -
${pageContext.request.queryString}
Objek Lingkup
Itu pageScope, requestScope, sessionScope, dan applicationScope variabel memberikan akses ke variabel yang disimpan di setiap tingkat cakupan.
Misalnya, jika Anda perlu mengakses variabel box secara eksplisit dalam cakupan aplikasi, Anda dapat mengaksesnya melalui variabel applicationScope sebagai applicationScope.box.
Objek param dan paramValues
Objek param dan paramValues memberi Anda akses ke nilai parameter yang biasanya tersedia melalui request.getParameter dan request.getParameterValues metode.
Misalnya, untuk mengakses parameter bernama order, gunakan ekspresi ${param.order} atau ${param["order"]}.
Berikut adalah contoh untuk mengakses parameter permintaan bernama nama pengguna -
<%@ page import = "java.io.*,java.util.*" %>
<%String title = "Accessing Request Param";%>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<center>
<h1><% out.print(title); %></h1>
</center>
<div align = "center">
<p>${param["username"]}</p>
</div>
</body>
</html>
Objek param mengembalikan nilai string tunggal, sedangkan objek paramValues mengembalikan larik string.
header dan headerValues Objects
Objek header dan headerValues memberi Anda akses ke nilai header yang biasanya tersedia melalui request.getHeader dan request.getHeaders metode.
Misalnya, untuk mengakses header bernama agen-pengguna, gunakan ekspresi ${header.user-agent} atau ${header["user-agent"]}.
Berikut adalah contoh untuk mengakses parameter header bernama user-agent -
<%@ page import = "java.io.*,java.util.*" %>
<%String title = "User Agent Example";%>
<html>
<head>
<title><% out.print(title); %></title>
</head>
<body>
<center>
<h1><% out.print(title); %></h1>
</center>
<div align = "center">
<p>${header["user-agent"]}</p>
</div>
</body>
</html>
Outputnya akan seperti berikut -
User Agent Example
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0;
SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729;
Media Center PC 6.0; HPNTDF; .NET4.0C; InfoPath.2)
Objek header mengembalikan nilai string tunggal, sedangkan objek headerValues mengembalikan array string.