一、JSTL简介及环境搭建
jstl是java中的一个定制标记库集, jstl实现了jsp页面中代码复用,提高jsp可读性
导入jstl jar包
二、EL表达式配合使用JSTL
在jsp首行加入
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
使用c:out标签输入一个常量
输出一个常量:
<c:out value="first"></c:out>
输出简单的运算符:
<c:out value="${1*2}"></c:out>
EL表达式输出变量
<% String username2="null";
session.setAttribute("name2","jessia"); %>
<c:out value="${name1}" default="error"></c:out>
转义字符串:
<!-- 转义字符 escapeXml需要设置成false-->
<c:out value="<out> Label" escapeXml="false"></c:out>
三、JSTL核心标签的使用
- JSTL标签之set标签
var属性是变量名字,用来存储value值;
scope属性用来存储生效范围
<!-- 存值到scope中 -->
<!--法一:-->
<c:set value="today" var="day" scope="session"> </c:set>
<c:out value="${day}"></c:out><br>
<!--法二:-->
<c:set var="day" scope="session">eleven</c:set>
<c:out value="${day}"></c:out>
存值在javaBean中
<c:set target="${person}" property="name" value="zhangsan"></c:set>
<c:out value="${person.name}"></c:out>
<c:set target="${person}" property="age" value="12"></c:set>
<c:out value="${person.age}"></c:out>
<c:set target="${person}" property="address" value="beijing"></c:set>
<c:out value="${person.address}"></c:out>
- JSTL标签之remove标签
<c:set var="firstName" value="lady"></c:set>
<c:remove var="firstName"></c:remove>
<c:set var="secondName" value="wang"></c:set>
<c:out value="${secondName}"></c:out>
- JSTL标签之catch标签
<c:catch var="error">
<c:set target="ss" property="asd"></c:set>
</c:catch>
<c:out value="${error}"></c:out>
- JSTL标签之if标签
<form action="firstDemo.jsp" method="post">
<input type="text" name="score" value="
${param.score}"/>
<input type="submit" value="submit"/>
</form>
<!-- 优秀 -->
<c:if test="${param.score>=90}" var="result" scope="application">
<c:out value="恭喜,您的成绩优秀!"></c:out>
</c:if>
<c:if test="${(param.score>=80)&&(param.score<90)}" var="result" scope="application">
<c:out value="恭喜,您的成绩优秀2!"></c:out>
</c:if>
<c:out value="${applicationScope.resutl}"></c:out>
- JSTL标签之choose-when-otherwise
<c:choose>
<c:when test="${param.score>=90 && param.socre<100}">
<c:out value="您的成绩优秀!"></c:out>
</c:when>
<c:when test="${param.score>=80 && param.score<90}">
<c:out value="您的成绩良好!"></c:out>
</c:when>
<c:otherwise>
<c:out value="输入"></c:out>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${param.score==100}">
<c:out value="太棒了!你是No1"></c:out>
</c:when>
</c:choose>
- JSTL标签之forEach标签
接着导入指令:
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<% List<String> fruits = new ArrayList<String>(); %>
<%
fruits.add("apple");
fruits.add("pear");
fruits.add("orange");
request.setAttribute("fruits",fruits);
%>
<c:forEach var="fruit" items="${fruits}" begin="0" end="1">
<c:out value="${fruit}"></c:out><br>
</c:forEach>
<!-- 部分遍历并指定步长 -->
<c:forEach var="fruit" items="${fruits}" begin="0" end="1" varStatus="fru"><br>
<c:out value="${fruit}"></c:out><br>
<c:out value="index属性值:${fru.index}"></c:out>
<c:out value="count属性值:${fru.count}"></c:out>
<c:out value="first属性值:${fru.first}"></c:out>
<c:out value="last属性值:${fru.last}"></c:out>
</c:forEach>
- JSTL标签之forTocken标签
<c:forTokens items="010-11213" delims="-" var="num">
<c:out value="${num}"></c:out>
</c:forTokens>
- JSTL标签之import标签
<!-- import 标签的用法-->
<c:catch var="error09">
<c:import url="http://www.imooc.com"></c:import>
</c:catch>
<c:out value="${error09}"></c:out>
<c:catch var="error09">
</c:catch>
<c:out value="${error09}"></c:out>
<!-- 导入相对路径 -->
<c:catch var="error08">
<c:import url="" charEncoding="gbk" var="tt" scope="session"> </c:import>
</c:catch>
<c:out value="error08"></c:out>
<c:out value="import标签存储tt字符串内容:${sessionScope.tt}" ></c:out>
<!-- context属性 -->
<c:catch value="error07">
<c:import url="" context="/AnotherWebProject"></c:import>
</c:catch>
<c:out value="error07"></c:out>
- JSTL标签之redirect标签
<!-- redirct标签的用法 -->
<c:redirect url="firstDemo.jsp">
<c:param name="username">Lily</c:param>
<c:param name="password">aaa</c:param>
</c:redirect>
<!-- 取出参数 -->
<c:out value="username是${param.username}"></c:out>
- JSTL标签之url标签
<!-- url标签动态生成url -->
<c:if test="1<3">
<c:set var="partUrl" value="aa"></c:set>
</c:if>
<c:url value="http://localhost:8080/${partUrl}" var="newUrl" scope="session"></c:url>
<a href="${newUrl}">新的url</a>
四、JSTL函数的使用
导入函数
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:out value="你好helloword字符串中是否包含hello$
{fn:contains('helloword','hello') }"></c:out>
<c:out value="你好helloword字符串中是否包含word$
{fn:containsIgnoreCase('Helloword','word')}"></c:out>