EL表达式和JSTL学习复习(1)

一、EL表达式复习

1.EL表达式是什么

​ EL表达式全称Expression Language,是用来替代jsp中的表达式脚本,是因为EL表达式相较于jsp的表达式脚本更为简洁,可读性更好。EL表达式更多时候用于获取域对象中的数据。

2.EL表达式的语法

​ ${ 表达式}

①运算

​ 第一类:

​ 关系运算即大于、小于、等于等关系运算,与java中的一致。

​ 第二类:

​ 逻辑运算,包括:

​ 且运算:&& 或 and

​ 或运算:|| 或 or

​ 非运算: ! 或 not

第三类:

​ 算术运算即加减乘除、取余运算,与java中一致。

第四类:

​ empty运算,empty运算用于判断一下情况:

  1. null对象
  2. 空串
  3. 长度为零的Object类型的数组
  4. 长度为零的List列表
  5. 元素个数为零的Map集合

第五类:

​ 三元运算:与Java中相同,如下

"表达式1"? "表达式2":"表达式3"

第六类:

​ 点运算和[]括号中的运算符

​ 点运算:用来调用相关方法

​ []中用来屏蔽掉特殊运算(之后会做相应示范)

②输出Bean的各种属性

​ 第一,输出普通属性:

<%--    输出普通属性--%>
    ${ person.id }
${ person.name }

​ 第二,输出数组中的某一个元素:

<%--输出数组中的某一个--%>
    ${person.phone[0] }

​ 第三,输出列表以及其中某个元素:

<%--输出列表--%>
    ${ person.subject }
<%--输出列表中的某一项--%> ${ person.subject[2] }

​ 第四,输出Map及其中的某个元素:

<%--输出Map--%>
    ${ person.family }
<%--输出Map中的某一项--%> ${ person.family.dad }

​ 在此将介绍[]运算的作用,

<%--介绍[]运算--%>
    未加[]运算:${ person.family.d.o.g }
加[]运算 :${ person.family["d.o.g"]}

​ 结果如下:
结果

③EL中11个隐含对象

​ 第一类,四大域对象(以下为变量名)

​ pageScope、requestScope、sessionScope、applicationScope

​ 该四大域对象用来获取不同狱中的顺序,如果不指明为哪个域,并且每个域中有相同的参数名时将从最小域找起,找到即停止。

    <%
        request.setAttribute("key","request");
        session.setAttribute("key","session");
        application.setAttribute("key","application");
        pageContext.setAttribute("key","pageContext");
    %>
    ${ key }

所以在要获取相关域中的参数时要在EL表达式中使用相关的域对象。

​ 第二类,pageContext对象的使用:

​ 一般用于获取request对象,使用request对象来获取请求的各种信息

    <%
        pageContext.setAttribute("req",request);
    %>
<%--获取请求协议--%>
    ${ req.scheme}
<%--获取服务器的ip或域名--%> ${ req.serverName}
<%--获取服务器的端口号--%> ${ req.serverPort }
<%--获取当前的工程路径--%> ${ req.contextPath }
<%--获取请求的方式--%> ${ req.method }
<%--获取请求的主机的ip--%> ${ req.remoteHost }
<%--获取请求主机的端口号--%> ${ req.remotePort }
<%--获取会话标识--%> ${ pageContext.session.id }

​ 第三类,其他对象的使用:

​ 类1:

​ param,为Map的对象, 可以获取请求的参数

​ paramValues, 为Map对象,可以获取有多个值的参数

${param.username}
${paramValues.hobbies[1]}

在这里插入图片描述
在这里插入图片描述

​ 类2:

​ header,为Map的对象, 可以获取请求头的参数

​ headerValues,为Map对象,可以获取有多个值的参数

​ 类3:

​ cookie,为Map的对象,可以获取cookie的相关信息

​ 类4:

​ header,为Map的对象, 可以获取请求头的参数

​ headerValues,为Map对象,可以获取有多个值的参数

​ 类3:

​ cookie,为Map的对象,可以获取cookie的相关信息

​ 类4:

​ init-param,为Map, 可以获取web.xml中的content-param上下文参数

你可能感兴趣的:(JavaWeb)