1 什么是EL表达式?
EL表达式最初定义于JSTL1.0部分,在JSP2.0中,EL从JSTL中剥离出来,放置在JSP规范中,成为JSP2.0规范的一部分,在JSP中使用EL表达式,可以简化对象和变量的访问是EL表达式。
2 EL表达式的语法
语法格式:${代码}
例如
${//code}
3 EL中的常见操作符(部分)
术语 | 定义 |
---|---|
算数 | + - * / |
逻辑 | and or not |
关系 | == ,!=,! |
在正式写代码之前,有些必要的知识需要知道:
1 在jsp中嵌套Java代码的方式
<%此处写Java代码%>
2 jsp中的注释
<!--html注释内容,在查看网页源码时可见-->
<%--jsp注释,查看网页源码时不可见--%>
3 EL表达式只能从下面4个对象中取值
1 pageContext对象
2 request对象
3 session对象
4 application对象
这也就意味着我们可能用到的数据需要存到这四个对象中的某一个之后才可以使用EL表达式对数据进行操作(之后的代码示例会有体现)
4 EL表达式实例
前提条件:项目中有对应的jsp-api的jar包,或者已经配置好tomcat
1 创建一个.jsp后缀的文件
2 在jsp文件的body标签内嵌入Java代码,如下所示
<%
pageContext.setAttribute("k1","pagecontext-data");
request.setAttribute("k1","req-data");
session.setAttribute("k1","session-data");
application.setAttribute("k1","application-data");
%>
3 使用EL表达式取值
<%--使用el表达式取值--%>
pageContext = ${pageScope.k1}<br>
request = ${requestScope.k1}<br>
session = ${sessionScope.k1}<br>
application = ${applicationScope.k1}<br>
输出如下:
解释:
1 代码中真正涉及取值的部分只有EL表达式部分,其余部分只是方便展示效果
2 EL表达式中使用到的xxxScope是由于数据在定义是使用了相同的键,如果键是唯一的,直接写键名即可
4 EL常见操作
4.1 使用EL表达式获取某个对象的属性(假设你已经定义好了一个User类,写好了对应的构造函数以及get和set方法)
<%
User user_1 = new User("刘能",59);
pageContext.setAttribute("User_1",user_1);
%>
<%--使用el表达式获取user对象的属性值--%>
${User_1.name}--${User_1.age}
注意:
1 pageContext.setAttribute(“User_1”,user_1);务必不要忘记写(四个对象之一即可)
2 使用EL表达式时对象名用的是写setAttribute时的键,对照代码流程理解,不要弄混淆
4.2 使用el表达式获取集合中的数据
<%--使用el表达式获取集合中的数据--%>
<%--第一步先准备一个集合--%>
<%
List list = new ArrayList();
list.add("data-1"); // 随便存一个字符串
list.add(new User("tony",19)); // 存一个对象
pageContext.setAttribute("List",list);
%>
<%--现在我们使用el表达式获取集合中的数据--%>
${List[0]}<br>
${List[1].name}<br>
${List[1].age}<br>
4.3 EL表达式获取map中的数据
<%--使用el表达式获取map中的数据--%>
<%--准备一个map--%>
<%
HashMap<String,User> users = new HashMap<String, User>();
User jack = new User("jack", 19);
User tony = new User("tony", 20);
// 向map中添加数据
users.put("m1",jack);
users.put("m2",tony);
// 将map对象放到pageContext作用域中
pageContext.setAttribute("users_key",users);
%>
<%--使用el表达式将map中的数据取出--%>
${users_key.m1.name}<br>
${users_key.m1.age}<br>
${users_key.m2.name}<br>
${users_key.m2.age}<br>