一、EL表达式.
语法: ${ 表达式 }
目的: 替代jsp页面中输出脚本的编写.
1.作用一: 获取域中数据.
四大域对象: pageContext -> request -> session -> application
1.获取简单数据.${ 域名.属性名 } 域对象Scope.属性名. 例: requestScope.属性名.
简写方式: ${ 属性名 } 四个域对象中,从小到大查找.
简写使用前提: 属性名不能重复.
2.获取复杂数据.
获取数组数据: ${ 数组名[index] }
获取集合数据: ${ 属性名[index] }
获取map数据: ${ map集合名.key名字 }
3.获取javaBean属性.
${ bean名字.bean属性名 }
javaBean属性: geter/seter的方法去掉前缀 , 留下的字段名 .
并不是获取字段名.
获取javaBean属性案例:
jsp使用:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>获取域中javaBean数据</title>
</head>
<body>
<%
// 向域中添加javaBean
User user = new User(1,"tom");
user.setSalary(10000);
request.setAttribute("user",user);
%>
<%-- 不看字段名 , 只看get/set方法去掉前缀的字段名 --%>
${user.id} // 并没有字段名.
${user.name}
${user.year} // 并没有year字段名,但有getYear方法.
</body>
</html>
javaBean代码:
public class User {
private int fdafdjaf;
private String name;
private double salary;
public double getYear(){ return salary*12; }
public User(int id, String name) { this.fdafdjaf = id; this.name = name;}
public int getId() { return fdafdjaf; }
public void setId(int id) { this.fdafdjaf = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public double getSalary() { return salary; }
public void setSalary(double salary) { this.salary = salary; }
}
2.作用二: 支持运算.
+ 不能用作拼接字符串.
支持三元运算符.
支持判空运算: empty 属性名.
空: 对象为null , 集合长度为0 , 空字符串.
3.作用三: 获取内置对象.
pageContext对象:
pageContext.getRequest().getContextPath();
如果多次使用:可以在最上面添加一行,使用ctx来获取.
<c:set var=“ctx” value="${pageContext.request.contextPath"}
二、JSTL核心标签库(core)的使用.
JSTL(JSP standard Tag Library): JSP标准标签库.
jstl: 可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能.
核心库: core. 标签库的URI: http://java.sun.com/jsp/jstl/core
1.需要先导入jar包.
jar包: javax.servlet.jsp.jstl.jar
jstl‐impl.jar
2.页面中导入要使用的jstl标签库.
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
3.常用的jstl标签.
1.<c:if>标签.
作用: 判断java代码.
属性:
test=“条件表达式”. 判断表达式是否成立.
var=“aaa”, 保存test属性的结果.
2.<c:forEach>标签.
作用: 循环java代码.
属性:
begin: 循环开始索引,
end: 循环结束索引.
items: 要循环的对象.(被遍历的集合)
var: 被循环对象中的元素.
varStatus: 正在被遍历的对象的一些状态属性信息(count-序号)
forEach遍历User对象案例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jstl的forEach的使用</title>
</head>
<body>
<%
//有一个list集合 集合放置是user对象
ArrayList<Object> users = new ArrayList<>();
users.add(new User(1,"tom"));
users.add(new User(102,"jack"));
users.add(new User(333,"rose"));
request.setAttribute("user",users);
%>
使用jstl遍历user集合<br>
<c:forEach items="${user}" var="n" varStatus="aaa">
${aaa.count} --> ${n.id} --> ${n.name}
</c:forEach>
</body>
</html>