JSTL 核心标签库

jsp诞生之初,程序员在HTML代码中嵌入过多的Java代码,这非常不利于JSP的维护和扩展。

JSTL(JavaServer Pages Standard Tag Library),即JSP标准标识库。几乎能够做到传统JSP脚本代码能做的任何事情。

JSTL标签库

  • 核心标签库
    基本输入输出、流程控制、迭代操作和URL操作。负责Web应用的常见工作,如:循环、表达式赋值、基本输入输出等
  • I18N格式标签库
    用来格式化显示数据的工作如:对不同区域的日期格式化等。
  • XML标签库
    用来访问XML文件的工作,支持JSP对XML文档的处理。
  • 数据库标签库
    SQL标签库包括了大部分访问数据库的逻辑操作,包括查询、更新、事务处理、设置数据源等。可以做访问数据库的工作。
  • 函数标签库
    用来读取已经定义的某个函数。

JSTL核心标签库

引入两个jar包

  • standard.jar
  • jstl.jar

将这两个包放在项目文件夹WEB-IF\lib文件夹中

通过使用taglib指令引用标签库

<!-- 引入taglib  前缀值任意-->
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"  %>

Profix前驱值可随意指定,一般为c。

首先通过servlet设定一些属性:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Person p = new Person("laok","male",20);
		request.setAttribute("person", p);

		String[] food = {"apple","banana","watermelon","strawberry"};
		request.setAttribute("food", food);

		request.getRequestDispatcher("jstl.jsp").forward(request, response);
		
	}

通用标签库

  1. 给某个作用域中某个变量赋值,相当于调用setAttribute(String name, Object obj)
	-----给某个作用域中的某个变量赋值-----<br/>
	<%--
		request.setAttribute("sname", "name")
	 --%>
	 <c:set var="sname" value="name" scope="request" />
	 ${requestScope.sname }<br/>
	 <c:set var="sname" value="nnname" scope="request"/>
	 ${requestScope.sname }<br/>
  1. 给某个作用域中的某个对象的属性赋值

property=“属性名” value=“属性值” , 有了target无需再加scope

	------给某个作用域中的某个对象的属性赋值----<br/>
	${requestScope.person.age }<br/>
	<c:set target="${requestScope.person }" property="age" value="19"/>
	${requestScope.person.age }<br/>
  1. 显示
    default=“默认字段”,当value=null时显示
    escapeXml 为true时,会忽略value值中如<、>、–等特殊符号,默认为false
	------out----<br/>
	<c:out value="${requestScope.sname }"/><br/>
	当变量为null时显示默认字段:<c:out value="${requestScope.ssname }" default="名字没了?"/><br/>
	
	显示特殊字符(escapeXml):<c:out value="<b>我是一个加粗标签</b>" escapeXml="true"/><br/>
	<c:out value="<b>我是一个加粗标签</b>" escapeXml="false"/><br/>

4.删除属性

	-----remove----<br/>
	 ${requestScope.sname }<br/>
	<c:remove var="sname" scope="request"/>
	删除以后: ${empty requestScope.sname }<br/>

条件标签库

  1. 单重选择
    <c:if test=“boolean”/>
    test中放判断条件。var可选,会将test的结果值保存在var变量中,即boolean result=${requestScope.person.name == “laok” }
	-----if-------<br/>
	<c:if test='${requestScope.person.name == "laok" }' var="result" >
		${result }<br/>
		${requestScope.person.name }<br/>
	</c:if>
  1. 多重(switch)
	-switch----if--else if--- else--<br/>
	<c:choose>
		<c:when test="${requestScope.person.sex eq 'male' }">
			男的
		</c:when>
		<c:when test="${requestScope.person.sex eq 'female' }">
			女的
		</c:when>
		<c:otherwise>
			emmmm···
		</c:otherwise>
	</c:choose><br/>

迭代标签库

1普通for循环
step为步长,var 代表了当前的一个item(临时变量) ,varStatus为循环状态变量,具有index属性(索引,从0开始)、count属性(循环次数,从1开始)

	------for----+1----<br/>
	<c:forEach begin="0" end="3" step="+1" varStatus="status"  >
		${requestScope.food[status.index] }<br/>
	</c:forEach>
	------for----+2----<br/>
	<c:forEach begin="0" end="3" step="+2" var="i"  >
		${requestScope.food[i] }<br/>
	</c:forEach>

2.遍历for循环(遍历容器)

	-----foreach-----<br/>
	<c:forEach var="food" items="${requestScope.food }">
		${food }<br/>
	</c:forEach>

运行结果:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值