1.EL表达式
1.1.EL概念
- EL:Expression Language,
表达式语言
作用
:替换和简化JSP页面中Java代码的编写
1.2.EL语法
${表达式}
!!!注意:JSP默认支持EL
,那么假如要输出“3 > 4”字符串样式怎么办呢?有两种方法:
使用isELIgnore
,但是这个方法会是这个页面的所有EL表达式都被忽略
使用“\”忽略个别
1.3.EL使用
1.3.1.运算
运算符:
- 算数运算符:+、-、*、/(div)、%(mod)
- 比较运算符:>、<、=、>=、<=、==、!=
- 逻辑运算符:&&(and)、||(or)、|(not)
- 空运算符:empty
- ${empty list}:用于
判断字符串、集合、数组对象是否为null或者长度是否为0
- ${not empty str}:表示判断字符串、集合、数组对象是否不为null并且长度大于0
1.3.2.获取值
!!!注意:EL表达式只能从域对象中获取值
语法:
- 1.${域名城.键名}:
从指定域中获取指定的键值
域名城:
- pageContext:pageScope
- request:requestScope
- session:sessionScope
- application(ServletContext):applicationScope
- 2.${键名}:表示一次
从最小的域中去查找是否有该键对应的值,直到找到为止
- 3.获取
对象、List集合、Map集合
的值
- 对象:${域名城.键名.属性名}
本质上会去调用对象的getter方法
- List集合:${域名城.键名[索引]}
- Map集合:${域名.键名.key名}或者${域名.键名[“key名”]}
java.class
package xpu.edu.web.servlet.EL;
import java.util.Date;
public class User {
private String name;
private int age;
private Date birthday;
public String getName() {
return name;
}
public int getAge() {
return age;
}
public Date getBirthday() {
return birthday;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
JSP页面(Markdown貌似并不支持JSP代码高亮,所有有点丑,将就一下)
<%@ page import="xpu.edu.web.servlet.EL.User" %>
<%@ page import="java.util.*" %><%--
Created by IntelliJ IDEA.
User: 15291
Date: 2019/6/4
Time: 21:27
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>获取数据</title>
</head>
<body>
<%
User user = new User();
user.setAge(18);
user.setName("邹鸡儿");
user.setBirthday(new Date());
request.setAttribute("u",user);
List list = new ArrayList();
list.add("邹鸡儿");
list.add("邹大炮");
request.setAttribute("list",list);
Map hashMap = new HashMap();
hashMap.put("name","邹鸡儿");
hashMap.put("age","19");
request.setAttribute("hashMap",hashMap);
%>
<h3>获取对象中的值</h3>
${requestScope.u}<br/>
<%--
通过对象的属性来获取
* setter或getter方法,去掉set或get,在剩余部分首字母变小写
* setName——>Name——>name
--%>
${requestScope.u.name}<br/>
${requestScope.u.age}<br/>
${requestScope.u.birthday}<br/>
<h3>获取List的值</h3>
${requestScope.list}<br/>
${requestScope.list[0]}
${requestScope.list[1]}
<%--
越界时会输出空字符串""
--%>
${requestScope.list[10]}
<h3>获取Map的值</h3>
${requestScope.hashMap.name}<br/>
${requestScope.hashMap["name"]}
</body>
</html>
1.4.EL的隐式对象
EL表达式有11个隐式对象
,着重了解pageContext:可以获取JSP其他八个内置对象
${pageContext.request.contextPath}:动态获取虚拟目录
2.JSTL
2.1.JSTL概念
- JSTL:JavaServer Pages Tag Library,JSP标准标签库,是由Apache组织提供的开源的免费JSP标签
- 作用:
用于简化和替换JSP页面的Java代码
2.2.JSTL使用步骤
- 1.导入相关jar包
- 2.引入标签库:taglib指令:<% taglib %>
- 3.使用标签
2.3.常用的JSTL标签
if
:相当于Java代码的if语句
- 属性:test为必须属性,接收boolean表达式,如果表达式为true,就显示if标签体内容,如果为false,则不显示标签体内容
- 注意:
一般test属性会结合EL表达式一起使用
choose
:相当于Java代码的switch语句
- 使用choose标签声明:相当于switch声明
- 使用when标签做判断:相当于case
- 使用otherwise标签做其他情况声明:相当于d
foreach
:相当于Java代码的for语句
1.完成重复操作
属性:
1.begin:开始值
2.end:结束值
3.var:临时变量
4.step:步长
5.varStatus:循环状态对象index:容器中元素索引,从0开始
count:循环次数,从1开始2.遍历容器
属性:
1.item:容器对象
2.var:容器中元素临时变量
3.varStatus:循环状态对象index:容器中元素索引,从0开始
count:循环次数,从1开始