一. JSTL介绍
1. JSTL全称: JSP Standard Tag Library, jsp标准标签库。
2. 简化jsp的代码编写。替换<%%>写法。一般与EL表达式配合。
3. 使用JSTL
3.1. 使用JSTL需要先导入jstl.jar和standard.jar这2个jar包到工程的WebContent/Web-Inf/lib目录下。
3.2. 在jsp页面上, 使用taglib 指令, 来引入标签库。
3.3. 注意: 如果想支持 EL表达式, 那么引入的标签库必须选择1.1的版本, 1.0的版本不支持EL表达式。1.1的版本如下所示:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
4. 常用标签
4.1. 存值到某个域中: <c:set></c:set>
4.2. 条件判断标签: <c:if test=""></c:if>
4.3. 遍历集合标签: <c:forEach></c:forEach>
二. JSTL实例
1. 新建一个名称为JSTL的Web工程
2. 新建一个index.jsp, 使用set标签
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>jstl set</title>
</head>
<body>
<!--
var声明一个对象
value对象的值
scope存储的作用域, 默认是pageContext作用域
-->
<c:set var="name" value="zhangsan" scope="session"/>
${name}
</body>
</html>
3. 新建一个jstl_if.jsp, 使用if标签, 做boolean判断, jstl没有else标签。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>jstl if</title>
</head>
<body>
<!-- 向page作用域中存储一个age对象, 值为18 -->
<c:set var="age" value="18" scope="page"/>
<!-- 向session作用域中存储了一个 bigAgeResult对象, 值为test属性的结果-->
<c:if test="${age > 18}" var="bigAgeResult" scope="session">
年龄大于18
</c:if>
<c:if test="${age <= 18}" var="littleAgeResult" scope="session">
年龄小于等于18
</c:if>
<br/>${sessionScope.bigAgeResult }
</body>
</html>
4. 使用forEach标签遍历集合
4.1. 新建一个User.java
package com.lywgames.bean;
import java.io.Serializable;
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
4.2. 新建一个jstl_foreach.jsp, 使用forEach标签遍历集合
<%@ page import="java.util.List"%>
<%@ page import="java.util.ArrayList"%>
<%@ page import="com.lywgames.bean.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>jstl forEach</title>
</head>
<body>
<!--
begin起始值
end结束值
step步长
var不值存的一个对象
-->
<c:forEach begin="1" end="10" var="value" step="2">
${value}
</c:forEach>
<br/>
<%
List<User> users = new ArrayList<User>();
users.add(new User("张三", 18));
users.add(new User("小花", 16));
session.setAttribute("users", users);
%>
<!-- items使用EL表达式访问域对象 -->
<c:forEach var="user" items="${users}">
[${user.name},${user.age}]<br/>
</c:forEach>
</body>
</html>