EL表达式和标准标签库

EL表达式(exc..sion 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);java

${param.num + a}
EL隐式对象
上面说到的各类Scope和param都是EL表达式中的隐式对象
paramValues--->全部请求参数做为String类型的数组的Map类
Header--->按照名称存储请求头主要值的Map类
HeaderValues--->将请求头的全部值做为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)
判断某个变量是否为空
JSTL(JSP Standard Tag Library)标准标签库:
1, 核心标签(最经常使用, 最重要的)
表达式控制标签
out
输出常量
value---直接赋值
输出变量
default---默认值
escapeXml---控制转义字符(默认为true, 若是须要转义, 设置为false)
set
三个属性: var value scope---将一个值存到*scope中(默认是pageContext)
赋值的时候能够将值放在value后面, 也能够放在两个标签中间
<c:set var="t" value="山东淄博" />
<c:set var="t1">安徽黄山</c:set>
target 对应javaBean的name值
property 对应定义的类里面的属性
remove----只能用于页面内的变量移除
移除某个变量
var: 指定须要remove的那个变量名
scope: 两个scope中的变量名有重复的时候, 能够经过这个属性来肯定移除的是哪一个
catch
至关于try...catch...
能够在这个标签中放其余标签, 只有一个属性var
流程控制标签
if
<c:if test="EL表达式" var="变量名" scope="" ></c:if>
choose---如下三个标签一般一块儿使用, 相似于switch
when
otherwise--能够不写
循环控制标签
forEach
var: 设定一个变量值来存储从数组或者集合中遍历出来的值
items: 指定须要遍历的数组或者集合
begin, end: 指定须要遍历的起始位置
step: 每次遍历跳过的个数, 默认值是1
varStatus: 经过index(在原集合中的索引值), count(当前第几个), first(是不是第一个), last(是不是最后一个)来描述begin和end子集中的状态
注意first和last, 是判断的是否在输出结果中的第一个或者最后一个, 并非原来的集合中
forTokens(回忆一下字符串的split()方法)
输出的结果中一样也有index, count, first, last这四个属性
url操做标签
import
将另外一个页面的内容引入到这个页面上来, 与include指令的区别: 这个标签能够引入其余项目中甚至网络上的资源
<c:import
url="被导入的路径(能够写网络资源, 能够写本地文件)"
context="相同服务器下的其余项目, 必须以'/'开头"
var="以String类型存入被包含文件的内容"
scope="四个做用域"
charEncoding="被导入文件的编码格式"
varReader="以Reader类型存储被导入的文件"></c:import>
url
通常用来动态生成超连接
<c:url value="https://www.baidu.com" var="newurl"></c:url>
<a href="${newurl}">新的url</a>
redirect
页面重定向
<c:redirect url="重定向的页面">
<c:param name="username">admin</c:param>
<c:param name="password">123456</c:param>
</c:redirect>
2, 格式化标签
3, sql标签
4, xml标签
5, jstl函数
contains
startWith
endWith
escapeXmlweb

相关文章
相关标签/搜索