JSTL学习总结

一、JSTL简介及环境搭建

jstl是java中的一个定制标记库集, jstl实现了jsp页面中代码复用,提高jsp可读性

导入jstl jar包

JSTL学习总结

二、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="&ltout&gt 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>
上一篇:java中JSP的演变及EL&JSTL的学习


下一篇:JSTL标签库