JSTL表达式
JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的。使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码
核心标签
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
格式化标签
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
SQL标签
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
XML标签
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
注意
使用taglib指令声明JSTL标签库的时候,要注意JSTL的版本问题,不同版本的声明方式不同,上面的是1.2的版本。
如果出错,可以试试将JSTL和standard的jar包放进Tomcat中来解决解析失败的问题
Maven依赖
<!-- jstl表达式的依赖 -->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<!-- standard标签库 -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
c:out
c:out标签需要自闭合
<c:out value="输出的内容"/>
c:if
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="JSTL.jsp" method="post">
username:${param.username}<br>
<input type="text" name="username">
<input type="submit" value="提交">
</form>
<c:if test="${param.username=='admin'}" var="isAdmin">
<%--var的值为if语句的布尔值--%>
<c:out value="欢迎管理员回家"/>
</c:if>
<c:out value="${isAdmin}"/>
</body>
</html>
c:set & c:choose & c:when
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--c:set的作用为设置一个变量,变量名为score,值为85--%>
<c:set var="score" value="85"/>
<%--c:choose就是java中的switch--%>
<c:choose>
<%--c:when就是switch中的case--%>
<c:when test="${score >= 90}">
<c:out value="你的成绩为优秀"/>
</c:when>
<c:when test="${score >= 80}">
<c:out value="你的成绩为良好"/>
</c:when>
<c:when test="${score >= 60}">
<c:out value="你的成绩为一般"/>
</c:when>
<c:when test="${score <= 60}">
<c:out value="你的成绩为不及格"/>
</c:when>
</c:choose>
</body>
</html>
c:forEach
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
ArrayList<String> people = new ArrayList<>();
people.add("张三");
people.add("李四");
people.add("王五");
people.add("赵六");
people.add("田七");
request.setAttribute("list",people);
%>
<%-- var是将循环到的每一个变量都命名为他的值,items是循环的列表 --%>
<%-- begin是开始遍历的下标,end是结束遍历的下标,step是步长,相当于在fori循环里面把i++变成i+=x --%>
<c:forEach var="people" items="${list}">
<c:out value="${people}"/><br>
</c:forEach>
</body>
</html>