文章目录
1. JSTL - Java标准标签库
背景:
- JSP2.0的规范,重要特性之一
- 提供给Java-Web标准的通用标签库,支持EL获取数据
- 取代直接在JSP页面写Java脚本,提高程序的可读性
1.0 特别注意
- 切记标签属性设置的var变量名,只能用EL表达式获取得了变量值,Java脚本获取不了
- 因为Taglib标签:var、value属性的构建是使用PageContext内置对象,而PageContext内置对象只有EL表达式才有
例如下面源码
1.1 分类
1.1.1 核心标签库
Java-Web通用的标签 — 一般使用这个多
通常的引入方式: <%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>
1.1.1.1 代码示例 – 通用标签
// 1. 输出变量 -- value等于null时,则输出default的值
<c:out value="输出的值" default="默认输出值"></c:out>
<% Integer a = 5; %>
<c:out value="<%= a %>" default="不输出任何东西"> </c:out>
---------------------------------------------------------------------------
// 2. 添加、修改四大作用域的属性:page、request、session、application
<c:set var="属性名" value="属性值" scope="作用域"><c:set>
<c:set var="user" value="小明" scope="session"></c:set>
<%= session.getAttribute("user") %>
------------------------------------------------------------------------------
// 3. 删除作用域的属性
<c:remove var="属性名" scope="作用域范围"></c:remove>
<c:remove var="user" scope="session">
------------------------------------------------------------------------------
// 4. 捕获该标签内的子元素异常,但不处理异常
<c:catch var="捕获异常的变量名">
脚本
</c:catch>
<c:catch var="a">
<% int a = 5/0 %>
</c:catch>
<c:if test="${a != null}">
<p>捕获到异常啦
</c:if>
1.1.1.2 代码示例 – 条件标签
// 1. 条件判断
<c:if test="条件判断"></c:if>
<c:if test="true">
<p>这是真哦!</p>
</c:if>
------------------------------------------------------------------------------
// 2. 多条件判断选择、分支选择 -- choose、 otherwise 、when三标签一起用
// 其实就是 if - else if - else if - else语句
<c:choose>
<c:when test="判断语句"> 语句 </c:when>
<c:when test="判断语句"> 语句 </c:when>
<c:when test="判断语句"> 语句 </c:when>
<c: otherwise> 语句 </c:otherwise>
</c:choose>
<% Integer a = 5; %>
<c:choose>
<c:when test="<%= a>5 %>"> 大于5 </c:when>
<c:when test="<%= a>4 %>"> 大于4 </c:when>
<c:otherwise> 小于等于4 </c:otherwise>
</c:choose>
1.1.1.3 代码示例 – 循环迭代标签
// 1. 遍历
<c:forEach var="元素对象" items="<%= 容器对象 %>" >
循环体内语句
</c:forEach>
<% Integer a = {1, 2, 3, 4}; %>
<c:forEach items="<%=a%>" var="number">
${numebr}
你好啊,小老弟<br>
</c:forEach>
------------------------------------------------------------------------------
// 2. 字符串按照分隔符进行遍历
<c:forTokens items="字符串" delims="分隔符" var="当前迭代对象的变量名">
循环遍历体
</c:forTokens>
<% String a = "a|b|c|d|e"
<c:forTokens var="str" items="<%= a %>" delims="|"
<p> ${ str } </p>
<c:forTokens>
1.1.1.4 代码示例 – URL标签
<c:url value="url地址" var="变量名"></c:url>
<c:redirect url="重定向的地址"></c:redirect>
<c:url value="Test.jsp" var="test"></c:url>
<a href="${test}"> 跳转新的页面 </a>
<c:redirect url="${test}"></c:redirect>
1.1.2 I18N标签库
I18N = internationalized( 国际化的 ) — 刚好18个英文字母
已经封装了java.util.*、java.text.* 这两个函数包
作用:JSP页面的本地显示、设置时区、本地敏感数据按本地格式设置等等
代码示例 – formatDate
// 设置地点、跟格式化代码输出
<fmt:setLocale value="zh_CN"/>
<fmt:formatDate value="<%= new Date() %>" pattern="yyyy-MM-dd HH:mm:ss"/>
<fmt:formatDate value="<%= new Date() %>" pattern="yyyy-MM-dd"/>
1.1.3 SQL标签库
现实项目中很少在JSP页面进行操纵数据库,JSP页面只负责显示,不负责逻辑、数据库访问的操作,所以该标签很少用到
作用:用于数据库的访问,其他对它的数据进行操纵
1.1.4 XML标签库
作用:对XML文档的数据进行操作
1.1.5 函数标签库
函数:由EL表达式自定义的一组函数
作用:对字符串的处理函数等等
1.2 自定义标签
知道: Struts2、SpringMVC、JSF等都提供了丰富的自定义标签,
自定义步骤