xml
<dependency>
<!-- JSTL表达式的依赖 -->
<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>
EL表达式:${}
- 获取数据
- 执行运算
- 获取web开发的常用对象
java
<input type="text" name="username" value="${param.username}">
java
<form action="coreif.jsp" method="get">
<%--
EL表达式获取表单中的数据
${param.参数名}
--%>
<input type="text" name="username" value="${param.username}">
<input type="submit" value="登录">
</form>
JSP标签
转发
java
<jsp:forward page="jsptag2.jsp"></jsp:forward>
携带参数
可以配合转发或者文件包含使用
- 转发的时候默认携带参数进行请求
java
<%--
http://localhost:8081/jsptag.jsp?name=root&passwd=root
--%>
<jsp:forward page="jsptag2.jsp">
<jsp:param name="name" value="root"/>
<jsp:param name="passwd" value="root"/>
</jsp:forward>
java
<jsp:include page="jsptag2.jsp">
<jsp:param name="name" value="root"/>
<jsp:param name="passwd" value="root"/>
</jsp:include>
取出参数
jsptag2.jsp
java
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>这是jsptag2的页面</h1>
<%--取出参数--%>
用户名:<%=request.getParameter("username")%>
密码:<%=request.getParameter("password")%>
</body>
</html>
jsptag.jsp
java
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--
http://localhost:8081/jsptag.jsp?name=root&passwd=root
--%>
<jsp:forward page="jsptag2.jsp">
<jsp:param name="username" value="root"/>
<jsp:param name="password" value="root"/>
</jsp:forward>
</body>
</html>
jsptag.jsp页面可以看见转发的时候默认携带参数了,而jsptag2.jsp接受参数的时候还需要在网页中输入请求的参数

文件包含
java
<jsp:include page="jsptag2.jsp"></jsp:include>
JSTL表达式
JSTL标签库的使用是为了弥补HTML标签的不足;它自定义了许多的标签,可以供我们使用,标签的功能和Java代码一样!
- 格式化标签
- SQL标签
- XML标签
- 核心标签(掌握部分)
核心标签

JSTL标签库使用步骤
- 引入对应的taglib
- 使用其中的方法
- 在Tomcat也需要引入jstl的包,否则会报错:JSTL解析错误
c:if
核心
java
<c:if test="${param.username=='admin'}" var="isAdmin">
<c:out value="管理员登陆成功"/>
</c:if>
<c:if test="${not isAdmin}">
<c:out value="普通用户"/>
</c:if>
coreif.jsp
java
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入JSTL核心标签库,我们才能使用JSTL标签 core--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<h4>if测试</h4>
<hr>
<form action="coreif.jsp" method="get">
<%--
EL表达式获取表单中的数据
${param.参数名}
--%>
<input type="text" name="username" value="${param.username}">
<input type="submit" value="登录">
</form>
<%--判断如果提交的用户名是管理员,则登陆成功
<%
if(request.getParameter("username").equals("admin")){
out.print("登陆成功");
}
%>
--%>
<c:if test="${param.username=='admin'}" var="isAdmin">
<c:out value="管理员登陆成功"/>
</c:if>
<c:if test="${not isAdmin}">
<c:out value="普通用户"/>
</c:if>
</body>
</html>

c:set
定义一个变量score的值
java
<c:set var="score" value="85"/>
c:choose
java
<c:choose>
<c:when test="${score>=90}">
优秀
</c:when><c:when test="${score>=85}">
良好
</c:when><c:when test="${score>=80}">
还行
</c:when><c:when test="${score>=70}">
一般
</c:when><c:when test="${score>=60}">
差生
</c:when>
</c:choose>
c:forEach
java
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
ArrayList<Object> people = new ArrayList<>();
people.add(0,"张三");
people.add(1,"BB");
people.add(2,"CC");
people.add(3,"DD");
people.add(4,"EE");
request.setAttribute("list",people);
%>
<%--
var,每一次遍历出来的变量
items,遍历的集合
begin,哪里开始到哪里
end,到哪里
step,步长
--%>
<c:forEach var="people" items="${list}">
<h1><c:out value="${people}"/></h1><br>
</c:forEach>
<hr>
<c:forEach begin="1" end="3" step="1" items="${list}" var="people">
</c:forEach>
<%-- 等价于上面
<%
for (int i = 0; i < 2; i++) {}
%>
--%>
</body>
</html>
如果是前端html弄出数据就要写50行代码,但是c:forEach 一行就够了
