笔记大纲
- JSTL简介
- 五大标签库(核心库是重点)
- JSTL使用
- STL常用标签(通用、流程、循环)
1.JSTL简介
(1)全称:JSP Standrd Tag Library(jsp标准标签库);
(2)JSTL主要以html形式,表达java的语义;
(3)JSTL一共有五大功能:常用核心功能、格式化、函数、数据库、XML。
2.五大标签库
JSTL由五个不同功能的标签库组成,用来替换jsp脚本,用来处理页面的业务逻辑!
功能范围 | URI | 前缀 |
---|---|---|
核心(Core Tags) /c标签库 | http://java.sun.com/jsp/jstl/core | c |
格式化 | http://java.sun.com/jsp/jstl/fmt | fmt |
函数,结合EL使用 | 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 |
3.JSTL使用
在自定义的项目工程下,使用JSTL时必须要导入导包、引入库。
第一步:导入两个jar包
①taglibs-standard-impl-1.2.5;
②taglibs-standard-spec-1.2.5。
第一步:在JSP页面引入标签库
指令:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
。
4.JSTL常用标签
4.1.通用标签(3个)
标签 | 说明 |
---|---|
out标签 | 类似表达式的功能:<c:out value ="${user.name}" default='" excapeXml="true"></c:out> |
set标签 | 设置变量:<c:set var='i' value='18' scope="request"></c:set> 设置属性: <c:set target="${sessionScope.stu }" property="name" value='codinglin' </c:set> |
remove标签 | 移除所有域中key属性: <c:remove var=“key”/> 移除request中的key属性: <c:remove var=“key” scope=“request” /> |
代码示例:
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.codinglin.el.Student"%>
<%@ 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>(1)out标签</h2>
<c:set var="i" value="18 " scope="request" ></c:set>
EL测试结果:${requestScope.i }<br/>
JETL测试结果:<c:out value="${requestScope.i}" default="0"></c:out>
<%
Student stu = new Student("林大侠",18,"男");
session.setAttribute("stu", stu);
%>
<h2>(2)set标签--修改属性</h2>
修改前:${sessionScope.stu.name }<br>
<c:set target="${sessionScope.stu}" property="name" value="codinglin"></c:set>
修改后:${sessionScope.stu.name }<br>
<h2>(3)remove标签</h2>
移除前i:${requestScope.i}<br/>
<c:remove var="i" scope="request"/>
移除后i(即为空):${requestScope.i }
</body>
</html>
页面效果:
4.2.流程控制(2个)
标签 | 说明 |
---|---|
if标签 | <c:if> 用于实现if语句的判断功能可设置的属性: (1)test【boolean】: 设置if判断的条件,用于判断标签体是否被执行 (2)var【boolean】:用于指定接收判断结果的变量名 (3)scope【String】:指定判断结果保存到哪个域 <c:if test="${empty user }" var="isUserEmpty" scope="request"> 用户为空 </c:if> |
choose -when& otherwise | <c:choose> 、<c:when> 、<c:otherwise> 三个标签配合使用,类似于Java中的if/else。<c:choose >是<c:when> 和<c:otherwise> 的父标签<c:when >的属性test 设置判断条件,若正确则c:when中的代码执行,否则不执行<c:otherwise> 若所有的<c:when> 都没有执行则执行<c:otherwise> 的标签体 |
代码示例:
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.codinglin.el.Student"%>
<%@ 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>(4)流程控制</h1>
<h2>if</h2>
<c:if test="${ 6 > 5 }" var="compNum" scope="request">6 > 5</c:if><br/>
${requestScope.compNum}
<h2>choose-when$otherwise</h2>
<c:set var="age" value="20" scope="session"></c:set>
<c:choose>
<c:when test="${sessionScope.age<16 }">
未成年
</c:when>
<c:when test="${sessionScope.age>=16 and sessionScope.age<30 }">
青年
</c:when>
<c:when test="${sessionScope.age>=30 and sessionScope.age<50 }">
中年
</c:when>
<c:when test="${sessionScope.age>=50 and sessionScope.age<80 }">
中老年
</c:when>
<c:otherwise>
老年
</c:otherwise>
</c:choose>
</body>
</html>
页面效果:
4.3.循环结构(2个)
标签 | 说明 |
---|---|
普通循环 | <c:forEach> 用于对多个对象的集合进行迭代,重复执行标签体,或者重复迭代固定的次数可设置的属性: (1)var【String】:设置遍历出对象的名称 (2)items【数组、字符串和集合】:指定要遍历的集合对象 (3)varStatus【String】:指定保存迭代状态的对象的名字,该变量引用的是一个LoopTagStatus类型的对象,通过该对象可以获得一些遍历的状态(count、index、first、last、name) (3)begin【int】:指定遍历的开始位置 (4)end【int】:指定遍历的结束位置 (5)step【int】:迭代的步长 |
增强循环 | 同上 |
代码示例:
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.codinglin.el.Student"%>
<%@ 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 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>(5)循环结构</h2>
<h3>普通for循环</h3>
<c:forEach var="i" begin="0" end="9" step="2">
${i } 
</c:forEach>
<h3>增强for循环</h3>
<%
List<Student> list = new ArrayList<Student>();
list.add(0,new Student("林大侠",18,"男"));
list.add(0,new Student("张三丰",19,"男"));
list.add(0,new Student("周芷若",17,"女"));
request.setAttribute("list", list);
%>
<c:forEach items="${requestScope.list }" var="stu">
name:${stu.name }  age:${stu.age }  gender:${stu.gender }<br/>
</c:forEach>
</body>
</html>
页面效果:
☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!
☞本人博客:https://coding0110lin.blog.youkuaiyun.com/ 欢迎转载,一起技术交流吧!