目录
1. EL表达式的运算
1.1 算术运算符
运算符 | 作用 | 示例 |
---|---|---|
+ | 加 | ${5+5} |
- | 减 | ${5 - 5} |
* | 乘 | ${3 * 5} |
/或者div | 除 | ${9 / 2} 或者 ${9 div 2} |
%或者mod | 取余 | ${9%2} 或者 ${9 mod 2} |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${5+5}<br>
${5-5}<br>
${5*5}<br>
${9/4}<br>
${9 div 4}<br>
${9%4}<br>
${9 mod 4}<br>
</body>
</html>
1.2 逻辑运算符
运算符 | 作用 | 示例 | 结果 |
---|---|---|---|
&& 或 and | 并且 | ${A && B} 或 ${A and B} | true / false |
|| 或 or | 或者 | ${A | |
! 或 not | 取反 | ${ !A } 或 ${ not A } | true / false |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${1>2 && 1>3}<br>
${1>2 and 1>3}<br>
</body>
</html>
1.3 比较运算符
运算符 | 作用 | 示例 | 结果 |
---|---|---|---|
== 或 eq | 等于 | ${5 == 5} 或 ${5 eq 5} | true |
!= 或 ne | 不等于 | ${5 != 5} 或 ${5 ne 5} | false |
< 或 lt | 小于 | ${3 < 5} 或 ${3 lt 5} | true |
> 或 gt | 大于 | ${3 > 5} 或 ${3 gt 5} | false |
<= 或 le | 小于等于 | ${3 <= 5} 或 ${3 le 5} | true |
>= 或 ge | 大于等于 | ${3 >= 5} 或 ${3 ge 5} | false |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${1==1}<br>
${1 eq 1}<br>
${1!=1}<br>
${1 ne 1}<br>
${1<1}<br>
${1 lt 1}<br>
${1>1}<br>
${1 gt 1}<br>
${1<=1}<br>
${1 le 1}<br>
${1>=1}<br>
${1 ge 1}<br>
</body>
</html>
1.4 特殊运算符
运算符 | 作用 |
---|---|
empty | 1.判断对象是否为null 2.判断字符串是否为空字符串 3.判断容器元素长度是否为0 |
条件 ? 表达式1 : 表达式2 | 三元运算符 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<% request.setAttribute("msg","");%>
${ empty msg}
<br>
${1>2? "你在搞笑?":"智商正常!"}
</body>
</html>
2. 获取值
2.1 获取普通值
语法格式:
${域名称.键名}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 四大域对象 pageContext(仅限于当前页面) request(一次请求之内) session(一次会话之内) application(全局共享)
pageContext.setAttribute("msg","pageMsg");
request.setAttribute("msg","requestMsg");
session.setAttribute("msg","sessionMsg");
application.setAttribute("msg","applicationMsg");//ServletContext
%>
<%--优先从最小的域取值, 如果没有,就去较大一级的域去找--%>
${msg}
<%--从指定的域中取值--%>
${pageScope.msg}
${requestScope.msg}
${sessionScope.msg}
${applicationScope.msg}
</body>
</html>
2.2 获取自定义对象
语法格式:
${域名称.键名.属性名}
Part类:
public class Part {
private String name;
private String address;
private String art;
public Part() {
}
public Part(String name, String address, String art) {
this.name = name;
this.address = address;
this.art = art;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getArt() {
return art;
}
public void setArt(String art) {
this.art = art;
}
@Override
public String toString() {
return "Part{" +
"name='" + name + '\'' +
", address='" + address + '\'' +
", art='" + art + '\'' +
'}';
}
}
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.pojo.Part" %>
<%@ page import="java.util.Collections" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%
ArrayList<Part> list = new ArrayList<>();
Collections.addAll(list,new Part("盖伦","德玛西亚","天降正义"),new Part("卡特琳娜","洛克萨斯","死亡莲华"));
request.setAttribute("list",list);
%>
${list[0]}
<br>
${list[1].name}
</body>
</html>
2.3 获取数组元素
语法格式:
${域名称.键名[索引]}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%
String[] str = {"aa","bb","cc"};
request.setAttribute("arr",str);
%>
<%--如果索引越界不会报错,只会没有值--%>
${arr[0]}---${arr[1]}---${arr[2]}---${arr[3]}
</body>
</html>
2.4 获取list集合元素
语法格式:
${域名称.键名[索引]}
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Collections" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%
ArrayList<String> arrayList = new ArrayList<>();
Collections.addAll(arrayList,"aa","bb","cc");
request.setAttribute("list",arrayList);
%>
${list[0]}---${list[1]}---${list[2]}
</body>
</html>
2.5 获取Map集合元素
语法格式:
${域名称.键名.key名称}
${域名称.键名["key名称"]}
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%
HashMap<String, Object> map = new HashMap<>();
map.put("code",200);
map.put("msg.len","请求成功");
request.setAttribute("map",map);
%>
${map.code}
<br>
${map["msg.len"]}
</body>
</html>
3. EL表达式的隐式对象
隐式对象名称 | 说明 |
---|---|
pageContext | 功能完全相同(见解析) |
applicationScope | 操作应用域对象数据 |
sessionScope | 操作会话域对象数据 |
requestScope | 操作请求域对象数据 |
pageScope | 操作页面域对象数据 |
header | 获取请求头数据 |
headerValues | 获取请求头数据(多个值) |
param | 获取请求参数数据 |
paramValues | 获取请求参数数据(多个值) |
initParam | 获取全局配置参数数据 |
cookie | 获取Cookie对象 |
解析:
在JSP页面中,可以使用EL表达式来访问pageContext对象并获取其属性。
pageContext对象是JSP页面的上下文对象,它提供了访问JSP页面环境中所有重要对象的方法。pageContext对象是JspContext接口的实现,并通过JSP引擎提供给JSP页面。
在EL表达式中,可以使用pageContext对象来获取以下属性:
1. request:使用 ${pageContext.request}来获取HttpServletRequest对象。
2. response:使用 ${pageContext.response}来获取HttpServletResponse对象。
3. session:使用 ${pageContext.session}来获取HttpSession对象。
4. application:使用 ${pageContext.application}来获取ServletContext对象。
5. page:使用 ${pageContext.page}来获取正在被执行的JspWriter对象所属的页面的内部表达式的隐含对象。
6. config:使用 ${pageContext.config}来获取ServletConfig对象。
此外,pageContext对象还提供了许多有用的方法,如获取JSP页面范围内的属性、判断页面是否是第一次被访问等。因此,pageContext对象是JSP页面开发中不可或缺的一个重要对象。
下面是pageContext获取动态项目路径的方法(重要记忆):
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%--el表达式获取项目路径--%>
${pageContext.request.contextPath}
</body>
</html>
如果对你有帮助,请帮我点一下赞,我才有动力继续创作,谢谢!