在JSP页面中,经常利用JSP表达式<%=变量或者表达式%>来输出声明的变量以及页面传递的参数,当变量很多的时候,书写这样的表达式会显得累赘,EL标签很好地解决了这个问题。
EL标签语法
语法形式:${参数名}
例如:${param.name}获得参数name值,它等同于<%=request. getParameter(‘name’)%>
EL标签的功能
可以访问JSP中不同域的对象;
可以访问Java Bean中的属性;
可以访问集合元素;
支持简单的运算符操作;
访问JSP中不同域的对象
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML >
<html>
<head>
<title>EL标签访问示例</title>
</head>
<body>
<%
pageContext.setAttribute("name","Smith");
request.setAttribute("age",20);
session.setAttribute("address","china");
application.setAttribute("sex","male");
%>
<h3 style="text-align: center;">访问演示</h3>
<table border="1" width="100%">
<tr>
<td align="center">姓名</td>
<td align="center">年龄</td>
<td align="center">性别</td>
<td align="center">地址</td>
</tr>
<!--范围.参数名称 -->
<tr>
<td align="center">${pageScope.name}</td>
<td align="center">${requestScope.age}</td>
<td align="center">${sessionScope.address}</td>
<td align="center">${applicationScope.sex}</td>
</tr>
<!-- 直接写参数名称 -->
<tr>
<td align="center">${name}</td>
<td align="center">${age}</td>
<td align="center">${address}</td>
<td align="center">${sex}</td>
</tr>
</table>
</body>
</html>
访问Java Bean中的属性
package com.eshore.pojo;
public class Users {
private String name;
private int age;
private String address;
private String addaa_re;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getAddaa_re() {
return addaa_re;
}
public void setAddaa_re(String addaaRe) {
addaa_re = addaaRe;
}
@Override
public String toString() {
return "用户"+name+" 年龄 "+age+",来自于"+address;
}
}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="com.eshore.pojo.Users" %>
<!DOCTYPE HTML >
<html>
<head>
<title>EL标签访问Java Bean示例</title>
</head>
<body>
<%
Users user = new Users();
user.setAddress("中国");
user.setAge(20);
user.setName("王五");
user.setAddaa_re("sadfa");
request.setCharacterEncoding("utf-8");
request.setAttribute("user",user);
%>
用户信息:${user }<br/>
用户年龄:${user.age } ,用户姓名:${user.name}
</body>
</html>
EL标签的操作符
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="com.eshore.pojo.Users" %>
<!DOCTYPE HTML >
<html>
<head>
<title>EL标签运算符示例</title>
</head>
<body>
<%
Users user = new Users();
user.setAddress("中国");
request.setAttribute("user",user);
request.setAttribute("str",null);
String[] arr = new String[]{"第1个","第2个"};
request.setAttribute("arr",arr);
%>
<table border="1">
<tr>
<td>算术运算符:</td>
<td>逻辑运算符:</td>
<td>关系运算符:</td>
<td>其他运算符:</td>
</tr>
<tr>
<td>
加:3+3 = ${2+3}<br/>
减:4-3 = ${4-3}<br/>
乘:2*3 = ${2*3}<br/>
除:3/6 = ${3/6}<br/>
求模:10%3 = ${10%3}</td>
<td>
逻辑与:${2<15 && 15<20}<br/>
逻辑与: ${2<15 and 15 <20}<br/>
逻辑或: ${2<15||15<20}<br/>
逻辑或:${2<15 or 15<20}<br/>
逻辑否: ${!(2<15)}<br/>
逻辑否: ${not(2<15)}<br/></td>
<td>
符号左右两端是否相等:2==15 : ${2 == 15 }或${2 eq 15 }<br/>
符号左右两端是否不相等:2!=15:${2 != 15 }或${2 ne 15 }<br/>
符号左边是否小于右边: 2<15:${2 < 15 }或${2 lt 15 }<br/>
符号左边是否大于右边 :2>15:${2 > 15 }或${2 gt 15 }<br/>
符号左边是否小于或者等于右边: 2<=15:${2 <= 15 }或${2 le 15 }<br/>
符号左边是否大于或者等于右边: 2>=15:${2 >= 15 }或${2 ge 15 }<br/></td>
<td>
str是否为空:${empty str }<br/>
user对象是否为空:${empty user }<br/>
2小于15输出yes否则输出no:${2<15?'yes':'no' }<br/>
输出user对象的address属性:${user["address"]}<br/>
输出arr数组的第一个值:${arr[0]}<br/></td>
</tr>
</table>
</body>
</html>
EL标签的隐含变量
隐含变量pageScope、requestScope、sessionScope、applicationScope对应于JSP隐含变量pageContext、request、session、application。
param、paramValues对应于:request.getParameter(String name) 和request.getParameterValues(String name)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML >
<html>
<head>
<title>EL标签隐含对象使用示例</title>
</head>
<body>
<form action="test.jsp">
<input type="text" name="sampleVal" value="1">
<input type="text" name="sampleVal" value="17">
<input type="text" name="sampleVal" value="16">
<input type="text" name="sampleSingleVal" value="single">
<input type="submit" value="Submit">
</form>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML >
<html>
<head>
<title>测试页面</title>
</head>
<body>
请求参数值:${param.sampleSingleVal} ,
${paramValues.sampleVal[1]}</br>
</body>
</html>
其他变量
header对应request.getHeader()、headerValues变量获取表头数组信息,request.getHeaders()。
禁用EL标签
在整个Web中禁用,通过修改web.xml文件实现。
在单个页面中禁用,<%@page isELIgnore=“true”%>
在页面中禁用个别表达式,只需要在不需要解析的EL表达式的“$”符号前加一个反斜杠即可。"\$"