JSTL
JSTL( JSP Standard Tag Library ) 被称为JSP标准标签库。
开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。
使用方式
需先下载jar包
<!-- prefix属性用于指定库前缀 -->
<!-- uri属性用于指定库的标识 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
常用核心标签
输出标签
<c:out value="HelloWord!"></c:out>
设置标签
<c:set var="name" value="zhangfei" scope="page"></c:set>
<c:out value="${name}"></c:out><br>
<jsp:useBean id="person" class="com.szx.demo01.model.Person" scope="page"></jsp:useBean>
<s:set property="name" value="guanyu" target="${person}"></s:set>
<s:set property="age" value="30" target="${person}"></s:set>
<c:out value="${person.name}"></c:out><br>
<c:out value="${person.age}"></c:out>
删除标签
<c:set var="name" value="zhangfei" scope="page"></c:set>
<c:out value="${name}"></c:out><br>
<c:remove var="name"></c:remove>
<c:out value="${name}" default="无"></c:out><br>
单条件判断标签
<c:set var="age" value="15"></c:set>
<c:out value="${age}"></c:out><br>
<c:if test="${age >= 18}">
<c:out value="已成年!"></c:out>
</c:if>
多条件判断标签
<c:set var="score" value="50" scope="page"></c:set>
<c:out value="${score}"></c:out><br>
<c:choose>
<c:when test="${score > 60}">
<c:out value="及格!"></c:out>
</c:when>
<c:when test="${score == 60}">
<c:out value="60万岁!"></c:out>
</c:when>
<c:otherwise>
<c:out value="明年我来祭拜你!"></c:out>
</c:otherwise>
</c:choose>
循环标签
<%
String[] strings = {"11","22","33","44"};
pageContext.setAttribute("strings",strings);
%>
<c:forEach var="string" items="${strings}">
<c:out value="${string}"></c:out>
</c:forEach>
<br>
<c:forEach var="string" items="${strings}" step="2">
<c:out value="${string}"></c:out>
</c:forEach>
<br>
<c:forEach var="string" items="${strings}" begin="1" end="3">
<c:out value="${string}"></c:out>
</c:forEach>
常用函数标签
<%@ taglib prefix=“fn” uri=“http://java.sun.com/jsp/jstl/functions” %>
<%
pageContext.setAttribute("var","HelloWord!");
%>
${var}<br>
${fn:contains(var,"Hello")}<br>
${fn:toUpperCase(var)}<br>
${fn:toLowerCase(var)}<br>
常用格式化标签
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>
<%
Date date = new Date();
pageContext.setAttribute("date",date);
%>
${date}<br>
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate><br>
自定义标签
编写标签类继承SimpleTagSupport类或TagSupport类并重写doTag方法或doStartTag方法
public class HelloTag extends SimpleTagSupport {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void doTag() throws JspException, IOException {
//获取输出流
JspWriter out = this.getJspContext().getOut();
out.write("自定义标签!" + name);
out.close();
}
}
<?xml version="1.0" encoding="ISO-8859-1"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<tlib-version>1.0</tlib-version>
<short-name>my</short-name>
<uri>http://mycompany.com</uri>
<!-- Invoke 'Generate' action to add tags or functions -->
<tag>
<name>hello</name>
<tag-class>com.szx.demo01.tag.HelloTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>name</name>
<required>true</required>
</attribute>
</tag>
</taglib>
<%@ taglib prefix="my" uri="http://mycompany.com" %>
<my:hello name="zhangfei"/>