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.