EL表达式,标准标签库

时间:2022-12-04 13:37:07

EL表达式(expression language): 语法 ${...}
jsp中page指令有一个属性叫isELIgnored, 用来标记此页面是否忽略EL表达式, 默认为false
举个栗子:
常规写法: <%=session.getAttribute("test")%>
EL表达式写法: ${sessionScope.test}或者${sessionScope["test"]}
[]和. 大多数情况下可以通用, 除了两种情况中
1, 表达式中含有特殊字符
错误: ${sessionScope.test_name} vs 正确: ${sessionScope["test_name"]}
2, 需要动态获取属性
sessionScope["test"]
[] 中可以放一个变量名, 但是点的后面不行
在EL表达式中[]也可以用来表示数组或者集合中的索引值
EL变量
当前面不指定哪个作用域下面的值的时候, 会默认按照下面的顺序去找, 如果都找不到, 就输出一个空字符串
pageScope --> requestScope --> sessionScope --> applicationScope
EL自动类型转换
String num = request.getParameter("num");
int a = 20;
int b = Integer.parseInt(num != null ? num : "0");
out.print(a + b);

${param.num + a}
EL隐式对象
上面说到的各种Scope和param都是EL表达式中的隐式对象
param--->request请求中携带的参数的Map类
paramValues--->所有请求参数作为String类型的数组的Map类
cookie将名称存储请求附带的cookies的Map类
获取cookie:
${cookie.username.name}
${cookie.username.value}
initParam按名称存储web应用程序上下文初始化参数的Map类
EL运算符
算术运算符: + - * /或者div %或者mod
关系运算符: ==或者eq !=或者ne <或者lt >或者gt <=或者le >=或者ge
逻辑运算符: &&或者and ||或者or !或者not
验证运算符: empty(empty 对于 null和"" 的判断都是返回true)

 

 

标准标签库指令格式

<%@ taglib prefix="c"  url="..." %>

<c:out>将表达式的值输出到JSP页面中,相当于JSP表达式<%=表达式%>

<c:set>在指定范围中定义变量,或为指定的对象设置属性值

<c:remove>从指定的JSP范围中移除指定的变量

<c:catch>捕获程序中出现的异常,相当于JAVA语言中的try...catch语句

<c:import>导入站内或其他网站的静态和动态文件到Web页面中

<c:redirect>将客户端发出的request请求重定向到其他URL服务端

<c:url>使用正确的URL重写规则构造一个URL

<c:param>为其他标签提供参数信息,通常与其标签结合使用

<c:if>根据不同的条件处理不同的业务,与JAVA语言中的if语句类似,只不过该语句没有else标签

<c:choose><c:when><c:otherwise>根据不同的条件完成指定的业务逻辑,如果没有符合的条件,则会执行默认条件的业务逻辑,相当于JAVA语言中的switch语句

<c:forEach>根据循环条件,遍历数组和集合类中的所有或部分数据

<c:forTokens>迭代字符串中由分隔符分割的各成员