跳转到目录
JSTL标签库 全称是指 JSP Standard Tag Library JSP标准标签库。是一个不断完善的开放源代码的JSP标签库。
EL表达式主要是为了替换jsp中的表达式脚本,而标签库则是为了替换代码脚本。这样使得整个jsp页面变得更佳简洁。
1.导入jstl相关jar包
2.引入标签库:taglib指令引入:<%@ taglib %>
3.使用标签
JSTL由五个不同功能的标签库组成。
功能范围 | URI | 前缀 |
---|---|---|
核心标签库–重点 | http://java.sun.com/jsp/jstl/core | c |
国际化标签 | http://java.sun.com/jsp/jstl/fmt | fmt |
函数 | http://java.sun.com/jsp/jstl/functions | fn |
数据库(不使用) | http://java.sun.com/jsp/jstl/sql | sql |
XML(不使用) | http://java.sun.com/jsp/jstl/xml | x |
跳转到目录
作用
<c:if>标签 判断表达式的值,如果表达式的值为 true 则执行其主体内容。
属性
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
test | 条件 | 是 | 无 |
var | 用于存储条件结果的变量 | 否 | 无 |
scope | var属性的作用域 | 否 | page |
@WebServlet("/ifTag")
public class ifServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("num");
request.setAttribute("num", username);
request.getRequestDispatcher("/jstl/if.jsp").forward(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
<head>
<title>JSTL标签库_if标签</title>
</head>
<body>
<c:if test="${num%2==0}">
num 为偶数!
</c:if>
<c:if test="${num%2!=0}" var="a" scope="page">
num 为奇数!
</c:if>
<%-- 输出page作用域中的a对象 --%>
<c:out value="${ pageScope.a }"></c:out>
</body>
跳转到目录
作用
<c:forEach>起到java代码的for循环作用,可以迭代一个集合中的对象-可以是数组,也可以是list,也可以是map对象。
属性
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
test | 条件 | 是 | 无 |
items | 要被循环的数据集合-可以使用el表达式 | 否 | 无 |
begin | 开始的索引(0=第一个元素,1=第二个元素) | 否 | 0 |
end | 最后一个索引(0=第一个元素,1=第二个元素) | 否 | Last element |
step | 每一次迭代的步长 | 否 | 1 |
var | 代表当前条目的变量名称 | 否 | 无 |
varStatus | 代表循环状态的变量名称 | 否 | 无 |
varStatus状态:
作用:指定保存迭代状态的对象的名字,该变量引用的是一个LoopTagStatus类型的对象
通过该对象可以获得一些遍历的状态,如下:
@WebServlet("/forTag")
public class ForServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 自己在url中拼写参数 ?num=28
String num = request.getParameter("num");
request.setAttribute("num", num);
request.getRequestDispatcher("/jstl/for.jsp").forward(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSTL标签库_for标签</title>
</head>
<body>
<c:forEach var="i" begin="0" end="${num}" step="1">
${i}<br>
</c:forEach>
</body>
</html>
@WebServlet("/for2Tag")
public class For2Servlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ArrayList<String> al = new ArrayList();
al.add("Tom");
al.add("Lucy");
al.add("Hello");
request.setAttribute("al", al);
ArrayList<User> al2 = new ArrayList<>();
al2.add(new User("yasu", "123"));
al2.add(new User("dong", "531"));
al2.add(new User("tian", "232"));
request.setAttribute("al2", al2);
request.getRequestDispatcher("/jstl/for2.jsp").forward(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
<!--增强for 遍历 集合 值<String>-->
<c:forEach items="${al}" var="str">
${str}<br>
</c:forEach>
<!--增强for 遍历 集合中的 <User>-->
<c:forEach items="${al2}" var="user" varStatus="vs">
${vs.index}---${user.name} --- ${user.pwd} <br>
</c:forEach>
跳转到目录
作用
switch语句中有case,而
属性
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
test | 条件 | 是 | 无 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>JSTL标签库_choose标签</title>
</head>
<body>
<%
pageContext.setAttribute("score", 70);
%>
<%--开始判断--%>
<c:choose>
<%-- 如果成绩大于等于90 --%>
<c:when test="${pageScope.score >= 90}">
成绩为A
</c:when>
<%-- 大于等于80分--%>
<c:when test="${score >= 80}">
成绩为B
</c:when>
<%-- 大于等于70分--%>
<c:when test="${score >= 70}">
成绩为C
</c:when>
<%-- 其他情况--%>
<c:otherwise>
成绩为E, 不及格!
</c:otherwise>
</c:choose>
</body>
</html>