JSP标签 —— JSTL标签库 知识详解 学习笔记
本文查阅方法:
1、查阅目录 —— 查阅本文目录,确定想要查阅的目录标题
2、快捷“查找” —— 在当前浏览器页面,按键 “Ctrl+F” 按键组合,开启浏览器的查找功能,
在查找搜索框中 输入需要查阅的 目录标题,便可以直接到达 标题内容 的位置。
3、学习小结 —— 文中的学习小结内容,是笔者在学习之后总结出的,开发时可直接参考其进行应用开发的内容, 进一步加快了本文的查阅 速度。(水平有限,仅供参考。)
本文目录
学习小结
1、JSTL标签库 的五个子标签库
2、JSTL标签库-- <c:out>标签
3、JSTL标签库-- <c:set>标签
4、JSTL标签库-- <c:remove>标签
5、JSTL标签库-- <c:catch>标签
6、JSTL标签库-- <c:if>标签
7、JSTL标签库-- <c:choose>标签
8、JSTL标签库-- <c:forEach>标签
9、JSTL标签库-- <c:param>标签
10、JSTL标签库-- <c:url>标签 【重点学习】
11、JSTL标签库-- <c:redirect>标签
12、JSTL标签库-- <c:forTokens>标签
13、JSTL标签库综合 Demo样例
学习小结
(1)<c:out>标签
<c:out value="" [escapeXml="true" default="default value"]/>
(2)<c:set>标签
<c:set value="" {var="" scope="session" | target="对象/map名称" property="属性名/键值" }/>
(3)<c:remove>标签
<c:remove var="varName" [scope="{page|request|session|application}"] />
(4)<c:catch>标签
<c:catch [var="varName"]>nested actions</c:catch>
(5)<c:if>标签
<c:if test="" [ var="varName" scope="{page|request|session|application}"] />
(6)<c:choose>标签
<c:choose>
<c:when test="${count == 0}">
对不起,没有符合您要求的记录。
</c:when>
<c:otherwise>
符合您要求的记录共有${count}条.
</c:otherwise>
</c:choose>
(7)<c:forEach>标签
<c:forEach var="" items="" [ varstatus="" begin="" end="" step="" ]> </c:forEach>
(8)<c:param>标签
<c:param name="name" value="value" />
(9)<c:url>标签 【重点学习】
<c:url var="index" value="/index.jsp">
<c:param name="name" value="中国"></c:param>
</c:url>
<a href='${index }'>点点</a>
生成的html源码:<a href='/day11/index.jsp?name=%e4%b8%ad%e5%9b%bd'>点点</a>
(10)<c:redirect>标签
<c:redirect url="目标URL地址" [context="其他Web应用的名称"] />
(11)<c:forTokens>标签
<c:forTokens items="要分隔的字符串" delims="分隔符" var="分隔出的每份字符串临时变量名" scope=""指定域 > </c:forTokens>
1、JSTL标签库 的五个子标签库
(1) 核心标签库
(2) 国际化标签
(3) 数据库标签 (有违分层开发原则,本文不做讲解)
(4) XML标签(有违分层开发原则,本文不做讲解 )
(5) JSTL函数(EL函数)
2、JSTL标签库-- <c:out>标签
<c:out> 标签用于输出一段文本内容到pageContext对象当前保存的“out”对象中。(浏览器)
<c:out value="" [escapeXml="true" default="default value"]/>
3、JSTL标签库-- <c:set>标签
<c:set>标签用于把某一个对象存在指定的域范围内,或者设置Web域中的java.util.Map类型的属性对象或JavaBean类型的属性对象的属性。
<c:set value="" {var="" scope="session" | target="对象/map名称" property="属性名/键值" }/>
4、JSTL标签库-- <c:remove>标签
<c:remove>标签用于删除各种Web域中的属性。
其语法格式如下:
<c:remove var="varName" [scope="{page|request|session|application}"] />
5、JSTL标签库-- <c:catch>标签
<c:catch>标签用于捕获嵌套在标签体中的内容抛出的异常,其语法格式如下:
<c:catch [var="varName"]>nested actions</c:catch>
var属性用于标识<c:catch>标签捕获的异常对象,它将保存在page这个Web域中。
Demo样例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=gb2312" %>
<c:catch var="myex“ scope=“page”>
<%
10/0;
%>
</c:catch>
异常:<c:out value="${myex}" /> ${myex}<br />
异常 myex.getMessage:<c:out value="${myex.message}" /><br />
异常 myex.getCause:<c:out value="${myex.cause}" /><br />
异常 myex.getStackTrace:<c:out value="${myex.stackTrace}" />
6、JSTL标签库-- <c:if>标签
<c:if test=“”>标签可以构造简单的“if-then”结构的条件表达式
<c:if test="" [ var="varName" scope="{page|request|session|application}"] />
7、JSTL标签库-- <c:choose>标签
<c:choose>标签用于指定多个条件选择的组合边界,它必须与<c:when>和<c:otherwise>标签一起使用。使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。相对于多个<c:if test=""></c:if> 标签的组合应用,可以提升效率:有一个符合条件,其他的就不再判断。
Demo样例:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=gb2312" %>
<c:set value="${param.count}" var="count“ /> pageContext(count,2)
<c:choose>
<c:when test="${count == 0}">
对不起,没有符合您要求的记录。
</c:when>
<c:otherwise>
符合您要求的记录共有${count}条.
</c:otherwise>
</c:choose>
8、JSTL标签库-- <c:forEach>标签
<c:forEach>标签用于对一个集合对象中的元素进行循环迭代操作,或者按指定的次数重复迭代执行标签体中的内容。
<c:forEach var="" items="" [ varstatus="" begin="" end="" step="" ]> </c:forEach>
9、JSTL标签库-- <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:param name="name" value="value" />
10、JSTL标签库-- <c:url>标签 【重点学习】
<c:url>标签用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。URL重写就是将会话标识号以参数形式附加在URL地址后面 。
此外,还可添加<c:param /> 为URL地址 添加参数,若是中文参数值,还会自动 进行URL编码。
Demo: <c:url var="index" value="/index.jsp">
<c:param name="name" value="中国"></c:param>
</c:url>
<a href='${index }'>点点</a>
生成的html源码:<a href='/day11/index.jsp?name=%e4%b8%ad%e5%9b%bd'>点点</a>
11、JSTL标签库-- <c:redirect>标签
<c:redirect>标签用于实现请求重定向
<c:redirect url="目标URL地址" [context="其他Web应用的名称"] />
12、JSTL标签库-- <c:forTokens>标签
<c:forTokens>标签用于实现字符串的分隔
<c:forTokens items="要分隔的字符串" delims="分隔符" var="分隔出的每份字符串临时变量名" scope=""指定域 > </c:forToke
13、JSTL标签库综合 Demo样例
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="cn.itcast.domain.Person"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>测试jstl</title>
</head>
<body>
<br/>-------------------c:out---------------------------<br/>
<%
request.setAttribute("data","bbbb");
%>
<c:out value="${data}" default="aaaaa" escapeXml="true"></c:out>
<br/>-------------------c:set可以操给各个域 javabean Map集合---------------------------<br/>
<c:set var="data" value="xxx" scope="page"/>
${data }
<%
Map map = new HashMap();
request.setAttribute("map",map);
%>
<c:set property="dd" value="xxx" target="${map}"/>
${map.dd }
<%
Person p = new Person();
request.setAttribute("p",p);
%>
<c:set property="name" value="uuuu" target="${p}"/>
${p.name }
<br/>-------------------c:catch---------------------------<br/>
<c:catch var="myex">
<%
int x = 1/0;
%>
</c:catch>
${myex.message}
<br/>-------------------c:if---------------------------<br/>
<c:if var="aaa" test="${user==null}" scope="page">
aaaa
</c:if>
${aaa }
<br/>-------------------c:foreach---------------------------<br/>
<%
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("dddd");
request.setAttribute("list",list);
%>
<c:forEach var="str" items="${list}">
${str }
</c:forEach>
<br/>
<c:forEach var="num" begin="1" end="9" step="1">
${num }
</c:forEach>
<br/>-------------------c:foreach实现表格间色显示---------------------------<br/>
<%
list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("dddd");
list.add("eeee");
list.add("ffff");
list.add("gggg");
list.add("hhhh");
list.add("kkkkk");
request.setAttribute("list",list);
%>
<%--${status }获取到了一个对象,这个对象记住了当前是第几次迭代 --%>
<style>
.odd{background-color: #FF99FF;}
.even{background-color: #FF6633;}
tr:hover{background-color: #0000FF;}
</style>
<table border="1" width="20%">
<c:forEach var="str" items="${list}" varStatus="status">
<tr class="${status.count%2==0?'even':'odd' }">
<td>${str }</td>
</tr>
</c:forEach>
</table>
<br/>-------------------c:url标签---------------------------<br/>
<c:url var="index" value="/index.jsp">
<c:param name="name" value="中国"></c:param>
</c:url>
<a href='${index }'>点点</a>
<br/>-------------------c:url标签---------------------------<br/>
<%
pageContext.setAttribute("data","aa,bb,cc,dd");
%>
<c:forTokens var="ss" items="${data}" delims=",">
${ss }
</c:forTokens>
</body>
</html>
敬请评论
(1)若您觉得本文 有用处 —— 请留言评论,以坚定其他 IT童鞋 阅读本文的信心。
(2)若您觉得本文 没用处 —— 请留言评论,笔者将会改进不足,以便为大家整理更加好用的笔记。