jstl:JavaServer Pages Standard Tag Library
由JCP(Java Community Process)指定标准
提供给 Java Web 开发人员一个标准通用的标签函数库
和 EL 配合来取代传统直接在页面上嵌入 Java 程序(Scripting)的做法,以提高程序可读性、维护性和方便性
JSTL标签库
核心标签库 (core) --- c
国际化标签 fmt
数据库标签 sql --Servlet
XML标签 xml
JSTL函数(EL函数) el
核心标签库 (core) --- c
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:out>标签
<c:set>标签
<c:remove>标签
用于删除各种Web域中的属性。
其语法格式如下:
<c:remove var="varName" [scope="{page|request|session|application}"] />
<c:catch>标签
标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:<c:catch [var="varName"]>nested actions</c:catch>
var属性用于标识<c:catch>标签捕获的异常对象,它将保存在page这个Web域中。
<c:if>标签
<c:choose>标签
<c:choose>标签用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起使用。使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。
<c:forEach>标签
<c:froTokens>标签
<c:param>标签
在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。<c:param>标签可以嵌套在<c:import>、<c:url>或<c:redirect>标签内,为这些标签所使用的URL地址附加参数。
<c:param>标签在为一个URL地址附加参数时,将自动对参数值进行URL编码,例如,如果传递的参数值为“中国”,则将其转换为“%d6%d0%b9%fa”后再附加到URL地址后面,这也就是使用<c:param>标签的最大好处。
<c:url>标签
<c:redirect>标签
由JCP(Java Community Process)指定标准
提供给 Java Web 开发人员一个标准通用的标签函数库
和 EL 配合来取代传统直接在页面上嵌入 Java 程序(Scripting)的做法,以提高程序可读性、维护性和方便性
JSTL标签库
核心标签库 (core) --- c
国际化标签 fmt
数据库标签 sql --Servlet
XML标签 xml
JSTL函数(EL函数) el
核心标签库 (core) --- c
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:out>标签
标签用于输出一段文本内容到pageContext对象当前保存的“out”对象中。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<hr/><h1>html转义输出</h1>
<c:out value="<a href='#'>xxx</a>" escapeXml="true"></c:out>
${fn:escapeXml("<a href='#'>xxx</a>") }
<hr/><h1>输出默认值</h1>
<%
String age = "99";
pageContext.setAttribute("age", age);
%>
<c:out value="${age }" default="100"></c:out>
${empty age ?100 :age }
<hr/><h1>输出变量</h1>
<%
String name = "牛牛";
pageContext.setAttribute("name", name);
%>
<c:out value="${name }"></c:out>
${name }
<hr><h1>输出常量</h1>
<c:out value="itheima1"></c:out>
itheima1
${"itheima1" }
</body>
</html>
<c:set>标签
标签用于把某一个对象存在指定的域范围内,或者设置Web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的 属性。
<%@page import="com.itheima.domain.Person"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<hr/><h1>用来设置javabean属性</h1>
<%
Person p = new Person();
p.setName("天一");
p.setAge(18);
pageContext.setAttribute("p", p);
%>
<c:set target="${p }" property="age" value="19"></c:set>
${p.age }<!-- 19 -->
<hr><h1>用来设置map的属性</h1>
<%
Map<String,String> map = new HashMap<String,String>();
map.put("name","小明");
map.put("age","100");
pageContext.setAttribute("map", map);
%>
<c:set target="${map }" property="age" value="30"></c:set>
${map.age }<!-- 30 -->
<c:set target="${map }" property="sex" value="女"/>
${map.sex }<!-- 女 -->
<hr/><h1>用来将指定的对象存入指定的域中</h1>
<c:set var="sss" scope="page" value="333"></c:set>
${sss }<!-- 333 -->
</body>
</html><c:remove>标签
用于删除各种Web域中的属性。
其语法格式如下:
<c:remove var="varName" [scope="{page|request|session|application}"] />
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<hr><h1>删除域中的属性,如果明确指定域则删除指定域中指定名称的属性,如果不明确指定域则删除所有域中指定名称的属性</h1>
<%
pageContext.setAttribute("name", "周芷若");
request.setAttribute("name", "小明");
session.setAttribute("name", "克林顿");
application.setAttribute("name", "灭绝师太");
%>
<c:remove var="name" scope="page"/>
${name }<!-- 小明 -->
</body>
</html><c:catch>标签
标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:<c:catch [var="varName"]>nested actions</c:catch>
var属性用于标识<c:catch>标签捕获的异常对象,它将保存在page这个Web域中。
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<c:catch var="e">
<%
int i = 1/0;
%>
</c:catch>
${e.message }<!-- / by zero -->
</body>
</html><c:if>标签
<c:if test=“”>标签可以构造简单的“if-then”结构的条件表达
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<%
int i = 0;
if(i>9){
System.out.println("10>9");
}
%>
<c:if test="${10>9 }" var = "flag" scope="page">
10确实大于9
</c:if>
${flag }<!-- true -->
<!--else 就条件取反 -->
<c:if test="${10<=9 }">
你确定吗?
</c:if>
</body>
</html><c:choose>标签
<c:choose>标签用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起使用。使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<c:set scope="page" var="i" value="100"></c:set>
<c:choose>
<c:when test="${i==100 }">
100
</c:when>
<c:when test="${i==90 }">
90
</c:when>
<c:when test="${i==80 }">
80
</c:when>
<c:otherwise>
otherwise
</c:otherwise>
</c:choose>
</body>
</html><c:forEach>标签
标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容。
varstatus 用来存放现在指到之成员的相关信息
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<hr/><h1> 实验:遍历10到100的偶数,如果数字所在的位置是3的倍数,显示成红色</h1>
<c:forEach begin="10" end="100" step="2" var="i" varStatus="status">
<c:if test="${status.first }">
${i }第一个成员
</c:if>
<c:if test="${status.count%3==0 }">
<font color="red">${i }</font>
</c:if>
<c:if test="${status.count%3!=0 }">
<font color="blue">${i }</font>
</c:if>
<!-- status.index 现在指到成员的索引 -->
<%-- <c:if test="${status.index%3==0 }">
<font color="red">${i }</font>
</c:if>
<c:if test="${status.index%3!=0 }">
<font color="blue">${i }</font>
</c:if> --%>
<c:if test="${status.last }">
${i }最后一个成员
</c:if>
</c:forEach>
<hr/><h1>指定的次数重复迭代执行标签体中的内容</h1>
<c:forEach begin="10" end = "20" step="2" var = "i">
${i }
</c:forEach>
<hr/><h1>迭代map中的元素</h1>
<%
Map<String,String> map = new HashMap<String,String>();
map.put("name", "邹七");
map.put("age", "21");
pageContext.setAttribute("map", map);
%>
<c:forEach items="${map }" var="entry">
${entry.key }:${entry.value }
</c:forEach>
<hr/><h1>迭代List中的数据</h1>
<%
List<String> list = new ArrayList<String>();
list.add("xxx");
list.add("yyy");
list.add("zzz");
pageContext.setAttribute("list", list);
%>
<c:forEach items="${list }" var="value">
${value }
</c:forEach>
<hr/><h1>迭代数组中的数据 </h1>
<%
String [] strs = {"aaa","bbb","ccc"};
pageContext.setAttribute("strs", strs);
%>
<c:forEach items="${strs }" var="name">
${name }
</c:forEach>
</body>
</html><c:froTokens>标签
用来浏览一字符串中所有的成员,其成员是由定义符号所分隔的
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<c:forTokens items="www.baidu.com" delims="." var="str" begin="1" end = "3">
${str }<br/>
</c:forTokens>
</body>
</html><c:param>标签
在JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。<c:param>标签可以嵌套在<c:import>、<c:url>或<c:redirect>标签内,为这些标签所使用的URL地址附加参数。
<c:param>标签在为一个URL地址附加参数时,将自动对参数值进行URL编码,例如,如果传递的参数值为“中国”,则将其转换为“%d6%d0%b9%fa”后再附加到URL地址后面,这也就是使用<c:param>标签的最大好处。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<h1>用cparam增加参数的好处:自动进行URL编码转换操作</h1>
<c:redirect url="/index.jsp" context="/Test7">
<c:param name="name" value="张三"></c:param>
<c:param name="age" value="19"></c:param>
</c:redirect>
</body>
</html><c:import>标签
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
befor include
<c:import url="/index.jsp" var="p" scope="page"></c:import>
${p }
after include
<!--
befor include This is my JSP page.
after include
-->
</body>
</html><c:url>标签
用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。URL重写就是将会话标识号以参数形式附加在URL地址后面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<%
String url = "/Test7/index.jsp";
url = response.encodeUrl(url);
pageContext.setAttribute("url", url);
%>
${url }<!--禁用cookie会把seesionid拼接地址后面 /Test7/index.jsp;jsessionid=C8C5FA3967D2C12D31A28A2516351F73 -->
<br/>
<c:url value="/index.jsp" context="/Test7" var="newURL" scope="page"></c:url>
${newURL }<!-- /Test7/index.jsp;jsessionid=C8C5FA3967D2C12D31A28A2516351F73 -->
<br>==================================== <br>
<a href="${pageContext.request.contextPath}/index.jsp">XXX</a>
<a href='<c:url value="/index.jsp" context="${pageContext.request.contextPath}" />'>XXX</a>
</body>
</html><c:redirect>标签
用于实现请求重定向
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<c:redirect url="/index.jsp" context="${pageContext.request.contextPath }"></c:redirect>
</body>
</html>
1793

被折叠的 条评论
为什么被折叠?



