EL表达式
EL是Expression Language的简称,即表达式语言。用于给JSP标签的属性赋值。表达式也可以脱离标签单独使用。
格式: ${EL表达式}
作用: 替换和简化jsp页面中java代码的编写
EL 使用
jsp默认支持el表达式的。如果要忽略el表达式
设置jsp中page指令中:isELIgnored=“true” 忽略当前jsp页面中所有的el表达式
${表达式} :忽略当前这个el表达式
本项目中默认使用的web.xml 为
这个版本的isELIgnored默认设置为true
解决方法:
•不改变web.xml的情况下解决办法是在jsp页面头加入:<%@page isELIgnored=“false”%>
–<%@page isELIgnored=“false”%>的优先级要高于web.xml中的设置,因此在JSP中的设置会覆盖web.xml中的设置
•改变web.xml的约束
•<?xml version="1.0" encoding="UTF-8"?>
算数运算符
${3 + 4}${3 / 4}
${3 div 4}
${3 % 4}
${3 mod 4}
比较运算符
${3 == 4}逻辑运算符
${3 > 4 && 3 < 4}${3 > 4 and 3 < 4}
<h4>empty运算符</h4>
<%
String str = “”;
request.setAttribute(“str”,str);
List list = new ArrayList();
request.setAttribute("list",list);
%>
${not empty str}
${not empty list}
<%
pageContext.setAttribute(“name”, “xiaoer”);
request.setAttribute(“name”, "zhangsan ");
session.setAttribute(“name”, “lisi”);
application.setAttribute(“name”, “王五”);
%>
<%-- 使用 EL 表达式获得作用的值
${[作用域 Scope.]key}
如果不设置作用域,会从小到大去作用域的值
pageContext > request > session > application
如果没查到,则什么都不显示
注意事项:el 表达式只能取作用域以及表单参数的值
–%>
页面范围对象
p
a
g
e
S
c
o
p
e
.
n
a
m
e
<
b
r
/
>
请求范围对象
{pageScope.name} <br /> 请求范围对象
pageScope.name<br/>请求范围对象{requestScope.name}
会话范围对象
s
e
s
s
i
o
n
S
c
o
p
e
.
n
a
m
e
<
b
r
/
>
上下文范围对象
{sessionScope.name} <br /> 上下文范围对象
sessionScope.name<br/>上下文范围对象{applicationScope.name}
${name}
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 Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
el3.jsp 代码:
<%@ page import=“com.gec.domain.User” %>
<%@ page import=“java.util.*” %>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
request.setAttribute("u",user);
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add(user);
request.setAttribute("list",list);
Map map = new HashMap();
map.put("sname","李四");
map.put("gender","男");
map.put("user",user);
request.setAttribute("map",map);
%>
el获取对象中的值
${requestScope.u}<%–
* 通过的是对象的属性来获取
* setter或getter方法,去掉set或get,在将剩余部分,首字母变为小写。
* setName --> Name --> name
–%>
${requestScope.u.name}<br>
${u.age}<br>
${u.birthday}<br>
${u.birthday.month}<br>
${u.birStr}<br>
<h3>el获取List值</h3>
<%-- List集合:${域名称.键名[索引]} --%>
${list}<br>
${list[0]}<br>
${list[1]}<br>
${list[10]}<br>
${list[2].name}
<h3>el获取Map值</h3>
<%-- Map集合:
${域名称.键名.key名称}
${域名称.键名["key名称"]}--%>
${map.gender}<br>
${map["gender"]}<br>
${map.user.name}
pageContext 对象的支持 el表达式中有11个隐式对象,可以通过pageContext获取jsp其他八个内置对象 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
${pageContext.request}<br>
<h4>在jsp页面动态获取虚拟目录</h4>
${pageContext.request.contextPath}