JSP Expression Language (EL) ทำให้การเข้าถึงข้อมูลที่จัดเก็บไว้ใน JavaBeans ง่ายมาก JSP EL สามารถใช้เพื่อสร้างทั้งนิพจน์ทางคณิตศาสตร์และตรรกะ จำนวนเต็ม ตัวเลขทศนิยม สตริง ค่าคงที่จริง เท็จ และ null สามารถใช้ในนิพจน์ JSP EL
โดยทั่วไป เมื่อคุณต้องการระบุค่าแอตทริบิวต์ในแท็ก JSP คุณเพียงแค่ใช้สตริง:
<jsp:setProperty name="box" property="perimeter" value="100"/>
JSP EL อนุญาตให้คุณระบุนิพจน์เพื่อแสดงค่าคุณสมบัติ ไวยากรณ์นิพจน์อย่างง่ายมีดังนี้:
${แสดงออก}
ในหมู่พวกเขา
หมดอายุ หมายถึงการแสดงออก ตัวดำเนินการทั่วไปใน JSP EL คือ
-และ
-. โอเปอเรเตอร์ทั้งสองนี้ช่วยให้คุณเข้าถึงได้หลากหลาย
JavaBeans คุณสมบัติ.
ยกตัวอย่างข้างต้น
<jsp:setProperty>แท็กสามารถเขียนใหม่ได้โดยใช้ภาษานิพจน์ดังนี้:
<jsp:setProperty name="box" property="perimeter" value="${2*box.width+2*box.height}"/>
เมื่อคอมไพเลอร์ JSP เห็น "
-"หลังจากการจัดรูปแบบแล้ว ระบบจะสร้างโค้ดเพื่อประเมินนิพจน์และสร้างการทดแทนค่าของนิพจน์
คุณยังสามารถใช้ภาษานิพจน์ในข้อความเทมเพลตของป้ายกำกับได้ ตัวอย่างเช่น
<jsp:ข้อความ>แท็ก เพียงแทรกข้อความในส่วนเนื้อหาลงในเอาต์พุต JSP:
<jsp:text><h1>สวัสดี JSP!</h1></jsp:text>
ตอนนี้ใน
<jsp:ข้อความ>ใช้นิพจน์ในส่วนเนื้อหาของแท็ก เช่นนี้
<jsp:text>เส้นรอบวงของกล่องคือ: ${2*box.width + 2*box.height}</jsp:text>
วงเล็บสามารถใช้เพื่อจัดระเบียบนิพจน์ย่อยในนิพจน์ EL ตัวอย่างเช่น
${(1 + 2) * 3}เท่ากับ 9 แต่
${1 + (2 * 3)}เท่ากับ 7
หากต้องการปิดใช้งานการประเมินนิพจน์ EL ให้ใช้
หน้าหนังสือคำแนะนำจะ
ถูกละเว้นค่าแอตทริบิวต์ถูกกำหนดเป็น
จริง:
<%@ หน้า isELIGnored ="true|false" %>
ด้วยวิธีนี้ นิพจน์ EL จะถูกละเว้น หากตั้งค่าเป็น
เท็จคอนเทนเนอร์จะประเมินนิพจน์ EL
นิพจน์ EL รองรับตัวดำเนินการทางคณิตศาสตร์และตรรกะส่วนใหญ่ที่ Java มีให้:
ผู้ดำเนินการ | อธิบาย |
---|---|
- | เยี่ยมชมถั่วแอตทริบิวต์หรือรายการแผนที่ |
- | เข้าถึงองค์ประกอบของอาร์เรย์หรือรายการที่เชื่อมโยง |
- | จัดระเบียบนิพจน์ย่อยเพื่อเปลี่ยนลำดับความสำคัญ |
- | เพิ่ม |
- | ลบหรือลบ |
- | เอา |
/ หรือ div | ลบ |
% หรือม็อด | ใช้แม่พิมพ์ |
== หรือสมการ | ทดสอบความเท่าเทียมกัน |
!= หรือ ne | ทดสอบว่าไม่เท่ากัน |
< หรือ lt | ทดสอบว่าน้อยกว่าหรือไม่ |
> หรือ gt | ทดสอบว่ามากกว่าหรือไม่ |
<= หรือ ล | ทดสอบว่าน้อยกว่าหรือเท่ากับ |
>= ออร์จ | ทดสอบว่ามากกว่าหรือเท่ากับ |
&&หรือและ | ทดสอบตรรกะและ |
||.หรือหรือ | ทดสอบตรรกะหรือ |
! หรือไม่ | ทดสอบการปฏิเสธ |
ว่างเปล่า | ทดสอบหาค่าว่าง |
JSP EL อนุญาตให้คุณใช้ฟังก์ชันในนิพจน์ได้ ต้องกำหนดฟังก์ชันเหล่านี้ในไลบรารีแท็กที่กำหนดเอง ไวยากรณ์สำหรับการใช้ฟังก์ชันมีดังนี้:
${ns:func(param1, param2, ...)}
ns หมายถึงเนมสเปซ
ฟังก์ชั่นหมายถึงชื่อของฟังก์ชั่น,
พารามิเตอร์1หมายถึงพารามิเตอร์แรก,
พารามิเตอร์2 หมายถึงพารามิเตอร์ตัวที่สองและอื่นๆ ตัวอย่างเช่นมีฟังก์ชัน
FN: ความยาวซึ่งกำหนดไว้ในไลบรารี JSTL สามารถใช้รับความยาวของสตริงได้ดังนี้:
${fn:length("รับความยาวของฉัน")}
หากต้องการใช้ฟังก์ชันจากไลบรารีแท็กใดๆ คุณต้องติดตั้งไลบรารีเหล่านี้ในเซิร์ฟเวอร์แล้วจึงใช้งาน
<แท็กลิบ>แท็กรวมไลบรารีเหล่านี้ไว้ในไฟล์ JSP
JSP EL สนับสนุนอ็อบเจ็กต์โดยนัยที่แสดงอยู่ในตารางต่อไปนี้:
วัตถุที่ซ่อนอยู่ | อธิบาย |
---|---|
ขอบเขตหน้า | ขอบเขตหน้า |
ขอขอบเขต | ขอบเขตคำขอ |
เซสชั่นขอบเขต | ขอบเขตเซสชัน |
ขอบเขตการใช้งาน | ขอบเขตการสมัคร |
พารามิเตอร์ | พารามิเตอร์ของอ็อบเจ็กต์คำขอ สตริง |
ค่าพารามิเตอร์ | พารามิเตอร์ของอ็อบเจ็กต์คำขอ การรวบรวมสตริง |
ส่วนหัว | ส่วนหัว HTTP, สตริง |
ค่าส่วนหัว | ส่วนหัว HTTP การรวบรวมสตริง |
initParam | พารามิเตอร์การเริ่มต้นบริบท |
คุกกี้ | ค่าคุกกี้ |
บริบทของหน้า | บริบทของหน้าปัจจุบัน |
คุณสามารถใช้ออบเจ็กต์เหล่านี้ในนิพจน์ได้เหมือนกับตัวแปร ต่อไป เราจะยกตัวอย่างบางส่วนเพื่อให้เข้าใจแนวคิดนี้ได้ดีขึ้น
บริบทของหน้าวัตถุอยู่ใน JSP
บริบทของหน้าการอ้างอิงวัตถุ ผ่าน
บริบทของหน้าวัตถุที่คุณสามารถเข้าถึงได้
ขอวัตถุ. เช่น เยี่ยมชม
ขอสตริงการสืบค้นที่วัตถุส่งผ่านเข้ามา มีลักษณะดังนี้:
${pageContext.request.queryString}
ขอบเขตหน้า
ขอขอบเขต
เซสชั่นขอบเขต
ขอบเขตการใช้งานตัวแปรใช้เพื่อเข้าถึงตัวแปรที่จัดเก็บในระดับขอบเขตต่างๆ
ตัวอย่างเช่น หากคุณต้องการเข้าถึงไฟล์โดยตรง
ขอบเขตการใช้งานเป็นชั้นๆ
กล่องตัวแปรสามารถเข้าถึงได้ดังนี้:
applicationScope.box.
พารามิเตอร์และ
ค่าพารามิเตอร์วัตถุที่ใช้ในการเข้าถึงค่าพารามิเตอร์โดยใช้
request.getParameterวิธีการและ
request.getParameterValuesวิธี.
เช่น การเข้าถึงไฟล์ชื่อ
คำสั่ง พารามิเตอร์ คุณสามารถใช้นิพจน์ดังนี้:
${param.order}, หรือ
${พารามิเตอร์["สั่งซื้อ"]}.
ตัวอย่างต่อไปนี้แสดงวิธีการเข้าถึงคำขอ
ชื่อผู้ใช้พารามิเตอร์:
<%@ page import="java.io.*,java.util.*" %><% String title = "การเข้าถึงพารามิเตอร์คำขอ"; %><html><head><title><% out.print(title %></title></head><body><center><h1><% out.print(หัวข้อ); %></h1></center><div align="center"><p>${param["ชื่อผู้ใช้"]}</p></div></body></html>
วัตถุพารามิเตอร์ส่งกลับสตริงเดียวในขณะที่
ค่าพารามิเตอร์วัตถุส่งคืนอาร์เรย์ของสตริง
ส่วนหัวและ
ค่าส่วนหัววัตถุถูกใช้เพื่อเข้าถึงส่วนหัวของข้อมูลโดยใช้
request.getHeaderวิธีการและ
request.getHeadersวิธี.
เช่น ในการเข้าถึงไฟล์ชื่อ
ตัวแทนผู้ใช้ ส่วนหัวของข้อมูล คุณสามารถใช้นิพจน์ดังนี้:
${header.user-ตัวแทน}, หรือ
${header["ผู้ใช้ตัวแทน"]}.
ตัวอย่างต่อไปนี้แสดงวิธีการเข้าถึง
ตัวแทนผู้ใช้ส่วนหัวข้อมูล:
<%@ page import="java.io.*,java.util.*" %><% String title = "ตัวอย่างตัวแทนผู้ใช้"; %><html><head><title><% out.print(title %></title></head><body><center><h1><% out.print(หัวข้อ); %></h1></center><div align="center"><p>${header["user-agent"]}</p></div></body></html>
ผลการวิ่งมีดังนี้:
วัตถุส่วนหัวส่งคืนค่าเดียวในขณะที่ headerValues ส่งคืนอาร์เรย์ของสตริง