JavaWeb之JSTL(JSP Standrd Tag Library)基础学习与总结

笔记大纲
  • 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/corec
格式化http://java.sun.com/jsp/jstl/fmtfmt
函数,结合EL使用http://java.sun.com/jsp/jstl/functionsfn
数据库(不使用)http://java.sun.com/jsp/jstl/sqlsql
XML(不使用)http://java.sun.com/jsp/jstl/xmlx
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 }&emsp;
	</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 }&emsp;&emsp;age:${stu.age }&emsp;&emsp;gender:${stu.gender }<br/>
	</c:forEach> 
	
</body>
</html> 

页面效果:

在这里插入图片描述
在这里插入图片描述


 ☝上述分享来源个人总结,如果分享对您有帮忙,希望您积极转载;如果您有不同的见解,希望您积极留言,让我们一起探讨,您的鼓励将是我前进道路上一份助力,非常感谢!我会不定时更新相关技术动态,同时我也会不断完善自己,提升技术,希望与君同成长同进步!

☞本人博客:https://coding0110lin.blog.csdn.net/  欢迎转载,一起技术交流吧!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值