ภาษาการแสดงออกใน JSP

ภาษานิพจน์ (EL) คืออะไร?

Expression Language (EL) เป็นกลไกที่ทำให้การเข้าถึงข้อมูลที่จัดเก็บง่ายขึ้น Java ส่วนประกอบถั่วและวัตถุอื่น ๆ เช่นคำขอ เซสชัน และแอปพลิเคชัน ฯลฯ

มีตัวดำเนินการมากมายใน JSP ที่ใช้ใน EL เช่น ตัวดำเนินการทางคณิตศาสตร์และตรรกะเพื่อดำเนินการนิพจน์ ซึ่งเปิดตัวใน JSP 2.0

ไวยากรณ์ JSP ของภาษานิพจน์ (EL)

ไวยากรณ์ของ EL :$(การแสดงออก)

  • ใน 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>

คำอธิบายของรหัส:

  • รหัสบรรทัด 11: Expression Language (EL) ถูกกำหนดไว้โดยให้เราทำการบวกตัวเลขสองตัวคือ 1+2 ดังนั้นผลลัพธ์ที่ได้จะเป็น 3

เมื่อคุณรันโค้ดข้างต้นคุณจะได้ผลลัพธ์ดังต่อไปนี้

เอาท์พุต:

ภาษานิพจน์ JSP

  • นิพจน์คือ: 3 (เนื่องจากตัวเลข 1+2 จะถูกเพิ่มเข้าไปและทำหน้าที่เป็นผลลัพธ์)

คำสั่งควบคุมการไหล:

JSP ให้อำนาจของ Java เพื่อนำไปฝังในแอปพลิเคชัน เราสามารถใช้ API และ Building Block ทั้งหมดของ Java in การเขียนโปรแกรมเจเอสพี รวมถึงคำสั่งควบคุมโฟลว์ซึ่งรวมถึงการตัดสินใจและคำสั่งลูป

คำสั่งควบคุมการไหลมีสองประเภทที่อธิบายไว้ด้านล่าง

  1. คำแถลงการตัดสินใจ
  2. คำสั่งวนรอบ

คำแถลงการตัดสินใจ:

คำสั่งการตัดสินใจใน JSP ขึ้นอยู่กับว่าชุดเงื่อนไขเป็นจริงหรือเท็จ คำสั่งจะทำงานตามนั้น

คำแถลงการตัดสินใจมีสองประเภทที่อธิบายไว้ด้านล่าง:

  1. ถ้า-อย่างอื่น
  2. สลับ

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>

คำอธิบายของรหัส:

  • รหัสบรรทัด 10: เดือนที่ตั้งชื่อตัวแปรจะเริ่มต้นเป็น 5 ในแท็กนิพจน์
  • รหัสบรรทัด 11: ในแท็ก EL มีคำว่า "if Condition" ระบุว่าถ้าเดือนมีค่าเท่ากับ 2 (ทดสอบเงื่อนไขที่นี่ว่าเป็นจริงหรือเท็จ)
  • รหัสบรรทัด 12: หากเงื่อนไขเป็นจริงซึ่งตัวแปรเดือนคือ 2 ตัวแปรจะพิมพ์ไปที่เอาท์พุตสตรีม
  • รหัสบรรทัด 13-15: หากเงื่อนไขข้างต้นล้มเหลว ระบบจะย้ายไปยังส่วนอื่นสำหรับกรณีอื่นๆ ทั้งหมดที่คำสั่งจะพิมพ์ไปยังเอาท์พุตสตรีมและเงื่อนไขถูกปิด

เมื่อคุณรันโค้ดข้างต้นคุณจะได้ผลลัพธ์ดังต่อไปนี้

Output:

JSP ถ้า-อย่างอื่น

  • เนื่องจากเดือนที่เรามีคือ 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;
}
  • บล็อกสวิตช์เริ่มต้นด้วยพารามิเตอร์หนึ่งตัวซึ่งเป็นตัวดำเนินการที่ต้องส่งผ่านและ
  • จากนั้นจะมีกรณีต่างๆ ที่ให้เงื่อนไขและกรณีใดๆ ที่ตรงกับตัวดำเนินการที่จะดำเนินการ

ในตัวอย่างด้านล่าง เราได้กำหนดสัปดาห์ตัวแปร และจะจับคู่กับกรณีใดก็ตามที่เป็นจริง ในกรณีนี้ สัปดาห์คือ 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>

คำอธิบายของรหัส:

  • รหัสบรรทัด 10: ตัวแปรที่ตั้งชื่อสัปดาห์จะเริ่มต้นเป็น 2 ในแท็กนิพจน์
  • รหัสบรรทัด 11: ในแท็ก EL กรณีสวิตช์จะเริ่มต้นโดยที่สัปดาห์ถูกส่งเป็นพารามิเตอร์
  • รหัสบรรทัด 12 - 29: ทุกกรณีได้รับการกล่าวถึงโดยเริ่มจากกรณีที่ 0 ถึงกรณีที่ 5 โดยที่ค่าของพารามิเตอร์สัปดาห์จะตรงกับกรณีต่างๆ และเอาต์พุตจะถูกพิมพ์ตามลำดับ ในกรณีนี้ ค่าคือ 2 ดังนั้นกรณีที่ 2 จะถูกดำเนินการในกรณีนี้ ที่นี่ “out” คือคลาสของ JSP ซึ่งเขียนสตรีมเอาต์พุตสำหรับการตอบสนองที่สร้างขึ้น และ “println” เป็นวิธีการของคลาสนั้น
  • รหัสบรรทัด 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>

คำอธิบายสำหรับรหัส:

  1. รหัสบรรทัด 10: ตัวแปรชื่อ “num” ถูกเตรียมใช้งานเป็น 5 ในแท็กนิพจน์
  2. รหัสบรรทัด 11-14: ในแท็ก EL นั้น “out” คือคลาสของ JSP และ “println” เป็นวิธีการพิมพ์ในเอาท์พุตสตรีมและ for loop เริ่มต้นซึ่งมีพารามิเตอร์สามตัว:
    • ตัวแปร i เริ่มต้นเป็น 0
    • มีการกำหนดเงื่อนไขโดยที่ i มีค่าน้อยกว่าตัวแปรท้องถิ่น num
    • และฉันจะเพิ่มขึ้นทุกครั้งที่วนซ้ำ

ในเนื้อความของ "forloop" มีคลาสของ JSP ออกมาซึ่งพิมพ์ลงในสตรีมเอาต์พุตโดยใช้วิธี println โดยที่เรากำลังพิมพ์ตัวแปร i

เมื่อคุณรันโค้ดข้างต้นคุณจะได้ผลลัพธ์ดังต่อไปนี้

Output:

JSP สำหรับวง

  • เอาท์พุต 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>

คำอธิบายของรหัส:

  • รหัสบรรทัด 10: ตัวแปรชื่อ i เริ่มต้นเป็น 1 และวันเป็น 2 ในแท็กนิพจน์
  • รหัสบรรทัด 11-17: ในแท็ก EL จะมีคำว่า " while loop" จะวนซ้ำจนกว่าเราจะมีเงื่อนไขที่ตั้งไว้ราวกับว่าวันมีค่ามากกว่าหรือเท่ากับตัวแปร i จะเป็นจริง (วัน>=i)ภายในนั้นมี “if Condition” (วันเท่ากับ i) และ “if Condition” เป็นจริง จากนั้นมันจะพิมพ์สตรีมเอาต์พุต และจะออกจากลูป while มิฉะนั้นตัวแปร i จะเพิ่มขึ้นและ วนซ้ำ

เมื่อเรารันโค้ดจะได้ผลลัพธ์ดังนี้

ผลลัพธ์คือ:

JSP ในขณะที่วนซ้ำ

  • ผลลัพธ์ของโค้ดนี้จะเป็น “its Monday"

JSP Operaโปร

JSP Operators รองรับตัวดำเนินการทางคณิตศาสตร์และตรรกะส่วนใหญ่ซึ่งได้รับการสนับสนุนโดย ชวา ภายในแท็กภาษาแสดงออก (EL) ตัวดำเนินการที่ใช้บ่อยมีดังต่อไปนี้:

ต่อไปนี้คือตัวดำเนินการ:

. เข้าถึงคุณสมบัติ bean หรือรายการแผนที่
[] เข้าถึงอาร์เรย์หรือองค์ประกอบรายการ
() จัดกลุ่มนิพจน์ย่อยเพื่อเปลี่ยนลำดับการประเมิน
+ นอกจากนี้
- การลบหรือการปฏิเสธของค่า
* การคูณ
/ หรือ 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>

คำอธิบายของรหัส:

  • รหัสบรรทัด 10: ตัวแปรชื่อ num1 ถูกเตรียมใช้งานเป็น 10 และ num2 ถึง 50 ในแท็กนิพจน์
  • รหัสบรรทัด 11: ตัวแปร num3 คือผลรวมของ num1 และ num2 โดยที่เราใช้ตัวดำเนินการบวก
  • รหัสบรรทัด 12-16: ในแท็ก EL เราใช้เงื่อนไข OR ซึ่งเป็นตัวดำเนินการตรรกะและตัวดำเนินการทางคณิตศาสตร์เพื่อตรวจสอบว่า num3 มากกว่า 0 ในเงื่อนไข if หรือไม่ OR จะใช้เมื่อเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง ในกรณีดังกล่าว ฟังก์ชันจะเข้าสู่ "กรณี if" ซึ่งเราจะคูณตัวเลขสองตัวคือ "num1" และ "num2" และรับเอาต์พุตใน "num4" และจะพิมพ์สตรีมเอาต์พุต

เมื่อคุณรันโค้ดข้างต้นคุณจะได้ผลลัพธ์ดังต่อไปนี้

Output:

JSP Operaโปร

  • เอาต์พุตแรกคือหมายเลข 4 คือ 500 (ตัวแปร num4 ซึ่งก็คือ num1*num2)
  • เอาต์พุตที่สองคือหมายเลข 3 คือ 60 (ตัวแปร num3 ซึ่ง num1+num2)

สรุป

  • JSP Expression Language (EL) ช่วยให้เข้าถึงแอปพลิเคชันสำหรับข้อมูลที่จัดเก็บไว้ในส่วนประกอบ javabeans ได้อย่างง่ายดาย
  • นอกจากนี้ยังอนุญาตให้สร้างนิพจน์ที่เป็นทั้งทางคณิตศาสตร์และตรรกะ
  • ภายในแท็ก EL เราสามารถใช้จำนวนเต็ม ตัวเลขทศนิยมลอยตัว สตริง และค่าบูลีนได้
  • ใน JSP เรายังสามารถใช้ลูปและคำสั่งการตัดสินใจโดยใช้แท็ก EL