8.6、JSP标签、JSTL标签、EL表达式
依赖:
<!-- 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>
EL表达式:${}
- 获取数据
- 执行运算
- 获取web开发的常用对象
- 调用java方法(基本废弃了)
JSP标签
<%--jsp:include--%>
<%--http://localhost:8080/jsptag.jsp?name=gongyi&age=22--%>
<jsp:forward page="/jsptag2.jsp">
<jsp:param name="name" value="gognyi"/>
<jsp:param name="age" value="22"/>
</jsp:forward>
JSTL表达式(参考教程)
JSTL标签库的使用就是为了弥补HTML标签的不足;它自定义许多标签,可以供我们使用,标签的功能和Java代码一样
-
格式化标签
-
SQL标签
-
XML标签
-
核心标签(掌握部分)
JSTL标签库使用步骤:
- 引入对应的taglib
- 使用其中的方法
代码show
jsptag.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>1</h1>
<%--jsp:include--%>
<%--http://localhost:8080/jsptag.jsp?name=gongyi&age=22--%>
<jsp:forward page="/jsptag2.jsp">
<jsp:param name="name" value="gognyi"/>
<jsp:param name="age" value="22"/>
</jsp:forward>
</body>
</html>
jsptag2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>2</h1>
<%--取出参数--%>
名字:<%=request.getParameter("name")%>
年龄:<%=request.getParameter("age")%>
</body>
</html>
coreif.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入JSTL核心标签库,我们才能使用JSTL标签,core--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h4>测试</h4>
<hr>
<form action="coreif.jsp" method="get">
<%--
EL表达式获取表单中的数据
${param.参数名}
--%>
<input type="text" name="username" value="${param.username}">
<input type="submit" value="登录">
</form>
<%--判断如果提交的用户名是管理员,则登录成功--%>
<c:if test="${param.username=='admin'}" var="isAdmin">
<c:out value="管理员欢迎您!" />
</c:if>
<%--自闭合标签--%>
<c:out value="${isAdmin}"/>
</body>
</html>
corewhen.jsp
<%@ 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>
<%--定义一个变量score,值为66--%>
<c:set var="score" value="66" />
<c:choose>
<c:when test="${score >= 90}">
你的成绩为优秀
</c:when>
</c:choose>
<c:choose>
<c:when test="${score >= 80}">
你的成绩为一般
</c:when>
</c:choose>
<c:choose>
<c:when test="${score >= 70}">
你的成绩为良好
</c:when>
</c:choose>
<c:choose>
<c:when test="${score <= 60}">
你的成绩为不及格
</c:when>
</c:choose>
</body>
</html>
coreforeach.jsp
<%@ 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<String> people = new ArrayList<String>();
people.add(0, "张三");
people.add(1, "李四");
people.add(2, "王五");
people.add(3, "赵六");
people.add(4, "田七");
request.setAttribute("list", people);
%>
<%--
var,每一次遍历出来的变量
items,要遍历的对象
begin,哪里开始
end,到哪里
step,步长
--%>
<c:forEach var="people" items="${list}">
<c:out value="${people}"/><br>
</c:forEach>
<hr>
<c:forEach var="people" items="${list}" begin="1" end="3" step="1">
<c:out value="${people}"/><br>
</c:forEach>
</body>
</html>
彩蛋
1.访问:http://localhost:8080/javaweb_jsp_war_exploded/coreif.jsp 报错【核心原因:jstl1.2与别的版本不同】
解决:
将项目中的jstl和taglib jar包拷贝到tomcat的lib目录下,重新部署即可
2.jstl头文件不用手工写,在idea如果要用c:out,回车就会自动导入相应的头文件