JSTL标签和常用函数的使用
使用JSTL标签和函数前先将所需的jar包导入到项目的WEB-INF/lib目录下并创建路径(Build Path)
使用JSTL标签和函数需要先在jsp页面头部中导入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
c:out标签的使用
<h2>c:out标签的使用</h2>
<p>--------------------------------------</p>
<h4>输出常量:</h4>
<!-- value表示输出的变量或值 -->
<c:out value="现在输出的是常量"></c:out><br>
<h4>输出变量:</h4>
<% request.setAttribute("Variable", "Variable"); %>
<c:out value="${Variable}"></c:out><br>
<h4>当变量不存在的时候输出变量:</h4>
<!-- default表示value无效时所输出的值 -->
<c:out value="${Variable1}" default="变量不存在"></c:out><br>
<h4>设置输出转义后的字符需要escapeXml属性值设置为false:</h4>
<c:out value="< out标签 >" escapeXml="false"></c:out>
<p>--------------------------------------</p>
c:set标签的使用
person为jsp的useBean标签获取的JavaBean中的Person对象(此处已省略)
<h2>c:set标签的使用</h2>
<p>--------------------------------------</p>
<h4>存值到scope中</h4>
<!-- value是所要存的值,var是存值的名,scope是存值的范围 -->
<!-- value值可以写在标签里或者一对标签中间 -->
<c:set value="name1" var="name1" scope="request"></c:set>
<c:out value="${name1}"></c:out><br>
<c:set var="name2" scope="request">name2</c:set>
<c:out value="${name2}"></c:out><br>
<h4>通过set标签向JavaBean中person赋值</h4>
<!-- target为目标对象,property为属性 -->
<c:set target="${person}" property="name" value="张三"></c:set>
<c:set target="${person}" property="age">28</c:set>
<c:set target="${person}" property="add">湖北工业大学</c:set>
<!-- 输出person对象的属性 -->
<!-- EL表达式会根据name去User类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀,
一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值 -->
<c:out value="${person.name}"></c:out>
<c:out value="${person.age}"></c:out>
<c:out value="${person.add}"></c:out>
<p>--------------------------------------</p>
c:remove标签的使用
<h2>c:remove标签的使用</h2>
<p>--------------------------------------</p>
<c:set var="firstName" value="理发师Tony"></c:set>
<c:out value="${firstName}"></c:out><br>
<!-- 移除变量名为var的值 -->
<c:remove var="firstName"/>
<c:out value="${firstName}" default="理发师Tony已移除!"></c:out>
<p>--------------------------------------</p>
c:catch标签的使用
<h2>c:catch标签的使用</h2>
<p>--------------------------------------</p>
<!-- 如果catch里的语句有问题将不执行catch里面的语句并将错误信息保存在var中 -->
<c:catch var="error">
下面的一条语句是随便写的<br>
<c:set target="aa" property="bb">sadsasa</c:set>
</c:catch>
错误信息为:
<c:out value="${error}"></c:out>
<p>--------------------------------------</p>
c:if标签的使用
<h2>c:if标签的使用</h2>
<p>--------------------------------------</p>
<!-- test属性用于存放判断的条件,一般使用EL表达式来编写 -->
<!-- var指定名称用来存放判断的结果类型为true或false -->
<!-- scope用来存放var属性存放的范围 -->
<form action="index.jsp" method="post">
请输入您的成绩:<input type="text" name="score01" value="${param.score01}">
<input type="submit">
</form>
<!-- 从param中取出名为score01的值进行判断 -->
<c:if test="${param.score01 >= 90}" var="result" scope="application">
<c:out value="恭喜,您的成绩是优秀"></c:out>
</c:if>
<c:out value="${result}"></c:out>
<c:out value="${applicationScope.result}"></c:out>
<p>--------------------------------------</p>
c:choose-when-otherwise标签的使用
<h2>c:choose-when-otherwise标签的使用</h2>
<p>--------------------------------------</p>
<form action="index.jsp" method="post">
请输入您的成绩:<input type="text" name="score02" value="${param.score02}">
<input type="submit">
</form>
<!-- test表示判断语句 -->
<!-- otherwise可写可不写 -->
<c:choose>
<c:when test="${param.score02 >= 90 && param.score02 <=100}">
<c:out value="优秀"></c:out>
</c:when>
<c:when test="${param.score02 >= 80 && param.score02 <90}">
<c:out value="良好"></c:out>
</c:when>
<c:when test="${param.score02 >= 70 && param.score02 <80}">
<c:out value="中等"></c:out>
</c:when>
<c:when test="${param.score02 >= 60 && param.score02 <70}">
<c:out value="及格"></c:out>
</c:when>
<c:when test="${param.score02 >= 0 && param.score02 <60}">
<c:out value="不及格"></c:out>
</c:when>
<c:otherwise>
<c:out value="您的输入有问题"></c:out>
</c:otherwise>
</c:choose>
<p>--------------------------------------</p>
c:forEach标签的使用
<h2>c:forEach标签的使用</h2>
<p>--------------------------------------</p>
<!-- var设定变量名用于存储从集合中取出元素 -->
<!-- items指定要遍历的集合(必须无默认值) -->
<!-- begin、end用于指定遍历的起始位置和终止位置(有默认) -->
<!-- step指定循环步长(有默认) -->
<%
List<String> fruits = new ArrayList<String>();
fruits.add("apple");
fruits.add("orange");
fruits.add("pear");
fruits.add("watermelon");
fruits.add("banana");
fruits.add("grape");
request.setAttribute("fruits", fruits);
%>
<!-- forEach标签的用法 -->
<!-- 用法一:全部遍历 -->
<c:forEach var="fruit" items="${fruits}">
<c:out value="${fruit}"></c:out><br>
</c:forEach>
<c:out value="==========================="></c:out><br>
<!-- 用法二:部分遍历 -->
<c:forEach var="fruit" items="${fruits}" begin="1" end="4">
<c:out value="${fruit}"></c:out><br>
</c:forEach>
<c:out value="==========================="></c:out><br>
<!-- 用法三:部分遍历并指定步长 -->
<c:forEach var="fruit" items="${fruits}" begin="1" end="4" step="2">
<c:out value="${fruit}"></c:out><br>
</c:forEach>
<c:out value="==========================="></c:out><br>
<!-- 用法四:部分遍历并输出元素状态 -->
<c:forEach var="fruit" items="${fruits}" begin="2" end="4" varStatus="fru">
<c:out value="${fruit}的四个属性值"></c:out><br>
<c:out value="index属性:${fru.index}"></c:out><br>
<c:out value="first属性:${fru.first}"></c:out><br>
<c:out value="last属性:${fru.last}"></c:out><br>
<c:out value="count属性:${fru.count}"></c:out><br>
<c:out value="-------------------------"></c:out><br>
</c:forEach>
<c:out value="==========================="></c:out><br>
<p>--------------------------------------</p>
c:forTocken标签的使用
<h2>c:forTocken标签的使用</h2>
<p>--------------------------------------</p>
<!-- c:forTocken的使用方法一 -->
<!-- items指定被迭代的字符串 -->
<!-- delims指定使用的分隔符 -->
<!-- var指定用来存放遍历到的成员 -->
<!-- begin指定遍历的开始位置(int型从取值0开始) -->
<!-- end指定遍历结束的位置(int型,默认集合中最后一个元素) -->
<!-- step为遍历的步长(大于0的整型) -->
<!-- varStatus通过index、count、first、last几个状态值描述begin和end子集中的元素的状态 -->
<c:forTokens items="010-8888888-123" delims="-" var="num">
<c:out value="${num}"></c:out><br>
</c:forTokens>
<c:out value="==============================="></c:out><br>
<!-- c:forTocken的使用方法二 -->
<c:forTokens items="010-1234567-321-2132-54645-67876867" delims="-" var="num0" begin="1" end="4">
<c:out value="${num0}"></c:out><br>
</c:forTokens>
<c:out value="==============================="></c:out><br>
<!-- c:forTocken的使用方法三 -->
<c:forTokens items="010-1234567-321-2132-54645-67876867" delims="-" var="num1" step="2">
<c:out value="${num1}"></c:out><br>
</c:forTokens>
<c:out value="==============================="></c:out><br>
<!-- c:forTocken的使用方法四 -->
<c:forTokens items="010-1234567-321-2132-54645-67876867" delims="-" var="num1" step="2" varStatus="n">
<c:out value="num的index属性:${n.index}"></c:out><br>
<c:out value="num的count属性:${n.count}"></c:out><br>
<c:out value="num的first属性:${n.first}"></c:out><br>
<c:out value="num的last属性:${n.last}"></c:out><br>
<c:out value="---------------------------"></c:out><br>
</c:forTokens>
<c:out value="==============================="></c:out><br>
<p>--------------------------------------</p>
c:import标签的使用-网络上的绝对路径已注释
<h2>c:import标签的使用-网络上的绝对路径已注释</h2>
<p>--------------------------------------</p>
<!-- url为被导入资源的URL路径 -->
<!-- context为相同服务器下的其他web工程,必须以"/"开头 -->
<!-- Scope var变量的JSP范围 -->
<!-- charEncoding被导入文件的编码格式 -->
<!-- varReader以Reader类型存储被包含文件内容 -->
<!-- import标签的用法 -->
<!-- 导入网络上的绝对路径 -->
<!-- 网络上的绝对路径可能有变动或修改,所以import标签通常在catch标签里面捕获异常 -->
<%--
<c:catch var="error01">
<c:import url="http://www.baidu.com" charEncoding="utf-8"></c:import>
</c:catch>
<c:out value="${error01}"></c:out><br><br>
--%>
<!-- 导入相对路径 -->
<c:catch var="error02">
<c:import url="NewFile.html" charEncoding="utf-8"></c:import>
</c:catch>
<c:out value="${error02}"></c:out><br><br>
<!-- var及scope相对路径 -->
<c:catch var="error03">
<c:import url="NewFile.html" charEncoding="utf-8" scope="session" var="NewFile"></c:import>
</c:catch>
<c:out value="${error03}"></c:out><br><br>
<c:out value="import标签存储的HTML字符串变量值为:${NewFile}"></c:out>
<!-- context属性的用法 -->
<c:catch var="error04">
<c:import url="/index.html" charEncoding="utf-8" context="/C_outLabel"></c:import>
</c:catch>
<c:out value="${error04}"></c:out><br><br>
<p>--------------------------------------</p>
c:redirect标签的使用–已注释
url的值为重定向的到的页面(可修改)
<h2>c:redirect标签的使用--已注释</h2>
<p>--------------------------------------</p>
<!-- 重定向到redirectPage.jsp -->
<%--
<c:redirect url="redirectPage.jsp">
<c:param name="username">TB</c:param>
</c:redirect>
--%>
<p>--------------------------------------</p>
c:url标签的使用
C_JSTL_LabelAndFunction为项目名(可修改)
urlPage.jsp为跳转的url页面(可修改)
<h2>c:url标签的使用</h2>
<p>--------------------------------------</p>
<c:if test="${5 < 6}">
<c:set var="urlPage">urlPage.jsp</c:set>
</c:if>
<c:url var="url" value="http://localhost:8080/C_JSTL_LabelAndFunction/${urlPage }"></c:url>
<a href="${url }">跳转到url页面!</a>
<p>--------------------------------------</p>
JSTL常用的function的使用
<h2>JSTL常用的function的使用</h2>
<p>--------------------------------------</p>
<c:out value="“你好,Hello World!”字符串是否包含“Hello”子字符串:${fn:contains('你好,Hello World!','Hello') }"></c:out><br>
<c:out value="“你好,Hello World!”字符串是否包含“aaaa”子字符串:${fn:contains('你好,Hello World!','aaaa') }"></c:out><br>
<c:out value="“你好,Hello World!”字符串是否包含“hello”子字符串:${fn:contains('你好,Hello World!','hello') }"></c:out><br>
<c:out value="“你好,Hello World!”字符串是否包含“hello”子字符串:${fn:containsIgnoreCase('你好,Hello World!','hello') }"></c:out><br>
<c:out value="“World”字符串是否在“你好,Hello World!”字符串末尾:${fn:endsWith('你好,Hello World!','World') }"></c:out><br>
<c:out value="“你好”字符串是否在“你好,Hello World!”字符串开头:${fn:startsWith('你好,Hello World!','你好') }"></c:out><br>
<c:out value="“你好,Hello World!”字符串中“llo”子字符串的索引:${fn:indexOf('你好,Hello World!','llo') }"></c:out>
<p>--------------------------------------</p>
其他常用JSTL函数
- fn:length()–返回字符串长度或集合中元素的数量
${fn:length(collection | string)}
- fn:replace()–将字符串中所有指定的子串用另外的字符串替换
${fn:replace(<原始字符串>, <被替换的字符串>, <要替换的字符串>)}
- fn:split()–将一个字符串用指定的分隔符分裂为一个子串数组
${fn:split(<带分隔符的字符串>, <分隔符>)}
- fn:startsWith()–用于确定一个字符串是否以指定的前缀开始
<c:if test="${fn:startsWith(<原始字符串>, <搜索的前缀>)}">
...
</c:if>
这是本人第一次写博客,写得不好请见谅!