JSTL(标准标签库)

JSTL虽然被称为标准标签库,而实际上这个标签库是由5个不同功能的标签库共同组成的。在JSTL1.1规范中,为这5个标签库分别指定了不同的URI以及建议使用的前缀

标签库 标签库的URI 前缀
Core http://java.sun.com/jsp/jstl/core c
I18N http://java.sun.com/jsp/jstl/fmt fmt
SQL http://java.sun.com/jsp/jstl/sql sql
XML http://java.sun.com/jsp/jstl/xml x
Functions http://java.sun.com/jsp/jstl/functions fn

1.JSTL的安装和测试

要想在JSP页面中使用JSTL,首先需要安装JSTL

1.下载JSTL包
官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

2.安装JSTL
下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jar 和 jstl.jar 文件拷贝到 /WEB-INF/lib/ 下。
JSTL(标准标签库)_第1张图片

3.测试JSTL
使用任何库,你必须在每个 JSP 文件中的头部包含 标签。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  • uri属性:指定引入标签库描述符文件的URI
  • prefix属性:用于指定引入标签库描述符文件的前缀,在JSP文件中使用这个标签库中的某个标签时,都需要使用这个前缀。

通过标签测试是否安装成功

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>



	

	

浏览器显示结果如下,这样就表示JSTL标签库安装成功了
在这里插入图片描述

2.核心标签

1.标签
作用:用于保存数据
语法:


属性:JSTL(标准标签库)_第2张图片
scope="{page|request|session|application}"/>

实例演示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




Insert title here


	
	${salary}


我们相当于在pageContext中存储了一个变量名为salary,值为2000的变量(scope默认为page)
此时如果通过jsp脚本,在request/session/application域中是获取不到salary的值的


2.标签
作用:与我们在一般程序中用的if一样
语法:


   ...

属性:
JSTL(标准标签库)_第3张图片
其中test中是判断表达式的值,如果表达式的值为 true 则执行其主体内容。

实例演示:


	
	
		<%--输出request域中存储的flag变量的值 --%>
		${flag}
	

我们在pageContext中存储了一个值为4000的变量salary
在if标签中,通过EL表达式判断salary的值是否大于2000,并将值以变量名flag存入request域中
注意:这里不能写成 test="${salary} > 2000"


3.标签
作用:基础迭代标签,接受多种集合类型
语法:



    ...

属性:
JSTL(标准标签库)_第4张图片
var属性用于指将当前迭代到的元素保存到page域中的名称(后一个覆盖前一个)

实例演示:

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




Insert title here


	<%
		String[] fruits = { "apple", "orange", "grape", "banana" };
	    request.setAttribute("fruits",fruits); 
    %>
    
    <%--数组 --%>
    
 		${name}  
	
<% Map userMap = new HashMap(); userMap.put("Tom", "123"); userMap.put("Make", "123"); userMap.put("Lina", "123"); pageContext.setAttribute("userMap", userMap); %> <%--map集合 --%> ${entry.key}   ${entry.value}
<% List colorsList=new ArrayList(); colorsList.add("red"); colorsList.add("yellow"); colorsList.add("blue"); colorsList.add("green"); colorsList.add("black"); pageContext.setAttribute("colorsList", colorsList); %> <%--list集合,同时测试begin,end和step --%> ${color} 

浏览器窗口中显示了colorsList集合中的yellow和green两个元素,只显示这两个元素的原因是,在使用标签迭代List集合时,指定了迭代的起始索引为1,当迭代集合时首先会输出yellow元素,由于在标签中指定了步长为2,并且指定了迭代的结束索引为3,因此,还会输出集合中的green元素,其他的元素不会再输出。

c:forEach varStatus 属性

  • current: 当前这次迭代的(集合中的)项
  • index: 当前这次迭代从 0 开始的迭代索引
  • count: 当前这次迭代从 1 开始的迭代计数
  • first: 用来表明当前这轮迭代是否为第一次迭代的标志
  • last: 用来表明当前这轮迭代是否为最后一次迭代的标志
  • begin: 属性值
  • end: 属性值
  • step: 属性值
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




Insert title here


	<%
		List userList = new ArrayList();
		userList.add("Tom");
		userList.add("Make");
		userList.add("Lina");
		userList.add("jack");
		userList.add("black");
	%>
	
			
序号 是否为第一个元素 是否为最后一个元素 元素的迭代索引 元素的值
${status.count} ${status.first} ${status.last} ${status.index} ${name}

JSTL(标准标签库)_第5张图片

你可能感兴趣的:(servlet)