ภาษาการแสดงออกใน JSP
⚡ สรุปอย่างชาญฉลาด
Expression Language ใน JSP ช่วยให้การเข้าถึงข้อมูลที่จัดเก็บไว้ทำได้ง่ายขึ้น JavaBean และอ็อบเจ็กต์โดยปริยาย เช่น request, session และ application ซึ่งถูกนำมาใช้ใน JSP 2.0 โดยรองรับตัวดำเนินการทางคณิตศาสตร์ ตรรกะ และความสัมพันธ์ รวมถึงคำสั่งการตัดสินใจและลูปที่เขียนอยู่ภายในแท็ก EL

ภาษานิพจน์ (EL) คืออะไร?
Expression Language (EL) เป็นกลไกที่ทำให้การเข้าถึงข้อมูลที่จัดเก็บง่ายขึ้น Java ส่วนประกอบถั่วและวัตถุอื่น ๆ เช่นคำขอ เซสชัน และแอปพลิเคชัน ฯลฯ
มีตัวดำเนินการมากมายใน JSP ที่ใช้ใน EL เช่น ตัวดำเนินการทางคณิตศาสตร์และตรรกะเพื่อดำเนินการนิพจน์ ซึ่งเปิดตัวใน JSP 2.0
ไวยากรณ์ JSP ของภาษานิพจน์ (EL)
ไวยากรณ์ของ EL : ${expression}
- ใน JSP สิ่งที่มีอยู่ในวงเล็บปีกกาจะได้รับการประเมินเมื่อรันไทม์ส่งไปยังเอาท์พุตสตรีม
- นิพจน์นี้เป็นนิพจน์ EL ที่ถูกต้องและสามารถผสมกับข้อความคงที่และสามารถใช้ร่วมกับนิพจน์อื่นเพื่อสร้างนิพจน์ที่ใหญ่ขึ้นได้
เพื่อให้เข้าใจถึงวิธีการทำงานของนิพจน์ใน JSP ได้ดียิ่งขึ้น เราจะดูตัวอย่างด้านล่าง ในตัวอย่างนี้ เราจะดูว่า EL ถูกใช้เป็นตัวดำเนินการเพื่อบวกตัวเลขสองตัว (1 + 2) และรับผลลัพธ์ตามลำดับอย่างไร
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru JSP1</title> </head> <body> <a>Expression is:</a> ${1+2}; </body> </html>
คำอธิบายของ Code:
- Code 11 แนว: Expression Language (EL) ถูกกำหนดไว้โดยให้เราทำการบวกตัวเลขสองตัวคือ 1+2 ดังนั้นผลลัพธ์ที่ได้จะเป็น 3
เมื่อคุณรันโค้ดข้างต้นคุณจะได้ผลลัพธ์ดังต่อไปนี้
เอาท์พุต:
- นิพจน์คือ: 3 (เนื่องจากตัวเลข 1+2 จะถูกเพิ่มเข้าไปและทำหน้าที่เป็นผลลัพธ์)
คำสั่งควบคุมการไหล:
JSP ให้อำนาจของ Java เพื่อนำไปฝังในแอปพลิเคชัน เราสามารถใช้ API และ Building Block ทั้งหมดของ Java in การเขียนโปรแกรมเจเอสพี รวมถึงคำสั่งควบคุมโฟลว์ซึ่งรวมถึงการตัดสินใจและคำสั่งลูป
คำสั่งควบคุมการไหลมีสองประเภทที่อธิบายไว้ด้านล่าง
- คำแถลงการตัดสินใจ
- คำสั่งวนรอบ
คำแถลงการตัดสินใจ:
คำสั่งการตัดสินใจใน JSP ขึ้นอยู่กับว่าชุดเงื่อนไขเป็นจริงหรือเท็จ คำสั่งจะทำงานตามนั้น
คำแถลงการตัดสินใจมีสองประเภทที่อธิบายไว้ด้านล่าง:
- ถ้า-อย่างอื่น
- สลับ
JSP ถ้า-อย่างอื่น
คำสั่ง “If else” เป็นคำสั่งพื้นฐานของคำสั่ง control flow ทั้งหมด และคำสั่งนี้จะบอกให้โปรแกรมดำเนินการโค้ดบางส่วนเฉพาะในกรณีที่การทดสอบนั้นประเมินว่าเป็นจริงเท่านั้น
เงื่อนไขนี้ใช้เพื่อทดสอบเงื่อนไขมากกว่าหนึ่งเงื่อนไขว่าเป็นจริงหรือเท็จ
- หากเงื่อนไขแรกเป็นจริง ระบบจะดำเนินการ "if block" และ
- หากเป็นเท็จ ระบบจะดำเนินการ "else block"
ไวยากรณ์ของคำสั่ง if – else:
If(test condition) { //Block of statements } else { //Block of statements }
ในตัวอย่างนี้ เราจะทดสอบเงื่อนไข "if else" โดยการรับตัวแปรและตรวจสอบค่าว่าตัวแปรตรงกับสิ่งที่เริ่มต้นไว้หรือไม่:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru JSP2</title> </head> <body> <%! int month=5; %> <% if(month==2){ %> <a>Its February</a> <% }else{ %> <a>Any month other than February</a> <%} %> </body> </html>
คำอธิบายของรหัส:
- Code 10 แนว: เดือนที่ตั้งชื่อตัวแปรจะเริ่มต้นเป็น 5 ในแท็กนิพจน์
- Code 11 แนว: ในแท็ก EL มีคำว่า "if Condition" ระบุว่าถ้าเดือนมีค่าเท่ากับ 2 (ทดสอบเงื่อนไขที่นี่ว่าเป็นจริงหรือเท็จ)
- Code 12 แนว: หากเงื่อนไขเป็นจริงซึ่งตัวแปรเดือนคือ 2 ตัวแปรจะพิมพ์ไปที่เอาท์พุตสตรีม
- Code บรรทัดที่ 13-15: หากเงื่อนไขข้างต้นล้มเหลว ระบบจะย้ายไปยังส่วนอื่นสำหรับกรณีอื่นๆ ทั้งหมดที่คำสั่งจะพิมพ์ไปยังเอาท์พุตสตรีมและเงื่อนไขถูกปิด
เมื่อคุณรันโค้ดข้างต้นคุณจะได้ผลลัพธ์ดังต่อไปนี้
Output:
- เนื่องจากเดือนที่เรามีคือ 5 ซึ่งไม่เท่ากับ #2 (กุมภาพันธ์) ดังนั้น เราจึงมีผลลัพธ์เป็น "เดือนอื่นที่ไม่ใช่กุมภาพันธ์" (เดือนจะระบุเป็น 5 ดังนั้นจึงมีการดำเนินการอื่น)
เจเอสพี สวิตช์
เนื้อความของคำสั่ง switch เรียกว่า "switch block"
- กรณีสวิตช์ใช้เพื่อตรวจสอบจำนวนเส้นทางการดำเนินการที่เป็นไปได้
- สวิตช์สามารถใช้ได้กับข้อมูลทุกประเภท
- คำสั่ง switch มีมากกว่าหนึ่งกรณีและหนึ่งกรณีเริ่มต้น
- มันจะประเมินนิพจน์แล้วดำเนินการคำสั่งทั้งหมดที่ปฏิบัติตามกรณีที่ตรงกัน
ไวยากรณ์สำหรับคำสั่ง switch:
switch (operator) { Case 1: Block of statements break; Case 2: Block of statements break; case n: Block of statements break; default: Block of statements break; }
- บล็อกสวิตช์เริ่มต้นด้วยพารามิเตอร์หนึ่งตัวซึ่งเป็นตัวดำเนินการที่ต้องส่งผ่านและ
- จากนั้นจะมีกรณีต่างๆ ที่ให้เงื่อนไขและกรณีใดๆ ที่ตรงกับตัวดำเนินการที่จะดำเนินการ
ในตัวอย่างด้านล่าง เราได้กำหนดตัวแปรชื่อ week และจะนำไปเปรียบเทียบกับกรณีที่เป็นจริง ในกรณีนี้ week คือ 2 ดังนั้น 2nd case ตรงกัน และผลลัพธ์คือวันอังคาร:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru JSP3</title> </head> <body> <%! int week=2; %> <% switch(week){ case 0: out.println("Sunday"); break; case 1: out.println("Monday"); break; case 2: out.println("Tuesday"); break; case 3: out.println("wednesday"); break; case 4: out.println("Thursday"); break; case 5: out.println("Friday"); break; default: out.println("Saturday"); } %> </body> </html>
คำอธิบายของ Code:
- Code 10 แนว: ตัวแปรที่ตั้งชื่อสัปดาห์จะเริ่มต้นเป็น 2 ในแท็กนิพจน์
- Code 11 แนว: ในแท็ก EL กรณีสวิตช์จะเริ่มต้นโดยที่สัปดาห์ถูกส่งเป็นพารามิเตอร์
- Code บรรทัดที่ 12 – 29: ทุกกรณีได้รับการกล่าวถึงโดยเริ่มจากกรณีที่ 0 ถึงกรณีที่ 5 โดยที่ค่าของพารามิเตอร์สัปดาห์จะตรงกับกรณีต่างๆ และเอาต์พุตจะถูกพิมพ์ตามลำดับ ในกรณีนี้ ค่าคือ 2 ดังนั้นกรณีที่ 2 จะถูกดำเนินการในกรณีนี้ ที่นี่ “out” คือคลาสของ JSP ซึ่งเขียนสตรีมเอาต์พุตสำหรับการตอบสนองที่สร้างขึ้น และ “println” เป็นวิธีการของคลาสนั้น
- Code บรรทัดที่ 30-32: หากทุกกรณีข้างต้นล้มเหลว มันจะย้ายไปยังส่วนเริ่มต้นและจะถูกดำเนินการ โดยที่คำสั่งจะพิมพ์ไปยังเอาท์พุตสตรีมและเงื่อนไขถูกปิด
เมื่อคุณรันโค้ดข้างต้นคุณจะได้ผลลัพธ์ดังต่อไปนี้
Output:
- ผลลัพธ์ในกรณีนี้คือวันอังคารเนื่องจากเรียกว่ากรณีที่ 2
คำสั่งวนซ้ำ:
JSP สำหรับวง
ใช้สำหรับวนซ้ำองค์ประกอบสำหรับเงื่อนไขบางอย่าง และมีพารามิเตอร์ 3 ตัว
- ตัวนับตัวแปรถูกเตรียมใช้งานแล้ว
- เงื่อนไขจนถึงจะต้องดำเนินการวนซ้ำ
- ต้องเพิ่มตัวนับ
สำหรับไวยากรณ์ลูป:
For(inti=0;i<n;i++) { //block of statements }
ในตัวอย่างนี้ เรามีลูป for ที่วนซ้ำจนกว่าตัวนับจะน้อยกว่าตัวเลขที่กำหนด:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru JSP4</title> </head> <body> <%! int num=5; %> <% out.println("Numbers are:"); for(int i=0;i<num;i++){ out.println(i); }%> </body> </html>
คำอธิบายสำหรับรหัส:
- Code 10 แนว: ตัวแปรชื่อ “num” ถูกเตรียมใช้งานเป็น 5 ในแท็กนิพจน์
- Code บรรทัดที่ 11-14: ในแท็ก EL นั้น “out” คือคลาสของ JSP และ “println” เป็นวิธีการพิมพ์ในเอาท์พุตสตรีมและ for loop เริ่มต้นซึ่งมีพารามิเตอร์สามตัว:
- ตัวแปร i เริ่มต้นเป็น 0
- มีการกำหนดเงื่อนไขโดยที่ i มีค่าน้อยกว่าตัวแปรท้องถิ่น num
- และฉันจะเพิ่มขึ้นทุกครั้งที่วนซ้ำ
ในเนื้อความของ "forloop" มีคลาสของ JSP ออกมาซึ่งพิมพ์ลงในสตรีมเอาต์พุตโดยใช้วิธี println โดยที่เรากำลังพิมพ์ตัวแปร i
เมื่อคุณรันโค้ดข้างต้นคุณจะได้ผลลัพธ์ดังต่อไปนี้
Output:
- เอาท์พุต Numbers คือ 0 1 2 3 4 ในตัวอย่างนี้ เราจะให้เงื่อนไขที่ว่าจนกว่าตัวนับจะน้อยกว่าเท่ากับตัวแปร จะต้องดำเนินการ "for loop" ตัวเลขคือ 5 ดังนั้นการวนซ้ำจะเริ่มจาก 0 และรันจนถึง 4 (5 ครั้ง) ดังนั้นเอาท์พุต
JSP ในขณะที่วนซ้ำ
มันถูกใช้เพื่อย้ำ องค์ประกอบ โดยมีเงื่อนไขหนึ่งพารามิเตอร์
ไวยากรณ์:
While(i<n) { //Block of statements }
ในตัวอย่างนี้ เรามีลูป while ที่จะวนซ้ำไปเรื่อยๆ จนกว่าจะถึงวันที่มีค่ามากกว่าเท่ากับตัวนับ:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru JSP5</title> </head> <body> <%! int day=2; int i=1; %> <% while(day>=i){ if(day==i){ out.println("Its Monday"); break;} i++;} %> </body> </html>
คำอธิบายของรหัส:
- Code 10 แนว: ตัวแปรชื่อ i เริ่มต้นเป็น 1 และวันเป็น 2 ในแท็กนิพจน์
- Code บรรทัดที่ 11-17: ในแท็ก EL มีลูป "while" ซึ่งจะวนซ้ำไปเรื่อยๆ จนกว่าจะตรงตามเงื่อนไขที่ตั้งไว้ เช่น ถ้าวันมากกว่าหรือเท่ากับตัวแปร i เงื่อนไขจะเป็นจริง (day>=i) ภายในลูป "while" จะมีเงื่อนไข "if" (วันเท่ากับ i) และถ้าเงื่อนไข "if" เป็นจริง ก็จะพิมพ์ข้อความออกมา และออกจากลูป while มิฉะนั้น ตัวแปร i จะถูกเพิ่มค่า และลูปจะวนซ้ำต่อไป
เมื่อเรารันโค้ดจะได้ผลลัพธ์ดังนี้
ผลลัพธ์คือ:
- ผลลัพธ์ของโค้ดนี้จะเป็น “its Monday"
JSP Operaโปร
JSP Operators รองรับตัวดำเนินการทางคณิตศาสตร์และตรรกะส่วนใหญ่ซึ่งได้รับการสนับสนุนโดย ชวา ภายในแท็กภาษาแสดงออก (EL) ตัวดำเนินการที่ใช้บ่อยมีดังต่อไปนี้:
ต่อไปนี้คือตัวดำเนินการ:
| . | เข้าถึงคุณสมบัติ bean หรือรายการแผนที่ |
| [] | เข้าถึงอาร์เรย์หรือองค์ประกอบรายการ |
| () | จัดกลุ่มนิพจน์ย่อยเพื่อเปลี่ยนลำดับการประเมิน |
| + | นอกจากนี้ |
| - | ตtracการปฏิเสธหรือการกลับค่า |
| * | การคูณ |
| / หรือ div | การแบ่ง |
| % หรือดัดแปลง | โมดูโล่ (ที่เหลือ) |
| == หรือสมการ | ทดสอบความเท่าเทียมกัน |
| != หรือ ne | ทดสอบความไม่เท่าเทียมกัน |
| < หรือ lt | ทดสอบได้น้อยกว่า |
| > หรือ gt | ทดสอบให้มากกว่า |
| <= หรือ ล | ทดสอบน้อยกว่าหรือเท่ากับ |
| >= หรือ ge | ทดสอบมากกว่าหรือเท่ากับ |
| &&หรือและ | ทดสอบตรรกะและ |
| - หรือหรือ | ทดสอบตรรกะหรือ |
| - หรือไม่ | ส่วนเสริม Unary Boolean |
| ว่างเปล่า | ทดสอบค่าตัวแปรว่าง |
ในตัวอย่างนี้
- เรากำลังประกาศตัวแปรสองตัวคือ num1 และ num2 จากนั้นรับตัวแปร num3 โดยที่เราใช้ตัวดำเนินการ JSP + by เพื่อเพิ่ม num1 และ num2 และรับ num3
- จากนั้นเราตรวจสอบเงื่อนไขว่า num3 ไม่เท่ากับ 0 โดยใช้ตัวดำเนินการ JSP (!=, >) และ
- จากนั้นนำตัวแปรอื่น num4 มาคูณ num1 และ num2 สองตัว เราจะได้ num4
ตัวเลขทั้งหมดเหล่านี้ควรพิมพ์ออกมาเป็นผลลัพธ์ของเรา:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru JSP6</title> </head> <body> <% int num1=10; int num2 = 50; int num3 = num1+num2; if(num3 != 0 || num3 > 0){ int num4= num1*num2; out.println("Number 4 is " +num4); out.println("Number 3 is " +num3); }%> </body> </html>
คำอธิบายของรหัส:
- Code 10 แนว: ตัวแปรชื่อ num1 ถูกเตรียมใช้งานเป็น 10 และ num2 ถึง 50 ในแท็กนิพจน์
- Code 11 แนว: ตัวแปร num3 คือผลรวมของ num1 และ num2 โดยที่เราใช้ตัวดำเนินการบวก
- Code บรรทัดที่ 12-16: ในแท็ก EL เราใช้เงื่อนไข OR ซึ่งเป็นตัวดำเนินการตรรกะและตัวดำเนินการทางคณิตศาสตร์เพื่อตรวจสอบว่า num3 มากกว่า 0 ในเงื่อนไข if หรือไม่ OR จะถูกใช้เมื่อเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง ในกรณีนั้นจะเข้าสู่ "กรณี if" ซึ่งเราจะคูณตัวเลขสองตัว "num1" และ "num2" และได้ผลลัพธ์ใน "num4" จากนั้นจะพิมพ์สตรีมผลลัพธ์ออกมา
เมื่อคุณรันโค้ดข้างต้นคุณจะได้ผลลัพธ์ดังต่อไปนี้
Output:
- เอาต์พุตแรกคือหมายเลข 4 คือ 500 (ตัวแปร num4 ซึ่งก็คือ num1*num2)
- เอาต์พุตที่สองคือหมายเลข 3 คือ 60 (ตัวแปร num3 ซึ่ง num1+num2)






