Bahasa Ungkapan JSP


Bahasa Ungkapan JSP (EL) menjadikan akses data yang disimpan dalam JavaBeans sangat mudah. JSP EL boleh digunakan untuk mencipta kedua-dua ungkapan aritmetik dan logik. Integer, nombor titik terapung, rentetan, pemalar benar, salah dan nol boleh digunakan dalam ungkapan EL JSP.


Sintaks ringkas

Biasanya, apabila anda perlu menentukan nilai atribut dalam teg JSP, anda hanya menggunakan rentetan:

<jsp:setProperty name="box" property="perimeter" value="100"/>

JSP EL membolehkan anda menentukan formula ungkapan untuk mewakili nilai atribut . Sintaks ungkapan mudah adalah seperti berikut:

${expr}

di mana expr merujuk kepada ungkapan. Pengendali biasa dalam JSP EL ialah "." dan "[]". Kedua-dua pengendali ini membenarkan anda mengakses pelbagai sifat JavaBean melalui objek JSP terbenam.

Sebagai contoh, teg <jsp:setProperty> di atas boleh ditulis semula seperti berikut menggunakan bahasa ungkapan:

<jsp:setProperty name="box" property="perimeter" 
                 value="${2*box.width+2*box.height}"/>

Apabila pengkompil JSP melihat "${}" dalam sifat Selepas pemformatan, ia menjana kod untuk menilai ungkapan dan menghasilkan pengganti untuk nilai ungkapan.

Anda juga boleh menggunakan bahasa ungkapan dalam teks templat tag. Sebagai contoh, teg <jsp:text> hanya memasukkan teks dalam kandungannya ke dalam output JSP:

<jsp:text>
<h1>Hello JSP!</h1>
</jsp:text>

Sekarang, gunakan ungkapan dalam badan teg <jsp:text> :

<jsp:text>
Box Perimeter is: ${2*box.width + 2*box.height}
</jsp:text>

Anda boleh menggunakan kurungan untuk menyusun subungkapan dalam ungkapan EL. Contohnya, ${(1 + 2) * 3} bersamaan dengan 9, tetapi ${1 + (2 * 3)} bersamaan dengan 7.

Jika anda ingin melumpuhkan penilaian ungkapan EL, anda perlu menggunakan arahan halaman untuk menetapkan nilai atribut isELIgnored kepada benar:

<%@ page isELIgnored ="true|false" %>

Dengan cara ini, ungkapan EL akan diabaikan . Jika ditetapkan kepada palsu, bekas akan menilai ungkapan EL.


Operator asas dalam EL

ungkapan EL menyokong kebanyakan operator aritmetik dan logik yang disediakan oleh Java:

OperatorPenerangan
.               Akses sifat Bean atau entri pemetaan
[]               Akses elemen tatasusunan atau senarai terpaut
( )               Susun subungkapan untuk menukar keutamaan
                      +                 Tambah
-                 Tolak atau negatif
                      *               Darabkan
/ atau div                 Kecuali
% atau mod                 Modulo
                  == atau persamaan                 Ujian untuk kesaksamaan
!= atau tidak                 Uji sama ada ia tidak sama
                    < atau lt               Uji sama ada ia kurang daripada
> atau gt Uji sama ada ia lebih besar daripada
<= atau le                 Uji sama ada kurang daripada atau sama dengan
>= atau ge               Uji sama ada ia lebih besar daripada atau sama dengan
                && atau dan               Uji logik dan
||. atau atau               Uji logik atau
                    atau tidak                 Ujian penolakan
kosong                 Uji nilai nol

Fungsi dalam JSP EL

JSP EL membolehkan anda menggunakan fungsi dalam ungkapan. Fungsi ini mesti ditakrifkan dalam pustaka teg tersuai. Sintaks untuk menggunakan fungsi adalah seperti berikut:

${ns:func(param1, param2, ...)}

ns merujuk kepada ruang nama, func merujuk kepada nama fungsi, param1 merujuk kepada parameter pertama, param2 merujuk kepada parameter kedua dan seterusnya. Sebagai contoh, terdapat fungsi fn:length, yang ditakrifkan dalam pustaka JSTL, yang boleh digunakan untuk mendapatkan panjang rentetan seperti berikut:

${fn:length("Get my length")}

Untuk menggunakan fungsi dalam mana-mana perpustakaan teg, anda perlu pasang perpustakaan ini pada pelayan , dan kemudian masukkan perpustakaan ini dalam fail JSP menggunakan teg <taglib>


Objek tersirat JSP EL

JSP EL menyokong objek tersirat yang disenaraikan dalam jadual berikut:

隐含对象描述
                    pageScope                    page 作用域
                    requestScope                    request 作用域
                    sessionScope                    session 作用域
                    applicationScope                    application 作用域
                    param                    Request 对象的参数,字符串
                    paramValues                    Request对象的参数,字符串集合
                    header                    HTTP 信息头,字符串
                    headerValues                    HTTP 信息头,字符串集合
                    initParam                    上下文初始化参数
                    cookie                    Cookie值
                    pageContext                    当前页面的pageContext

Anda boleh menggunakan objek ini dalam ungkapan sama seperti pembolehubah. Seterusnya, beberapa contoh akan diberikan untuk lebih memahami konsep ini.


Objek pageContext

Objek pageContext ialah rujukan kepada objek pageContext dalam JSP. Melalui objek pageContext, anda boleh mengakses objek permintaan. Sebagai contoh, akses rentetan pertanyaan yang diluluskan dalam objek permintaan, seperti ini:

${pageContext.request.queryString}

Objek skop

pembolehubah pageScope, requestScope, sessionScope dan applicationScope digunakan untuk mengakses pembolehubah yang disimpan pada setiap peringkat skop.

Sebagai contoh, jika anda perlu mengakses pembolehubah kotak secara eksplisit dalam lapisan applicationScope, anda boleh mengaksesnya seperti ini: applicationScope.box.


objek param dan paramValues ​​

objek param dan paramValues ​​digunakan untuk mengakses nilai parameter dengan menggunakan kaedah request.getParameter dan kaedah request.getParameterValues.

Sebagai contoh, untuk mengakses parameter bernama tertib, anda boleh menggunakan ungkapan: ${param.order}, atau ${param["order"]}.

Contoh berikut menunjukkan cara mengakses parameter nama pengguna dalam permintaan:

<%@ 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 rentetan tunggal, manakala objek paramValues ​​mengembalikan tatasusunan rentetan.


header dan headerValues ​​​​objek

Objek header dan headerValues ​​digunakan untuk mengakses pengepala maklumat dengan menggunakan kaedah request.getHeader dan kaedah request.getHeaders.

Sebagai contoh, untuk mengakses pengepala maklumat bernama ejen pengguna, anda boleh menggunakan ungkapan: ${header.user-agent}, atau ${header["user-agent"]}.

Contoh berikut menunjukkan cara mengakses pengepala maklumat ejen pengguna:

<%@ 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>

Keputusan yang dijalankan adalah seperti berikut:

jsp-expression-language.jpg

The objek header mengembalikan satu nilai, manakala headerValues ​​mengembalikan tatasusunan rentetan.