![27f388b141ef8864835247b9449cd09a.png](https://img-blog.csdnimg.cn/img_convert/27f388b141ef8864835247b9449cd09a.png)
EL - Expression Language
Basic Concept
EL 表达式提供了在 JSP 中简化表达式的方法,可以方便地访问各种数据并输出。
Main Function
依次访问 pageContext、request、session 和 application 作用域对象存储的数据。
获取请求参数值。
访问 Bean 对象的属性。
访问集合中的数据。
输出简单的运算结果。
访问内置对象的数据
用 EL 实现:${ varName }
访问请求参数的数据
在 EL 之前使用下列方式访问请求参数的数据
request.getParameter(name);request.getParameterValues(name);
在 EL 中使用下列方式访问请求参数的数据
param:接收的参数只有一个值。
paramValues:接受的参数有多个值。
${param.name}${paramValues.hobby[0]}
访问 Bean 对象的属性
访问方式
方式一: ${对象名.属性名},例如:${user.name} 方式二: ${对象名[“属性名”]},例如:${user["name"]}
主要区别
当要存取的属性名中包含一些特殊字符,如: . 或 , 等并非字母或数字的符号,就一定要使用 [] 而不是 . 的方式。
使用 [] 的方式可以动态取值,具体方式如下:
获取到的姓名是:${person.name}
获取到的年龄是:${person.age}
获取到的姓名是:${person["name"]}
获取到的年龄是:${person["age"]}
动态取值的结果为:${person[var1]}
访问集合中的数据
list = new LinkedList<>(); list.add("two"); list.add("one"); list.add("three"); // 将整个集合放入指定的内置对象中 pageContext.setAttribute("list", list); // 准备一个 Map 集合并添加数据 Map map = new HashMap<>(); map.put("one", 1); map.put("two", 2); map.put("th.ree", 3); // 将整个集合放入指定的内置对象中 pageContext.setAttribute("map", map);%>集合中下标为 0 的元素是:${list[0]}
集合中下标为 1 的元素是:${list[1]}
集合中下标为 2 的元素是:${list[2]}整个 Map 集合中的元素有:${map}
获取带有特殊字符 key 对应的数值为:${map["th.ree"]}
常用的内置对象
JSP
pageContext - 处理当前页面
作用域
pageScope - 同页面作用域属性名称和值有关的 Map 类 requestScope - 同请求作用域属性的名称和值有关的 Map 类 sessionScope - 同会话作用域属性的名称和值有关的 Map 类 applicationScope - 同应用程序作用域属性的名称和值有关的 Map 类
请求参数
param - 根据名称存储请求参数的值的 Map 类 paramValues - 把请求参数的所有值作为一个 String 数组来存储的 Map 类
请求头
header - 根据名称存储请求头主要值的 Map 类 headerValues - 把请求头的所有值作为一个 String 数组来存储的 Map 类
Cookie
cookie - 根据名称存储请求附带的 cookie 的 Map 类
初始化参数
initParam - 根据名称存储 Web 应用程序上下文初始化参数的 Map 类
常用的运算符
ia 的数值为:${ia}
ib 的数值为:${ib}
b1 的数值为:${b1}
b2 的数值为:${b2}
算术运算符
ia+ib 的结果为:${ia+ib}
ia-ib 的结果为:${ia-ib}
ia*ib 的结果为:${ia*ib}
ia/ib 的结果为:${ia/ib}
ia%ib 的结果为:${ia%ib}
关系运算符
ia 大于 ib 的结果为:${ia > ib}
ia 大于等于 ib 的结果为:${ia >= ib}
ia 小于 ib 的结果为:${ia < ib}
ia 小于等于 ib 的结果为:${ia <= ib}
ia 等于 ib 的结果为:${ia == ib}
ia 不等于 ib 的结果为:${ia != ib}
逻辑运算符
b1 并且 b2 的结果为:${b1 && b2}
b1 或者 b2 的结果为:${b1 || b2}
b1 取反的结果为:${ !b1 }
b2 取反的结果为:${ !b2 }
条件运算符和验证运算符
Null 值、无元素的集合或数组、长度为零的 String 都被认为是空值。
list1 = new LinkedList<>(); List list2 = Arrays.asList(11, 22, 33, 44, 55); request.setAttribute("str1", str1); request.setAttribute("str2", str2); request.setAttribute("str3", str3); request.setAttribute("list1", list1); request.setAttribute("list2", list2);%>ia 和 ib 之间的最大值为:${ia>ib ? ia : ib}
判断是否为空的结果是:${empty str1}
判断是否为空的结果是:${empty str2}
判断是否为空的结果是:${empty str3}
判断是否为空的结果是:${empty list1}
判断是否为空的结果是:${empty list2}
JSTL - JSP Standard Tag Libraries
Basic Concept
JSTL 被称为 JSP 标准标签库。 开发人员可以利用这些标签取代 JSP 页面上的 Java 代码,从而提高程序的可读性,降低程序的维护难度。
How to Use JSTL
下载 JSTL 的 jar 包并添加到项目中,下载地址为:https://tomcat.apache.org/download-taglibs.cgi
在JSP页面中使用 taglib 指定引入 JSTL 标签库:
Core Tags
常用核心标签
输出标签
用来将指定内容输出的标签
设置标签
用来设置属性范围值的标签
删除标签
用来删除指定数据的标签
单条件判断标签
多条件判断标签
循环标签
Function Tags
常用函数标签
原始字符串为:${var}
判断该字符串是否包含指定字符串的结果为:${fn:contains(var, "Hello")}
将字符串中所有字符转换为大写的结果为:${fn:toUpperCase(var)}
将字符串中所有字符转换为小写的结果为:${fn:toLowerCase(var)}
Formatting Tags
常用格式化标签
当前系统时间为:${date}格式化后的时间:
JSP Custom Tags
如果上面几个标签不能满足需求,程序员也可以自定义标签。步骤如下。
- 编写标签类继承 SimpleTagSupport 类或 TagSupport 类并重写 doTag 方法或 doStartTag 方法。
public class HelloTag extends SimpleTagSupport { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public void doTag() throws JspException, IOException { JspWriter out = this.getJspContext().getOut(); out.println("自定义标签的参数为:" + name); }}
- 定义标签库文件(tld 标签库文件)并配置标签说明文件到到 WEB-INF 目录下。
1.0myhttp://renda.com hellocom.renda.HelloTagemptynametrue
- 在 JSP 中添加 taglib 指令引入标签库使用:
想了解更多,欢迎关注我的微信公众号:Renda_Zhang