JSTL
- 概念:
(JSTL)JavaServerPage Standard Tag Library
:JSP标准标签库。 - 是开源的JSP标准标签,由Apache组织的Jakarta小组来维护的,版本为
JSTL1.2
- 需要下载两个外部的jar包:
jstl.jar
、standard.jar
【网盘链接:https://pan.baidu.com/s/1LhWm2Ezm9FeeN8l4Fe83TQ
提取码:1111 】 - 大体上提供三个包:核心(流程控制)、函数(处理String)、格式化(Date Time)。
使用JSTL来代替之前的Java。步骤如下:
1.将两个.jar
文件导入项目,可以在工程内web
文件夹的WEB-INF
文件夹内创建自己的文件夹lib
,也可以直接将两个jar
文件复制粘贴到tomcat
中的lib
文件夹。
2.启动idea编辑器:创建一个新的web工程,设置新导入的jstl
包关联。3. 创建一个新的JSP:JSP中描述一个头信息,目的是为了告知JSP有新的标签可以用。
<%@ taglib uri="http://java.sun.com/jsp/jstl/xxx" prefix=" "%>
『设置jstl包关联』具体操作如下:
核心标签
- 导包:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- 标签:
1.<c:out value=" "></c:out>
表示输出语句。可以写字符串,可以写表达式语言。
2.<c:if test=""></c:if>
表示判断语句,注意没有else,可写表达式语言。
3.下列类似于Java里面的switch case语句。
<c:choose>
<c:when>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
4.<c:forEach></c:forEach>
有几个属性:begin
end
step
varStatus(是一个对象,有个index属性索引)
。属性 var
表示变量,items
表示遍历循环的元素。使用该元素遍历的时候,只能遍历:数组、List集合、Set集合、Iterator、Enumeration。比如:<c:forEach var="xxx" items="${requestScope.Name}">
${xxx}
</c:forEach>
如果是map集合:<c:forEach var="key" item="${requestScope.map.keySet()}">
${requestScope.map.key}
5. <c:forTokens var="" items="" delims=""></c:forTokens>
表示根据什么拆分,类似于String
的split
方法。属性表示items
表示被拆分的信息。delims
表示按照什么拆分。var
表示变量。
JSTL函数标签库
- 导包:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
- 作用:用来处理字符串。可以理解为是以前的Java中String类常用的方法。
- 怎么使用:需要在JSP上进行描述。
- 通常在业务层已经处理掉了字符的所有信息,通常不怎么使用。
- 写法与核心标签不太一样。
${fn:xxx()}
JSTL格式化标签库
- 导包:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
- 用来处理日期,实现格式化。可以理解为是以前的Date类型,SimpleDateFormat。
- 在JSP内进行描述。
- 写法与之前的核心标签一样:
<fmt:xxx>
<fmt:formatDate value="${requestScope.date}" pattern="yyyy-MM-dd kk:mm:ss"></fmt:formatDate>
JSTL自定义
- 深入研究一下JSTL底层实现
- 目前所见的后缀名有
.txt
、xml
、tld(类似于xml,用来描述xml的)
、.properties
、html
、css
、js
- 分两种:自定义函数${fn:xxx{}}、自定义标签<x:xxx>。
- JSP可以使用标签,自定义函数
1.自己描述一个类
2.类中描述自己的方法:方法必须是静态的,方法通常有返回值。
3.配置一个“说明书”—>xxx.tld。在当前工程下web文件夹中的WEB-INF。
1)先描述两个重要的东西:uri、short-name
<tlib-version>1.0</tlib-version> <short-name>myFn</short-name> <uri>http://www.duyiedu.com</uri>
<function> <name>add</name> <function-class>myfunctions.MyFunctions</function-class> <function-signature>int add(int,int)</function-signature> </function>
4.在JSP中声明头信息
<%@ taglib uri="" prefix=""%>
${myFn:add()}
- JSP可以使用标签,自定义标签
每一个标签都是一个单独的类。
1.创建一个类(用来描述一个标签)—实现一个Tag接口,重写 方法。
2.细致的看一下这些方法:
两组对应的get/set,自己补全,并添加响应的私有属性。
还有一个单独的release方法,回收对象。
doStartTag
doEndTag
3.在两个方法内添加自己的逻辑。
4.描述一个“说明书”:
先描述uri和short-name
<tlib-version>1.0</tlib-version> <short-name>myTag</short-name> <uri>http://www.muzige.com</uri>
在描述标签及标签内部的属性
<tag> <name>out</name> <tag-class>mytag.MyOut</tag-class> <body-content>JSP</body-content> <attribute> <name>value</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag>
5.创建JSP,声明头信息。
留言:如果对你有帮助,给博主点个免费的赞吧 ~ 创作不易,感谢支持!