JSP 中的表达式语言

什么是表达语言 (EL)?

表达语言 (EL) 是一种简化存储在 Java bean 组件和其他对象(例如请求、会话和应用程序等)。

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: 表达语言 (EL) 设置为将两个数字 1+2 相加,因此输出为 3。

当您执行上述代码时,您将得到以下输出。

输出:

JSP 表达语言

  • 表达式为:3(因为数字 1+2 将被添加并作为输出)

流控制语句:

JSP 提供了以下功能 Java 嵌入到应用程序中。我们可以使用 Java in JSP 编程 包括包含决策和循环语句的控制流语句。

下面描述了两种类型的流控制语句;

  1. 决策陈述
  2. 循环语句

决策声明:

JSP 中的决策语句基于设置的条件是真还是假。语句将相应地做出行为。

决策陈述有两种类型,如下所述:

  1. 如果别的
  2. 开关

JSP If-else

“If else” 语句是所有控制流语句的基础,它告诉程序仅当特定测试结果为真时才执行特定的代码部分。

此条件用于测试多个条件是真还是假。

  • 如果第一个条件为真,则执行“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: 在表达式标签中,名为 month 的变量被初始化为 5
  • 代码行11: 在 EL 标签中,有“if 条件”,表明月份是否等于 2(此处测试条件为真或假)
  • 代码行12: 如果条件为真,即变量月份为 2,则它将打印到输出流
  • 代码行13-15: 如果上述 if 条件失败,则它将移动到 else 部分,对于所有其他情况,语句将打印到输出流并且条件关闭

当您执行上述代码时,您将得到以下输出。

输出:

JSP If-else

  • 由于我们得到的月份是 5,不等于 #2(二月)。因此,我们输出“二月以外的任何月份”(月份为 5,因此执行其他操作)

JSP 开关

switch 语句的主体称为“switch 块”。

  • switch case 用于检查可能的执行路径的数量。
  • 开关可用于所有数据类型
  • switch 语句包含多个 case 和一个 default case
  • 它评估表达式,然后执行匹配案例后面的所有语句

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;
}
  • Switch 块以一个参数开始,该参数是需要传递的运算符,
  • 然后有不同的情况提供条件,并且任何与运算符匹配的情况都会执行。

在下面的例子中,我们定义了一个变量 week,并且它与为真的情况相匹配。在本例中,week 是 2,因此是 2nd 大小写匹配,输出为星期二:

<%@ 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: 在表达式标签中,名为 week 的变量被初始化为 2
  • 代码行11: 在 EL 标签中,switch case 以 week 作为参数传递
  • 代码行 12 – 29: 已提及所有案例,从案例 0 到案例 5,其中 week 参数的值与案例匹配,因此输出为 print。在本例中,值为 2,因此将在本例中执行案例 2。此处,“out”是 JSP 类,用于为生成的响应写入输出流,“println”是该类的一种方法。
  • 代码行30-32: 如果上述所有情况都失败,那么它将转到默认部分并执行,其中语句将打印到输出流并且条件关闭

当您执行上述代码时,您将得到以下输出。

输出:

JSP 开关

  • 在这种情况下,输出是星期二,正如第二种情况所称。

循环语句

JSP For 循环

它用于迭代符合特定条件的元素,有三个参数。

  • 变量计数器已初始化
  • 循环必须执行的条件
  • 计数器必须增加

For 循环语法:

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”是out的方法,用于在输出流中打印,并启动for循环,它有三个参数:
    • 变量 i 初始化为 0,
    • 条件是 i 小于局部变量 num,
    • 每次循环迭代时,i 都会增加。

在“forloop”的主体中,有一个 JSP 类,它使用方法 println 打印到输出流中,其中打印变量 i。

当您执行上述代码时,您将得到以下输出。

输出:

JSP For 循环

  • 输出 Numbers 是 0 1 2 3 4。在此示例中,我们给出条件,即直到计数器小于等于变量时,才必须执行“for 循环”。数字为 5,因此循环将从 0 开始并运行到 4(5 次)。因此输出。

JSP While 循环

它用于迭代 分子 其中它有一个条件参数。

语法:

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,day 为 2
  • 代码行11-17: 在 EL 标签中,“while 循环”会不断迭代,直到我们设置一个条件,如果 day 大于或等于 i 变量则为真。(day>=i)其中有“if 条件”(day 等于 i)并且“if 条件”为真,那么它会打印输出流,并且它会退出 while 循环,否则 i 变量会增加并且循环不断迭代。

当我们执行代码时,我们将得到以下输出

输出为:

JSP While 循环

  • 该代码的输出将是“其 Monday“。

JSP Opera职权范围

JSP Operators 支持大多数算术和逻辑运算符,这些运算符由 java的 在表达式语言 (EL) 标签内。常用运算符如下:

以下是运算符:

. 访问 bean 属性或 Map 条目
[] 访问数组或列表元素
() 对子表达式进行分组以更改求值顺序
+ 增加
减去或取反
* 乘法
/ 或 div 您所属的事业部
% 或 mod 模数(余数)
== 或 eq 测试相等性
!= 或 ne 检验不平等
< 或 lt 测试小于
> 或 gt 测试大于
<= 或 le 测试小于或等于
>= 或 ge 测试大于或等于
&& 或 和 测试逻辑与
|| 或 或 测试逻辑或
! 或不 一元布尔补码
空的 测试空变量值

在这个例子中,

  • 我们声明两个变量 num1 和 num2,然后取一个变量 num3,其中我们使用 JSP 运算符 + by 将 num1 和 num2 相加并得到 num3。
  • 然后我们使用 JSP 运算符 (!= , >) 来检查 num3 是否不等于 0,
  • 然后取另一个变量 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 条件(逻辑运算符和算术运算符)来检查 if 条件中的 num3 是否大于 0。当任何一个条件为真时,将使用 OR,在这种情况下,它将进入“if case”,其中我们将两个数字“num1”和“num2”相乘并在“num4”中获得输出,它将打印输出流。

当您执行上述代码时,您将得到以下输出。

输出:

JSP Opera职权范围

  • 第一个输出是数字 4 是 500(变量 num4 是 num1*num2)
  • 第二个输出是数字3是60(变量num3其中num1+num2)

总结

  • JSP 表达式语言 (EL) 使得应用程序能够轻松地访问存储在 javabeans 组件中的数据。
  • 它还允许创建算术和逻辑表达式。
  • 在 EL 标签中我们可以使用整数、浮点数、字符串和布尔值。
  • 在 JSP 中,我们还可以使用 EL 标签来使用循环和决策语句