JavaWeb——EL表达式
1、EL表达式
- 什么是EL表达式
全称是:Expression Language是表达式语言
- EL表达式有什么作用呢
EL表达式主要是代替jsp页面中的表达式脚本再jsp页面中进行数据的输出,因为EL表达式在输出数据的时候,要比jsp表达式简洁很多。
1.1、一个例子
<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="/2.jsp" %>
<html>
<head>
<title>这是一个jsp页面</title>
</head>
<body>
<%
request.setAttribute("key","hhh");
%>
表达式脚本输出:<%=request.getAttribute("key")%>
EL表达式输出:${key}
</body>
</html>
1.2、EL表达式搜索域数据的顺序
从上往下依次执行
<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="/2.jsp" %>
<html>
<head>
<title>这是一个jsp页面</title>
</head>
<body>
<%
pageContext.setAttribute("key","pageContext");
request.setAttribute("key","request");
session.setAttribute("key","session");
application.setAttribute("key","application");
%>
${key}
</body>
</html>
1.3、EL表达式输出Bean属性,数组属性,List属性,map属性
EL表达式获取类属性的方式是通过get方法得到的,和是否设置该属性没有关系
<%@ page import="java.util.Map" %>
<%@ page import="bean.Person" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="/2.jsp" %>
<html>
<head>
<title>这是一个jsp页面</title>
</head>
<body>
<%
Person person = new Person();
person.setId(41914069);
ArrayList<String> list = new ArrayList<>();
list.add("北京");
list.add("上海");
person.setCities(list);
String[] name=new String[]{"dcd","董憨憨"};
person.setName(name);
HashMap<String, Object> som = new HashMap<>();
som.put("dcd","18");
som.put("lx","88");
som.put("lxj","99");
person.setMap(som);
request.setAttribute("name",person);
%>
${name.id}</br>
${name.cities}</br>
${name.map.dcd}</br>
${name.name[0]}
</body>
</html>
1.4、表达式运算
1.4.1、关系运算
- == eq
- != ne
- < lt
-
gt
- <= le
-
= ge
1.4.2、逻辑运算
- && and
- || or
- ! not
1.4.3、算数运算
-
-
-
- / div
- % mod
其他运算
- empty运算
可以判断数据是否为空
null " " Object[] list map长度均为0
<%
request.setAttribute("a",null)
%>
${empty a}
- 三元运算
表达式1 ?结果1 :结果2
- 点运算和[]中括号运算
.用在bean类中
[]下标,并且处理map集合中的特殊字符
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="/2.jsp" %>
<html>
<head>
<title>这是一个jsp页面</title>
</head>
<body>
<%
Person person = new Person();
HashMap<String, Object> som = new HashMap<>();
som.put("a.a.a","18");
person.setMap(som);
request.setAttribute("name",person);
%>
${name.map["a.a.a"]}
</body>
</html>
1.5、EL表达式的11个隐含对象
是EL表达式中自己定义的,可以直接使用
<%@ page import="java.util.Map" %>
<%@ page import="bean.Person" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="/2.jsp" %>
<html>
<head>
<title>这是一个jsp页面</title>
</head>
<body>
<%--1.pageContext的使用--%>
协议:
<%=request.getScheme()%><br>
${pageContext.request.scheme}<br>
服务器:
<%=request.getServerName()%><br>
${pageContext.request.serverName}<br>
服务器ip:
<%=request.getServerPort()%><br>
${pageContext.request.serverPort}<br>
获取工程路径:
<%=request.getContextPath()%><br>
${pageContext.request.contextPath}<br>
获取请求方法:
<%=request.getMethod()%><br>
${pageContext.request.method}<br>
获取客户端ip地址
<%=request.getRemoteHost()%><br>
${pageContext.request.remoteHost}<br>
获取会话的id编号
<%=session.getId()%><br>
${pageContext.session.id}<br>
<%--企业开发中的应用方式--%>
<%
pageContext.setAttribute("req",request);
%>
${req.scheme}
<%--2.四种域的使用--%>
<%
pageContext.setAttribute("key","pagecontext");
request.setAttribute("key","request");
session.setAttribute("key","session");
application.setAttribute("key","application");
%>
${pageScope.key}<br>
${requestScope.key}<br>
${sessionScope.key}<br>
${applicationScope.key}<br>
<%--3.获取请求的参数值--%>
<%--访问url后面加上参数:?username=dcd&password=123--%>
输出请求的参数:${param.username}<br>
输出请求参数(很多) ${paramValues.username}<br>
<%--4.获取请求头的信息--%>
获取请求头的信息:${header["User-Agent"]}<br>
获取请求头的信息:${headerValues["User-Agent"][0]}<br>
<%--5.获取当前cookie信息--%>
获取Cookie的名称:${cookie.JSESSIONID.name}<br>
获取Cookie的名称:${cookie.JSESSIONID.value}<br>
<%--6.获取web.xml中的context-param数据--%>
<%--
<context-param>
<param-name>username</param-name>
<param-value>root</param-value>
</context-param>
--%>
获取web.xml中的context-param数据:${initParam}<br>
</body>
</html>